UNPKG

aibc

Version:
680 lines 1.08 MB
{ "contractName": "ERC20", "abi": [ { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" } ], "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": "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": "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": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": "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": "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": "amount", "type": "uint256" } ], "name": "approve", "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": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"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\":\"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\":\"amount\",\"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\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"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\":\"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\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin guidelines: functions revert instead of returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. The defaut value of {decimals} is 18. To select a different value for {decimals} you should overload it. All two of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/F/Assignment/aibcccc/AIBC/contracts/CustomERC20.sol\":\"ERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/F/Assignment/aibcccc/AIBC/contracts/CustomERC20.sol\":{\"keccak256\":\"0x590becc03240efd5ad6cafab532e50b0575c241b8608362f4acd3f9a4b7e2ebb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5d6fcb701f45883c773903ca07c3bee795e3b054fa47b82990d803e1755ee33\",\"dweb:/ipfs/QmQcN95LCMhwdiHFUw56r2yEv3KJoVoLk2X5TSE9gG6kcg\"]}},\"version\":1}", "bytecode": "0x60806040523480156200001157600080fd5b50604051620016c3380380620016c3833981810160405281019062000037919062000193565b81600390805190602001906200004f92919062000071565b5080600490805190602001906200006892919062000071565b50505062000337565b8280546200007f90620002a3565b90600052602060002090601f016020900481019282620000a35760008555620000ef565b82601f10620000be57805160ff1916838001178555620000ef565b82800160010185558215620000ef579182015b82811115620000ee578251825591602001919060010190620000d1565b5b509050620000fe919062000102565b5090565b5b808211156200011d57600081600090555060010162000103565b5090565b60006200013862000132846200023a565b62000206565b9050828152602081018484840111156200015157600080fd5b6200015e8482856200026d565b509392505050565b600082601f8301126200017857600080fd5b81516200018a84826020860162000121565b91505092915050565b60008060408385031215620001a757600080fd5b600083015167ffffffffffffffff811115620001c257600080fd5b620001d08582860162000166565b925050602083015167ffffffffffffffff811115620001ee57600080fd5b620001fc8582860162000166565b9150509250929050565b6000604051905081810181811067ffffffffffffffff8211171562000230576200022f62000308565b5b8060405250919050565b600067ffffffffffffffff82111562000258576200025762000308565b5b601f19601f8301169050602081019050919050565b60005b838110156200028d57808201518184015260208101905062000270565b838111156200029d576000848401525b50505050565b60006002820490506001821680620002bc57607f821691505b60208210811415620002d357620002d2620002d9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61137c80620003476000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190611011565b60405180910390f35b6100e660048036038101906100e19190610c8a565b610308565b6040516100f39190610ff6565b60405180910390f35b610104610326565b6040516101119190611113565b60405180910390f35b610134600480360381019061012f9190610c3b565b610330565b6040516101419190610ff6565b60405180910390f35b610152610431565b60405161015f919061112e565b60405180910390f35b610182600480360381019061017d9190610c8a565b610436565b60405161018f9190610ff6565b60405180910390f35b6101b260048036038101906101ad9190610bd6565b6104e2565b6040516101bf9190611113565b60405180910390f35b6101d061052a565b6040516101dd9190611011565b60405180910390f35b61020060048036038101906101fb9190610c8a565b6105bc565b60405161020d9190610ff6565b60405180910390f35b610230600480360381019061022b9190610c8a565b6106b0565b60405161023d9190610ff6565b60405180910390f35b610260600480360381019061025b9190610bff565b6106ce565b60405161026d9190611113565b60405180910390f35b60606003805461028590611277565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190611277565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b600061031c610315610755565b848461075d565b6001905092915050565b6000600254905090565b600061033d848484610928565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610388610755565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ff90611093565b60405180910390fd5b61042585610414610755565b858461042091906111bb565b61075d565b60019150509392505050565b600090565b60006104d8610443610755565b848460016000610451610755565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104d39190611165565b61075d565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461053990611277565b80601f016020809104026020016040519081016040528092919081815260200182805461056590611277565b80156105b25780601f10610587576101008083540402835291602001916105b2565b820191906000526020600020905b81548152906001019060200180831161059557829003601f168201915b5050505050905090565b600080600160006105cb610755565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067f906110f3565b60405180910390fd5b6106a5610693610755565b8585846106a091906111bb565b61075d565b600191505092915050565b60006106c46106bd610755565b8484610928565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c4906110d3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561083d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083490611053565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161091b9190611113565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098f906110b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ff90611033565b60405180910390fd5b610a13838383610ba7565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9090611073565b60405180910390fd5b8181610aa591906111bb565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b359190611165565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b999190611113565b60405180910390a350505050565b505050565b600081359050610bbb81611318565b92915050565b600081359050610bd08161132f565b92915050565b600060208284031215610be857600080fd5b6000610bf684828501610bac565b91505092915050565b60008060408385031215610c1257600080fd5b6000610c2085828601610bac565b9250506020610c3185828601610bac565b9150509250929050565b600080600060608486031215610c5057600080fd5b6000610c5e86828701610bac565b9350506020610c6f86828701610bac565b9250506040610c8086828701610bc1565b9150509250925092565b60008060408385031215610c9d57600080fd5b6000610cab85828601610bac565b9250506020610cbc85828601610bc1565b9150509250929050565b610ccf81611201565b82525050565b6000610ce082611149565b610cea8185611154565b9350610cfa818560208601611244565b610d0381611307565b840191505092915050565b6000610d1b602383611154565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610d81602283611154565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610de7602683611154565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610e4d602883611154565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610eb3602583611154565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610f19602483611154565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610f7f602583611154565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b610fe18161122d565b82525050565b610ff081611237565b82525050565b600060208201905061100b6000830184610cc6565b92915050565b6000602082019050818103600083015261102b8184610cd5565b905092915050565b6000602082019050818103600083015261104c81610d0e565b9050919050565b6000602082019050818103600083015261106c81610d74565b9050919050565b6000602082019050818103600083015261108c81610dda565b9050919050565b600060208201905081810360008301526110ac81610e40565b9050919050565b600060208201905081810360008301526110cc81610ea6565b9050919050565b600060208201905081810360008301526110ec81610f0c565b9050919050565b6000602082019050818103600083015261110c81610f72565b9050919050565b60006020820190506111286000830184610fd8565b92915050565b60006020820190506111436000830184610fe7565b92915050565b600081519050919050565b600082825260208201905092915050565b60006111708261122d565b915061117b8361122d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156111b0576111af6112a9565b5b828201905092915050565b60006111c68261122d565b91506111d18361122d565b9250828210156111e4576111e36112a9565b5b828203905092915050565b60006111fa8261120d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611262578082015181840152602081019050611247565b83811115611271576000848401525b50505050565b6000600282049050600182168061128f57607f821691505b602082108114156112a3576112a26112d8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b611321816111ef565b811461132c57600080fd5b50565b6113388161122d565b811461134357600080fd5b5056fea2646970667358221220070ac59a6553681a7c03c1a7b0369ce62a4377ca5cf05f734be570fb51efb8d364736f6c63430008000033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190611011565b60405180910390f35b6100e660048036038101906100e19190610c8a565b610308565b6040516100f39190610ff6565b60405180910390f35b610104610326565b6040516101119190611113565b60405180910390f35b610134600480360381019061012f9190610c3b565b610330565b6040516101419190610ff6565b60405180910390f35b610152610431565b60405161015f919061112e565b60405180910390f35b610182600480360381019061017d9190610c8a565b610436565b60405161018f9190610ff6565b60405180910390f35b6101b260048036038101906101ad9190610bd6565b6104e2565b6040516101bf9190611113565b60405180910390f35b6101d061052a565b6040516101dd9190611011565b60405180910390f35b61020060048036038101906101fb9190610c8a565b6105bc565b60405161020d9190610ff6565b60405180910390f35b610230600480360381019061022b9190610c8a565b6106b0565b60405161023d9190610ff6565b60405180910390f35b610260600480360381019061025b9190610bff565b6106ce565b60405161026d9190611113565b60405180910390f35b60606003805461028590611277565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190611277565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b600061031c610315610755565b848461075d565b6001905092915050565b6000600254905090565b600061033d848484610928565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610388610755565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610408576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ff90611093565b60405180910390fd5b61042585610414610755565b858461042091906111bb565b61075d565b60019150509392505050565b600090565b60006104d8610443610755565b848460016000610451610755565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104d39190611165565b61075d565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461053990611277565b80601f016020809104026020016040519081016040528092919081815260200182805461056590611277565b80156105b25780601f10610587576101008083540402835291602001916105b2565b820191906000526020600020905b81548152906001019060200180831161059557829003601f168201915b5050505050905090565b600080600160006105cb610755565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067f906110f3565b60405180910390fd5b6106a5610693610755565b8585846106a091906111bb565b61075d565b600191505092915050565b60006106c46106bd610755565b8484610928565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c4906110d3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561083d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083490611053565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161091b9190611113565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098f906110b3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ff90611033565b60405180910390fd5b610a13838383610ba7565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610a99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9090611073565b60405180910390fd5b8181610aa591906111bb565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b359190611165565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b999190611113565b60405180910390a350505050565b505050565b600081359050610bbb81611318565b92915050565b600081359050610bd08161132f565b92915050565b600060208284031215610be857600080fd5b6000610bf684828501610bac565b91505092915050565b60008060408385031215610c1257600080fd5b6000610c2085828601610bac565b9250506020610c3185828601610bac565b9150509250929050565b600080600060608486031215610c5057600080fd5b6000610c5e86828701610bac565b9350506020610c6f86828701610bac565b9250506040610c8086828701610bc1565b9150509250925092565b60008060408385031215610c9d57600080fd5b6000610cab85828601610bac565b9250506020610cbc85828601610bc1565b9150509250929050565b610ccf81611201565b82525050565b6000610ce082611149565b610cea8185611154565b9350610cfa818560208601611244565b610d0381611307565b840191505092915050565b6000610d1b602383611154565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610d81602283611154565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610de7602683611154565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610e4d602883611154565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610eb3602583611154565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610f19602483611154565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610f7f602583611154565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b610fe18161122d565b82525050565b610ff081611237565b82525050565b600060208201905061100b6000830184610cc6565b92915050565b6000602082019050818103600083015261102b8184610cd5565b905092915050565b6000602082019050818103600083015261104c81610d0e565b9050919050565b6000602082019050818103600083015261106c81610d74565b9050919050565b6000602082019050818103600083015261108c81610dda565b9050919050565b600060208201905081810360008301526110ac81610e40565b9050919050565b600060208201905081810360008301526110cc81610ea6565b9050919050565b600060208201905081810360008301526110ec81610f0c565b9050919050565b6000602082019050818103600083015261110c81610f72565b9050919050565b60006020820190506111286000830184610fd8565b92915050565b60006020820190506111436000830184610fe7565b92915050565b600081519050919050565b600082825260208201905092915050565b60006111708261122d565b915061117b8361122d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156111b0576111af6112a9565b5b828201905092915050565b60006111c68261122d565b91506111d18361122d565b9250828210156111e4576111e36112a9565b5b828203905092915050565b60006111fa8261120d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611262578082015181840152602081019050611247565b83811115611271576000848401525b50505050565b6000600282049050600182168061128f57607f821691505b602082108114156112a3576112a26112d8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b611321816111ef565b811461132c57600080fd5b50565b6113388161122d565b811461134357600080fd5b5056fea2646970667358221220070ac59a6553681a7c03c1a7b0369ce62a4377ca5cf05f734be570fb51efb8d364736f6c63430008000033", "immutableReferences": {}, "generatedSources": [ { "ast": { "nodeType": "YulBlock", "src": "0:2967:17", "statements": [ { "body": { "nodeType": "YulBlock", "src": "102:258:17", "statements": [ { "nodeType": "YulAssignment", "src": "112:74:17", "value": { "arguments": [ { "arguments": [ { "name": "length", "nodeType": "YulIdentifier", "src": "178:6:17" } ], "functionName": { "name": "array_allocation_size_t_string_memory_ptr", "nodeType": "YulIdentifier", "src": "136:41:17" }, "nodeType": "YulFunctionCall", "src": "136:49:17" } ], "functionName": { "name": "allocateMemory", "nodeType": "YulIdentifier", "src": "121:14:17" }, "nodeType": "YulFunctionCall", "src": "121:65:17" }, "variableNames": [ { "name": "array", "nodeType": "YulIdentifier", "src": "112:5:17" } ] }, { "expression": { "arguments": [ { "name": "array", "nodeType": "YulIdentifier", "src": "202:5:17" }, { "name": "length", "nodeType": "YulIdentifier", "src": "209:6:17" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "195:6:17" }, "nodeType": "YulFunctionCall", "src": "195:21:17" }, "nodeType": "YulExpressionStatement", "src": "195:21:17" }, { "nodeType": "YulVariableDeclaration", "src": "225:27:17", "value": { "arguments": [ { "name": "array", "nodeType": "YulIdentifier", "src": "240:5:17" }, { "kind": "number", "nodeType": "YulLiteral", "src": "247:4:17", "type": "", "value": "0x20" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "236:3:17" }, "nodeType": "YulFunctionCall", "src": "236:16:17" }, "variables": [ { "name": "dst", "nodeType": "YulTypedName", "src": "229:3:17", "type": "" } ] }, { "body": { "nodeType": "YulBlock", "src": "290:16:17", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "299:1:17", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "302:1:17", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "292:6:17" }, "nodeType": "YulFunctionCall", "src": "292:12:17" }, "nodeType": "YulExpressionStatement", "src": "292:12:17" } ] }, "condition": { "arguments": [ { "arguments": [ { "name": "src", "nodeType": "YulIdentifier", "src": "271:3:17" }, { "name": "length", "nodeType": "YulIdentifier", "src": "276:6:17" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "267:3:17" }, "nodeType": "YulFunctionCall", "src": "267:16:17" }, { "name": "end", "nodeType": "YulIdentifier", "src": "285:3:17" } ], "functionName": { "name": "gt", "nodeType": "YulIdentifier", "src": "264:2:17" }, "nodeType": "YulFunctionCall", "src": "264:25:17" }, "nodeType": "YulIf", "src": "261:2:17" }, { "expression": { "arguments": [ { "name": "src", "nodeType": "YulIdentifier", "src": "337:3:17" }, { "name": "dst", "nodeType": "YulIdentifier", "src": "342:3:17" }, { "name": "length", "nodeType": "YulIdentifier", "src": "347:6:17" } ], "functionName": { "name": "copy_memory_to_memory", "nodeType": "YulIdentifier", "src": "315:21:17" }, "nodeType": "YulFunctionCall", "src": "315:39:17" }, "nodeType": "YulExpressionStatement", "src": "315:39:17" } ] }, "name": "abi_decode_available_length_t_string_memory_ptr_fromMemory", "nodeType": "YulFunctionDefinition", "parameters": [ { "name": "src", "nodeType": "YulTypedName", "src": "75:3:17", "type": "" }, { "name": "length", "nodeType": "YulTypedName", "src": "80:6:17", "type": "" }, { "name": "end", "nodeType": "YulTypedName", "src": "88:3:17", "type": "" } ], "returnVariables": [ { "name": "array", "nodeType": "YulTypedName", "src": "96:5:17", "type": "" } ], "src": "7:353:17" }, { "body": { "nodeType": "YulBlock", "src": "453:215:17", "statements": [ { "body": { "nodeType": "YulBlock", "src": "502:16:17", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "511:1:17", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "514:1:17", "type": "", "value": "0" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "504:6:17" }, "nodeType": "YulFunctionCall", "src": "504:12:17" }, "nodeType": "YulExpressionStatement", "src": "504:12:17" } ] }, "condition": { "arguments": [ { "arguments": [ { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", "src": "481:6:17" }, { "kind": "number", "nodeType": "YulLiteral", "src": "489:4:17", "type": "", "value": "0x1f" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "477:3:17" }, "nodeType": "YulFunctionCall", "src": "477:17:17" }, { "name": "end", "nodeType": "YulIdentifier", "src": "496:3:17" } ], "functionName": { "name": "slt", "nodeType": "YulIdentifier", "src": "473:3:17" }, "nodeType": "YulFunctionCall", "src": "473:27:17" } ], "functionName": { "name": "iszero", "nodeType": "YulIdentifier", "src": "466:6:17" }, "nodeType": "YulFunctionCall", "src": "466:35:17" }, "nodeType": "YulIf", "src": "463:2:17" }, { "nodeType": "YulVariableDeclaration", "src": "527:27:17", "value": { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", "src": "547:6:17" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "541:5:17" }, "nodeType": "YulFunctionCall", "src": "541:13:17" }, "variables": [ { "name": "length", "nodeType": "YulTypedName", "src": "531:6:17", "type": "" } ] }, { "nodeType": "YulAssignment", "src": "563:99:17", "value": { "arguments": [ { "arguments": [ { "name": "offset", "nodeType": "YulIdentifier", "src": "635:6:17" }, { "kind": "number", "nodeType": "YulLite