[ { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "uint8", "name": "decimals_", "type": "uint8" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "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": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "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": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "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": "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": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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" } ]
60806040523480156200001157600080fd5b5060405162000f7b38038062000f7b833981016040819052620000349162000228565b828260036200004483826200033c565b5060046200005382826200033c565b506200006591506000905033620000b0565b50620000927f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000b0565b506006805460ff191660ff9290921691909117905550620004089050565b60008281526005602090815260408083206001600160a01b038516845290915281205460ff16620001595760008381526005602090815260408083206001600160a01b03861684529091529020805460ff19166001179055620001103390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016200015d565b5060005b92915050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200018b57600080fd5b81516001600160401b0380821115620001a857620001a862000163565b604051601f8301601f19908116603f01168101908282118183101715620001d357620001d362000163565b81604052838152602092508683858801011115620001f057600080fd5b600091505b83821015620002145785820183015181830184015290820190620001f5565b600093810190920192909252949350505050565b6000806000606084860312156200023e57600080fd5b83516001600160401b03808211156200025657600080fd5b620002648783880162000179565b945060208601519150808211156200027b57600080fd5b506200028a8682870162000179565b925050604084015160ff81168114620002a257600080fd5b809150509250925092565b600181811c90821680620002c257607f821691505b602082108103620002e357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033757600081815260208120601f850160051c81016020861015620003125750805b601f850160051c820191505b8181101562000333578281556001016200031e565b5050505b505050565b81516001600160401b0381111562000358576200035862000163565b6200037081620003698454620002ad565b84620002e9565b602080601f831160018114620003a857600084156200038f5750858301515b600019600386901b1c1916600185901b17855562000333565b600085815260208120601f198616915b82811015620003d957888601518255948401946001909101908401620003b8565b5085821015620003f85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610b6380620004186000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806340c10f19116100a2578063a217fddf11610071578063a217fddf14610247578063a9059cbb1461024f578063d539139314610262578063d547741f14610289578063dd62ed3e1461029c57600080fd5b806340c10f19146101f057806370a082311461020357806391d148541461022c57806395d89b411461023f57600080fd5b806323b872dd116100e957806323b872dd1461017d578063248a9ca3146101905780632f2ff15d146101b3578063313ce567146101c857806336568abe146101dd57600080fd5b806301ffc9a71461011b57806306fdde0314610143578063095ea7b31461015857806318160ddd1461016b575b600080fd5b61012e610129366004610947565b6102d5565b60405190151581526020015b60405180910390f35b61014b61030c565b60405161013a9190610978565b61012e6101663660046109e2565b61039e565b6002545b60405190815260200161013a565b61012e61018b366004610a0c565b6103b6565b61016f61019e366004610a48565b60009081526005602052604090206001015490565b6101c66101c1366004610a61565b6103da565b005b60065460405160ff909116815260200161013a565b6101c66101eb366004610a61565b610405565b6101c66101fe3660046109e2565b61043d565b61016f610211366004610a8d565b6001600160a01b031660009081526020819052604090205490565b61012e61023a366004610a61565b610471565b61014b61049c565b61016f600081565b61012e61025d3660046109e2565b6104ab565b61016f7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6101c6610297366004610a61565b6104b9565b61016f6102aa366004610aa8565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60006001600160e01b03198216637965db0b60e01b148061030657506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606003805461031b90610ad2565b80601f016020809104026020016040519081016040528092919081815260200182805461034790610ad2565b80156103945780601f1061036957610100808354040283529160200191610394565b820191906000526020600020905b81548152906001019060200180831161037757829003601f168201915b5050505050905090565b6000336103ac8185856104de565b5060019392505050565b6000336103c48582856104eb565b6103cf858585610568565b506001949350505050565b6000828152600560205260409020600101546103f5816105c7565b6103ff83836105d4565b50505050565b6001600160a01b038116331461042e5760405163334bd91960e11b815260040160405180910390fd5b6104388282610668565b505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610467816105c7565b61043883836106d5565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606004805461031b90610ad2565b6000336103ac818585610568565b6000828152600560205260409020600101546104d4816105c7565b6103ff8383610668565b610438838383600161070f565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146103ff578181101561055957604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b6103ff8484848403600061070f565b6001600160a01b03831661059257604051634b637e8f60e11b815260006004820152602401610550565b6001600160a01b0382166105bc5760405163ec442f0560e01b815260006004820152602401610550565b6104388383836107e4565b6105d1813361090e565b50565b60006105e08383610471565b6106605760008381526005602090815260408083206001600160a01b03861684529091529020805460ff191660011790556106183390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610306565b506000610306565b60006106748383610471565b156106605760008381526005602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610306565b6001600160a01b0382166106ff5760405163ec442f0560e01b815260006004820152602401610550565b61070b600083836107e4565b5050565b6001600160a01b0384166107395760405163e602df0560e01b815260006004820152602401610550565b6001600160a01b03831661076357604051634a1406b160e11b815260006004820152602401610550565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103ff57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107d691815260200190565b60405180910390a350505050565b6001600160a01b03831661080f5780600260008282546108049190610b0c565b909155506108819050565b6001600160a01b038316600090815260208190526040902054818110156108625760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610550565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661089d576002805482900390556108bc565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161090191815260200190565b60405180910390a3505050565b6109188282610471565b61070b5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610550565b60006020828403121561095957600080fd5b81356001600160e01b03198116811461097157600080fd5b9392505050565b600060208083528351808285015260005b818110156109a557858101830151858201604001528201610989565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146109dd57600080fd5b919050565b600080604083850312156109f557600080fd5b6109fe836109c6565b946020939093013593505050565b600080600060608486031215610a2157600080fd5b610a2a846109c6565b9250610a38602085016109c6565b9150604084013590509250925092565b600060208284031215610a5a57600080fd5b5035919050565b60008060408385031215610a7457600080fd5b82359150610a84602084016109c6565b90509250929050565b600060208284031215610a9f57600080fd5b610971826109c6565b60008060408385031215610abb57600080fd5b610ac4836109c6565b9150610a84602084016109c6565b600181811c90821680610ae657607f821691505b602082108103610b0657634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561030657634e487b7160e01b600052601160045260246000fdfea2646970667358221220c3fd4d0a13c1aeda53523af1addf290507128a68e94526bd340b5911d55a706b64736f6c63430008150033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000e44616920537461626c65636f696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034441490000000000000000000000000000000000000000000000000000000000