[ { "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" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousHolder", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newHolder", "type": "address" } ], "name": "Yoinked", "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": "holder", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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" }, { "inputs": [], "name": "yoink", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
608060405234801561001057600080fd5b5060408051808201909152600d81526c596f696e6b206279204d6f616960981b60208201526000906100429082610125565b50604080518082019091526005815264594f494e4b60d81b602082015260019061006c9082610125565b50600280546001600160a01b031916331790556101e4565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806100ae57607f821691505b6020821081036100ce57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610120576000816000526020600020601f850160051c810160208610156100fd5750805b601f850160051c820191505b8181101561011c57828155600101610109565b5050505b505050565b81516001600160401b0381111561013e5761013e610084565b6101528161014c845461009a565b846100d4565b602080601f831160018114610187576000841561016f5750858301515b600019600386901b1c1916600185901b17855561011c565b600085815260208120601f198616915b828110156101b657888601518255948401946001909101908401610197565b50858210156101d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61077a806101f36000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806370a082311161007157806370a082311461013257806395d89b41146101455780639846cd9e1461014d578063a9059cbb14610155578063dd62ed3e14610168578063e534155d146101a157600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610105578063313ce56714610118575b600080fd5b6100b66101cc565b6040516100c391906105e4565b60405180910390f35b6100df6100da36600461064f565b61025a565b60405190151581526020016100c3565b6100f7600181565b6040519081526020016100c3565b6100df610113366004610679565b610272565b610120600081565b60405160ff90911681526020016100c3565b6100f76101403660046106b5565b610294565b6100b66102bc565b6100df6102c9565b6100df61016336600461064f565b610322565b6100f76101763660046106d7565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6002546101b4906001600160a01b031681565b6040516001600160a01b0390911681526020016100c3565b600080546101d99061070a565b80601f01602080910402602001604051908101604052809291908181526020018280546102059061070a565b80156102525780601f1061022757610100808354040283529160200191610252565b820191906000526020600020905b81548152906001019060200180831161023557829003601f168201915b505050505081565b6000610269338484600161032f565b50600192915050565b600061027f84338461040a565b61028a8484846104a0565b5060019392505050565b6002546000906001600160a01b038381169116146102b35760006102b6565b60015b92915050565b600180546101d99061070a565b6002546000906001600160a01b03166102e4813360016104a0565b60405133906001600160a01b038316907f1b2f6dbb809857368532877ea7bd4e03a2adaed7b0c9224e73614e1366c7dd7c90600090a3600191505090565b60006102693384846104a0565b6001600160a01b03841661035e5760405163e602df0560e01b8152600060048201526024015b60405180910390fd5b6001600160a01b03831661038857604051634a1406b160e11b815260006004820152602401610355565b6001600160a01b038085166000908152600360209081526040808320938716835292905220829055801561040457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103fb91815260200190565b60405180910390a35b50505050565b816001600160a01b0316836001600160a01b03160361042857505050565b6001600160a01b038381166000908152600360209081526040808320938616835292905220546000198114610404578181101561049157604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610355565b6104048484848403600061032f565b6001600160a01b0383166104ca57604051634b637e8f60e11b815260006004820152602401610355565b6001600160a01b0382166104f45760405163ec442f0560e01b815260006004820152602401610355565b6002546001600160a01b0384811691161461053b5760405163391434e360e21b81526001600160a01b03841660048201526000602482015260016044820152606401610355565b6001811461058857826001808311610554576001610556565b825b60405163391434e360e21b81526001600160a01b03909316600484015260248301919091526044820152606401610355565b600280546001600160a01b0319166001600160a01b0384811691821790925560405183815290918516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60006020808352835180602085015260005b81811015610612578581018301518582016040015282016105f6565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461064a57600080fd5b919050565b6000806040838503121561066257600080fd5b61066b83610633565b946020939093013593505050565b60008060006060848603121561068e57600080fd5b61069784610633565b92506106a560208501610633565b9150604084013590509250925092565b6000602082840312156106c757600080fd5b6106d082610633565b9392505050565b600080604083850312156106ea57600080fd5b6106f383610633565b915061070160208401610633565b90509250929050565b600181811c9082168061071e57607f821691505b60208210810361073e57634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220a8c327d65ea4d4a3b01fd36a2e949b878f04f580b747e70c7872dce38d69f78f64736f6c63430008180033