[ { "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": "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": "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": [], "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": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferWithLog", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
608060405234801561000f575f80fd5b506040518060400160405280600981526020017f465245454455524f5600000000000000000000000000000000000000000000008152506040518060400160405280600b81526020017f506176656c204475726f76000000000000000000000000000000000000000000815250816003908161008b91906105dd565b50806004908161009b91906105dd565b5050505f6c35193a1e7376a35c15b400000090506100bf338261010560201b60201c565b5f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506107c1565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610175575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161016c91906106eb565b60405180910390fd5b6101865f838361018a60201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036101da578060025f8282546101ce9190610731565b925050819055506102a8565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610263578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161025a93929190610773565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036102ef578060025f8282540392505081905550610339565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161039691906107a8565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061041e57607f821691505b602082108103610431576104306103da565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026104937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610458565b61049d8683610458565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6104e16104dc6104d7846104b5565b6104be565b6104b5565b9050919050565b5f819050919050565b6104fa836104c7565b61050e610506826104e8565b848454610464565b825550505050565b5f90565b610522610516565b61052d8184846104f1565b505050565b5b81811015610550576105455f8261051a565b600181019050610533565b5050565b601f8211156105955761056681610437565b61056f84610449565b8101602085101561057e578190505b61059261058a85610449565b830182610532565b50505b505050565b5f82821c905092915050565b5f6105b55f198460080261059a565b1980831691505092915050565b5f6105cd83836105a6565b9150826002028217905092915050565b6105e6826103a3565b67ffffffffffffffff8111156105ff576105fe6103ad565b5b6106098254610407565b610614828285610554565b5f60209050601f831160018114610645575f8415610633578287015190505b61063d85826105c2565b8655506106a4565b601f19841661065386610437565b5f5b8281101561067a57848901518255600182019150602085019450602081019050610655565b868310156106975784890151610693601f8916826105a6565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106d5826106ac565b9050919050565b6106e5816106cb565b82525050565b5f6020820190506106fe5f8301846106dc565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61073b826104b5565b9150610746836104b5565b925082820190508082111561075e5761075d610704565b5b92915050565b61076d816104b5565b82525050565b5f6060820190506107865f8301866106dc565b6107936020830185610764565b6107a06040830184610764565b949350505050565b5f6020820190506107bb5f830184610764565b92915050565b611346806107ce5f395ff3fe608060405234801561000f575f80fd5b50600436106100b2575f3560e01c806370a082311161006f57806370a08231146101a05780638da5cb5b146101d057806395d89b41146101ee578063a9059cbb1461020c578063dd62ed3e1461023c578063f2fde38b1461026c576100b2565b806306fdde03146100b6578063095ea7b3146100d457806318160ddd1461010457806323b872dd14610122578063313ce567146101525780633f96b8c114610170575b5f80fd5b6100be610288565b6040516100cb9190610df9565b60405180910390f35b6100ee60048036038101906100e99190610eaa565b610318565b6040516100fb9190610f02565b60405180910390f35b61010c61033a565b6040516101199190610f2a565b60405180910390f35b61013c60048036038101906101379190610f43565b610343565b6040516101499190610f02565b60405180910390f35b61015a610371565b6040516101679190610fae565b60405180910390f35b61018a60048036038101906101859190610eaa565b610379565b6040516101979190610f02565b60405180910390f35b6101ba60048036038101906101b59190610fc7565b6104ad565b6040516101c79190610f2a565b60405180910390f35b6101d86104f2565b6040516101e59190611001565b60405180910390f35b6101f6610517565b6040516102039190610df9565b60405180910390f35b61022660048036038101906102219190610eaa565b6105a7565b6040516102339190610f02565b60405180910390f35b6102566004803603810190610251919061101a565b6105c9565b6040516102639190610f2a565b60405180910390f35b61028660048036038101906102819190610fc7565b61064b565b005b60606003805461029790611085565b80601f01602080910402602001604051908101604052809291908181526020018280546102c390611085565b801561030e5780601f106102e55761010080835404028352916020019161030e565b820191905f5260205f20905b8154815290600101906020018083116102f157829003601f168201915b5050505050905090565b5f80610322610806565b905061032f81858561080d565b600191505092915050565b5f600254905090565b5f8061034d610806565b905061035a85828561081f565b6103658585856108b1565b60019150509392505050565b5f6012905090565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036103e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103df906110ff565b60405180910390fd5b6103f1336104ad565b821115610433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042a90611167565b60405180910390fd5b61043e3384846108b1565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161049b9190610f2a565b60405180910390a36001905092915050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461052690611085565b80601f016020809104026020016040519081016040528092919081815260200182805461055290611085565b801561059d5780601f106105745761010080835404028352916020019161059d565b820191905f5260205f20905b81548152906001019060200180831161058057829003601f168201915b5050505050905090565b5f806105b1610806565b90506105be8185856108b1565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b0906111cf565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073f9061125d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b61081a83838360016109a1565b505050565b5f61082a84846105c9565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108ab578181101561089c578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016108939392919061127b565b60405180910390fd5b6108aa84848484035f6109a1565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610921575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016109189190611001565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610991575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016109889190611001565b60405180910390fd5b61099c838383610b70565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610a11575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610a089190611001565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a81575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610a789190611001565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610b6a578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b619190610f2a565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bc0578060025f828254610bb491906112dd565b92505081905550610c8e565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610c49578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610c409392919061127b565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cd5578060025f8282540392505081905550610d1f565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d7c9190610f2a565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610dcb82610d89565b610dd58185610d93565b9350610de5818560208601610da3565b610dee81610db1565b840191505092915050565b5f6020820190508181035f830152610e118184610dc1565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610e4682610e1d565b9050919050565b610e5681610e3c565b8114610e60575f80fd5b50565b5f81359050610e7181610e4d565b92915050565b5f819050919050565b610e8981610e77565b8114610e93575f80fd5b50565b5f81359050610ea481610e80565b92915050565b5f8060408385031215610ec057610ebf610e19565b5b5f610ecd85828601610e63565b9250506020610ede85828601610e96565b9150509250929050565b5f8115159050919050565b610efc81610ee8565b82525050565b5f602082019050610f155f830184610ef3565b92915050565b610f2481610e77565b82525050565b5f602082019050610f3d5f830184610f1b565b92915050565b5f805f60608486031215610f5a57610f59610e19565b5b5f610f6786828701610e63565b9350506020610f7886828701610e63565b9250506040610f8986828701610e96565b9150509250925092565b5f60ff82169050919050565b610fa881610f93565b82525050565b5f602082019050610fc15f830184610f9f565b92915050565b5f60208284031215610fdc57610fdb610e19565b5b5f610fe984828501610e63565b91505092915050565b610ffb81610e3c565b82525050565b5f6020820190506110145f830184610ff2565b92915050565b5f80604083850312156110305761102f610e19565b5b5f61103d85828601610e63565b925050602061104e85828601610e63565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061109c57607f821691505b6020821081036110af576110ae611058565b5b50919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373000000005f82015250565b5f6110e9601c83610d93565b91506110f4826110b5565b602082019050919050565b5f6020820190508181035f830152611116816110dd565b9050919050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f611151601483610d93565b915061115c8261111d565b602082019050919050565b5f6020820190508181035f83015261117e81611145565b9050919050565b7f4e6577206f776e65722063616e6e6f74206265207a65726f20616464726573735f82015250565b5f6111b9602083610d93565b91506111c482611185565b602082019050919050565b5f6020820190508181035f8301526111e6816111ad565b9050919050565b7f4f6e6c79207468652063757272656e74206f776e65722063616e207472616e735f8201527f666572206f776e65727368697000000000000000000000000000000000000000602082015250565b5f611247602d83610d93565b9150611252826111ed565b604082019050919050565b5f6020820190508181035f8301526112748161123b565b9050919050565b5f60608201905061128e5f830186610ff2565b61129b6020830185610f1b565b6112a86040830184610f1b565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6112e782610e77565b91506112f283610e77565b925082820190508082111561130a576113096112b0565b5b9291505056fea26469706673582212201218a91cf37c8fdb1fa9fb40e9a38f15a7f4497d18f72a2273047bab10201c4064736f6c634300081a0033