[ { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "uint8", "name": "decimals_", "type": "uint8" } ], "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": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "mint", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "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" } ]
608060405234801561001057600080fd5b50604051610a90380380610a9083398101604081905261002f91610133565b8282600361003d838261023f565b50600461004a828261023f565b50505061005c8161006460201b60201c565b5050506102fd565b6005805460ff191660ff92909216919091179055565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126100a157600080fd5b81516001600160401b038111156100ba576100ba61007a565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100e8576100e861007a565b60405281815283820160200185101561010057600080fd5b60005b8281101561011f57602081860181015183830182015201610103565b506000918101602001919091529392505050565b60008060006060848603121561014857600080fd5b83516001600160401b0381111561015e57600080fd5b61016a86828701610090565b602086015190945090506001600160401b0381111561018857600080fd5b61019486828701610090565b925050604084015160ff811681146101ab57600080fd5b809150509250925092565b600181811c908216806101ca57607f821691505b6020821081036101ea57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561023a57806000526020600020601f840160051c810160208510156102175750805b601f840160051c820191505b818110156102375760008155600101610223565b50505b505050565b81516001600160401b038111156102585761025861007a565b61026c8161026684546101b6565b846101f0565b6020601f8211600181146102a057600083156102885750848201515b600019600385901b1c1916600184901b178455610237565b600084815260208120601f198516915b828110156102d057878501518255602094850194600190920191016102b0565b50848210156102ee5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6107848061030c6000396000f3fe608060405234801561001057600080fd5b506004361061008e5760003560e01c806306fdde0314610093578063095ea7b3146100b157806318160ddd146100d457806323b872dd146100e6578063313ce567146100f957806340c10f191461010e57806370a082311461012157806395d89b411461014a578063a9059cbb14610152578063dd62ed3e14610165575b600080fd5b61009b610178565b6040516100a89190610598565b60405180910390f35b6100c46100bf366004610602565b61020a565b60405190151581526020016100a8565b6002545b6040519081526020016100a8565b6100c46100f436600461062c565b610224565b60055460405160ff90911681526020016100a8565b6100c461011c366004610602565b610248565b6100d861012f366004610669565b6001600160a01b031660009081526020819052604090205490565b61009b61025d565b6100c4610160366004610602565b61026c565b6100d861017336600461068b565b61027a565b606060038054610187906106be565b80601f01602080910402602001604051908101604052809291908181526020018280546101b3906106be565b80156102005780601f106101d557610100808354040283529160200191610200565b820191906000526020600020905b8154815290600101906020018083116101e357829003601f168201915b5050505050905090565b6000336102188185856102a5565b60019150505b92915050565b6000336102328582856102b7565b61023d858585610313565b506001949350505050565b60006102548383610372565b50600192915050565b606060048054610187906106be565b600033610218818585610313565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102b283838360016103ac565b505050565b60006102c3848461027a565b9050600019811461030d57818110156102fe57828183604051637dc7a0d960e11b81526004016102f5939291906106f8565b60405180910390fd5b61030d848484840360006103ac565b50505050565b6001600160a01b03831661033d576000604051634b637e8f60e11b81526004016102f59190610719565b6001600160a01b03821661036757600060405163ec442f0560e01b81526004016102f59190610719565b6102b2838383610481565b6001600160a01b03821661039c57600060405163ec442f0560e01b81526004016102f59190610719565b6103a860008383610481565b5050565b6001600160a01b0384166103d657600060405163e602df0560e01b81526004016102f59190610719565b6001600160a01b038316610400576000604051634a1406b160e11b81526004016102f59190610719565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561030d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161047391815260200190565b60405180910390a350505050565b6001600160a01b0383166104ac5780600260008282546104a1919061072d565b9091555061050b9050565b6001600160a01b038316600090815260208190526040902054818110156104ec5783818360405163391434e360e21b81526004016102f5939291906106f8565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661052757600280548290039055610546565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161058b91815260200190565b60405180910390a3505050565b602081526000825180602084015260005b818110156105c657602081860181015160408684010152016105a9565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146105fd57600080fd5b919050565b6000806040838503121561061557600080fd5b61061e836105e6565b946020939093013593505050565b60008060006060848603121561064157600080fd5b61064a846105e6565b9250610658602085016105e6565b929592945050506040919091013590565b60006020828403121561067b57600080fd5b610684826105e6565b9392505050565b6000806040838503121561069e57600080fd5b6106a7836105e6565b91506106b5602084016105e6565b90509250929050565b600181811c908216806106d257607f821691505b6020821081036106f257634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b0391909116815260200190565b8082018082111561021e57634e487b7160e01b600052601160045260246000fdfea26469706673582212205c1844364711295347c6777202b682402693b8e94f09ec48968d940d8c2ca3b764736f6c634300081a0033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004574254430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045553444300000000000000000000000000000000000000000000000000000000