UNPKG

@openzeppelin/contracts-upgradeable

Version:
742 lines 63.3 kB
{ "_format": "hh-sol-artifact-1", "contractName": "ERC1155PresetMinterPauserUpgradeable", "sourceName": "contracts/token/ERC1155/presets/ERC1155PresetMinterPauserUpgradeable.sol", "abi": [ { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "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": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "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": [], "name": "PAUSER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "burnBatch", "outputs": [], "stateMutability": "nonpayable", "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": "uint256", "name": "index", "type": "uint256" } ], "name": "getRoleMember", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleMemberCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "string", "name": "uri", "type": "string" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "mintBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "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": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "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": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x608060405234801561001057600080fd5b50612e78806100206000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80638456cb59116100de578063d539139311610097578063e985e9c511610071578063e985e9c514610373578063f242432a146103af578063f5298aca146103c2578063f62d1888146103d55761018d565b8063d539139314610336578063d547741f1461034b578063e63ab1e91461035e5761018d565b80638456cb59146102c25780639010d07c146102ca57806391d14854146102f5578063a217fddf14610308578063a22cb46514610310578063ca15c873146103235761018d565b80632f2ff15d1161014b5780634e1273f4116101255780634e1273f4146102745780635c975abb146102945780636b20c4541461029c578063731133e9146102af5761018d565b80632f2ff15d1461024657806336568abe146102595780633f4ba83a1461026c5761018d565b8062fdd58e1461019257806301ffc9a7146101b85780630e89341c146101db5780631f7fdffa146101fb578063248a9ca3146102105780632eb2c2d614610233575b600080fd5b6101a56101a03660046124de565b6103e8565b6040519081526020015b60405180910390f35b6101cb6101c63660046126b0565b610484565b60405190151581526020016101af565b6101ee6101e9366004612655565b610497565b6040516101af91906128f4565b61020e610209366004612410565b61052b565b005b6101a561021e366004612655565b60009081526065602052604090206001015490565b61020e610241366004612299565b610571565b61020e61025436600461266d565b610608565b61020e61026736600461266d565b61062f565b61020e610651565b61028761028236600461258b565b6106e5565b6040516101af91906128b3565b6101cb610846565b61020e6102aa3660046123a0565b610851565b61020e6102bd366004612539565b610894565b61020e6108d4565b6102dd6102d836600461268f565b610966565b6040516001600160a01b0390911681526020016101af565b6101cb61030336600461266d565b610985565b6101a5600081565b61020e61031e3660046124a4565b6109b0565b6101a5610331366004612655565b610a94565b6101a5600080516020612e2383398151915281565b61020e61035936600461266d565b610aab565b6101a5600080516020612e0383398151915281565b6101cb610381366004612267565b6001600160a01b03918216600090815260ca6020908152604080832093909416825291909152205460ff1690565b61020e6103bd36600461233e565b610ab5565b61020e6103d0366004612507565b610afa565b61020e6103e33660046126e8565b610b3d565b60006001600160a01b0383166104595760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b50600081815260c9602090815260408083206001600160a01b03861684529091529020545b92915050565b600061048f82610bb3565b90505b919050565b606060cb80546104a690612c96565b80601f01602080910402602001604051908101604052809291908181526020018280546104d290612c96565b801561051f5780601f106104f45761010080835404028352916020019161051f565b820191906000526020600020905b81548152906001019060200180831161050257829003601f168201915b50505050509050919050565b610543600080516020612e2383398151915233610303565b61055f5760405162461bcd60e51b815260040161045090612ab2565b61056b84848484610bf3565b50505050565b6001600160a01b03851633148061058d575061058d8533610381565b6105f45760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b6064820152608401610450565b6106018585858585610d6a565b5050505050565b6106128282610f33565b600082815260976020526040902061062a9082610f5a565b505050565b6106398282610f6f565b600082815260976020526040902061062a9082610fe9565b610669600080516020612e0383398151915233610303565b6106db5760405162461bcd60e51b815260206004820152603b60248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f20756e706175736500000000006064820152608401610450565b6106e3610ffe565b565b6060815183511461074a5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610450565b600083516001600160401b0381111561077357634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561079c578160200160208202803683370190505b50905060005b845181101561083e576108038582815181106107ce57634e487b7160e01b600052603260045260246000fd5b60200260200101518583815181106107f657634e487b7160e01b600052603260045260246000fd5b60200260200101516103e8565b82828151811061082357634e487b7160e01b600052603260045260246000fd5b602090810291909101015261083781612cfd565b90506107a2565b509392505050565b61012d5460ff165b90565b6001600160a01b03831633148061086d575061086d8333610381565b6108895760405162461bcd60e51b815260040161045090612993565b61062a838383611094565b6108ac600080516020612e2383398151915233610303565b6108c85760405162461bcd60e51b815260040161045090612ab2565b61056b84848484611241565b6108ec600080516020612e0383398151915233610303565b61095e5760405162461bcd60e51b815260206004820152603960248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f207061757365000000000000006064820152608401610450565b6106e3611319565b600082815260976020526040812061097e9083611397565b9392505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b336001600160a01b0383161415610a1b5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610450565b33600081815260ca602090815260408083206001600160a01b0387168085529252909120805460ff1916841515179055906001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610a88911515815260200190565b60405180910390a35050565b600081815260976020526040812061048f906113a3565b61063982826113ad565b6001600160a01b038516331480610ad15750610ad18533610381565b610aed5760405162461bcd60e51b815260040161045090612993565b61060185858585856113d3565b6001600160a01b038316331480610b165750610b168333610381565b610b325760405162461bcd60e51b815260040161045090612993565b61062a8383836114f4565b600054610100900460ff1680610b56575060005460ff16155b610b725760405162461bcd60e51b815260040161045090612a21565b600054610100900460ff16158015610b94576000805461ffff19166101011790555b610b9d826115f9565b8015610baf576000805461ff00191690555b5050565b60006001600160e01b03198216636cdb3d1360e11b1480610be457506001600160e01b031982166303a24d0760e21b145b8061048f575061048f8261169a565b6001600160a01b038416610c195760405162461bcd60e51b815260040161045090612ba1565b8151835114610c3a5760405162461bcd60e51b815260040161045090612b59565b33610c4a816000878787876116bf565b60005b8451811015610d0257838181518110610c7657634e487b7160e01b600052603260045260246000fd5b602002602001015160c96000878481518110610ca257634e487b7160e01b600052603260045260246000fd5b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254610cea9190612c05565b90915550819050610cfa81612cfd565b915050610c4d565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610d539291906128c6565b60405180910390a4610601816000878787876116cd565b8151835114610d8b5760405162461bcd60e51b815260040161045090612b59565b6001600160a01b038416610db15760405162461bcd60e51b8152600401610450906129dc565b33610dc08187878787876116bf565b60005b8451811015610ec5576000858281518110610dee57634e487b7160e01b600052603260045260246000fd5b602002602001015190506000858381518110610e1a57634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815260c9835260408082206001600160a01b038e168352909352919091205490915081811015610e6b5760405162461bcd60e51b815260040161045090612b0f565b600083815260c9602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610eaa908490612c05565b9250508190555050505080610ebe90612cfd565b9050610dc3565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610f159291906128c6565b60405180910390a4610f2b8187878787876116cd565b505050505050565b600082815260656020526040902060010154610f5081335b611838565b61062a838361189c565b600061097e836001600160a01b038416611922565b6001600160a01b0381163314610fdf5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610450565b610baf8282611971565b600061097e836001600160a01b0384166119d8565b611006610846565b6110495760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610450565b61012d805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b0383166110ba5760405162461bcd60e51b815260040161045090612a6f565b80518251146110db5760405162461bcd60e51b815260040161045090612b59565b60003390506110fe818560008686604051806020016040528060008152506116bf565b60005b83518110156111e257600084828151811061112c57634e487b7160e01b600052603260045260246000fd5b60200260200101519050600084838151811061115857634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815260c9835260408082206001600160a01b038c1683529093529190912054909150818110156111a95760405162461bcd60e51b81526004016104509061294f565b600092835260c9602090815260408085206001600160a01b038b16865290915290922091039055806111da81612cfd565b915050611101565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516112339291906128c6565b60405180910390a450505050565b6001600160a01b0384166112675760405162461bcd60e51b815260040161045090612ba1565b336112878160008761127888611af5565b61128188611af5565b876116bf565b600084815260c9602090815260408083206001600160a01b0389168452909152812080548592906112b9908490612c05565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461060181600087878787611b4e565b611321610846565b156113615760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610450565b61012d805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110773390565b600061097e8383611c18565b600061048f825490565b6000828152606560205260409020600101546113c98133610f4b565b61062a8383611971565b6001600160a01b0384166113f95760405162461bcd60e51b8152600401610450906129dc565b3361140981878761127888611af5565b600084815260c9602090815260408083206001600160a01b038a1684529091529020548381101561144c5760405162461bcd60e51b815260040161045090612b0f565b600085815260c9602090815260408083206001600160a01b038b811685529252808320878503905590881682528120805486929061148b908490612c05565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46114eb828888888888611b4e565b50505050505050565b6001600160a01b03831661151a5760405162461bcd60e51b815260040161045090612a6f565b336115498185600061152b87611af5565b61153487611af5565b604051806020016040528060008152506116bf565b600083815260c9602090815260408083206001600160a01b03881684529091529020548281101561158c5760405162461bcd60e51b81526004016104509061294f565b600084815260c9602090815260408083206001600160a01b03898116808652918452828520888703905582518981529384018890529092908616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a45050505050565b600054610100900460ff1680611612575060005460ff16155b61162e5760405162461bcd60e51b815260040161045090612a21565b600054610100900460ff16158015611650576000805461ffff19166101011790555b611658611c50565b611660611c50565b611668611c50565b611670611c50565b61167982611cbc565b611681611c50565b611689611d1c565b611691611c50565b610b9d82611d92565b60006001600160e01b03198216635a05180f60e01b148061048f575061048f82611e25565b610f2b868686868686611e5a565b6001600160a01b0384163b15610f2b5760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906117119089908990889088908890600401612810565b602060405180830381600087803b15801561172b57600080fd5b505af192505050801561175b575060408051601f3d908101601f19168201909252611758918101906126cc565b60015b61180857611767612d44565b806308c379a014156117a1575061177c612d5b565b8061178757506117a3565b8060405162461bcd60e51b815260040161045091906128f4565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610450565b6001600160e01b0319811663bc197c8160e01b146114eb5760405162461bcd60e51b815260040161045090612907565b6118428282610985565b610baf5761185a816001600160a01b03166014611ec4565b611865836020611ec4565b60405160200161187692919061279b565b60408051601f198184030181529082905262461bcd60e51b8252610450916004016128f4565b6118a68282610985565b610baf5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556118de3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008181526001830160205260408120546119695750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561047e565b50600061047e565b61197b8282610985565b15610baf5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008181526001830160205260408120548015611aeb5760006119fc600183612c3c565b8554909150600090611a1090600190612c3c565b9050818114611a91576000866000018281548110611a3e57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080876000018481548110611a6f57634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611ab057634e487b7160e01b600052603160045260246000fd5b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061047e565b600091505061047e565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611b3d57634e487b7160e01b600052603260045260246000fd5b602090810291909101015292915050565b6001600160a01b0384163b15610f2b5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611b92908990899088908890889060040161286e565b602060405180830381600087803b158015611bac57600080fd5b505af1925050508015611bdc575060408051601f3d908101601f19168201909252611bd9918101906126cc565b60015b611be857611767612d44565b6001600160e01b0319811663f23a6e6160e01b146114eb5760405162461bcd60e51b815260040161045090612907565b6000826000018281548110611c3d57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b600054610100900460ff1680611c69575060005460ff16155b611c855760405162461bcd60e51b815260040161045090612a21565b600054610100900460ff16158015611ca7576000805461ffff19166101011790555b8015611cb9576000805461ff00191690555b50565b600054610100900460ff1680611cd5575060005460ff16155b611cf15760405162461bcd60e51b815260040161045090612a21565b600054610100900460ff16158015611d13576000805461ffff19166101011790555b610b9d826120a5565b600054610100900460ff1680611d35575060005460ff16155b611d515760405162461bcd60e51b815260040161045090612a21565b600054610100900460ff16158015611d73576000805461ffff19166101011790555b61012d805460ff191690558015611cb9576000805461ff001916905550565b600054610100900460ff1680611dab575060005460ff16155b611dc75760405162461bcd60e51b815260040161045090612a21565b600054610100900460ff16158015611de9576000805461ffff19166101011790555b611df56000335b6120b8565b611e0d600080516020612e2383398151915233611df0565b610b9d600080516020612e0383398151915233611df0565b60006001600160e01b03198216637965db0b60e01b148061048f57506301ffc9a760e01b6001600160e01b031983161461048f565b611e62610846565b15610f2b5760405162461bcd60e51b815260206004820152602c60248201527f455243313135355061757361626c653a20746f6b656e207472616e736665722060448201526b1dda1a5b19481c185d5cd95960a21b6064820152608401610450565b60606000611ed3836002612c1d565b611ede906002612c05565b6001600160401b03811115611f0357634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611f2d576020820181803683370190505b509050600360fc1b81600081518110611f5657634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611f9357634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506000611fb7846002612c1d565b611fc2906001612c05565b90505b6001811115612056576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061200457634e487b7160e01b600052603260045260246000fd5b1a60f81b82828151811061202857634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c9361204f81612c7f565b9050611fc5565b50831561097e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610450565b8051610baf9060cb9060208401906120c7565b6106128282610baf828261189c565b8280546120d390612c96565b90600052602060002090601f0160209004810192826120f5576000855561213b565b82601f1061210e57805160ff191683800117855561213b565b8280016001018555821561213b579182015b8281111561213b578251825591602001919060010190612120565b5061214792915061214b565b5090565b5b80821115612147576000815560010161214c565b60006001600160401b0383111561217957612179612d2e565b604051612190601f8501601f191660200182612cd1565b8091508381528484840111156121a557600080fd5b83836020830137600060208583010152509392505050565b80356001600160a01b038116811461049257600080fd5b600082601f8301126121e4578081fd5b813560206121f182612be2565b6040516121fe8282612cd1565b8381528281019150858301600585901b8701840188101561221d578586fd5b855b8581101561223b5781358452928401929084019060010161221f565b5090979650505050505050565b600082601f830112612258578081fd5b61097e83833560208501612160565b60008060408385031215612279578182fd5b612282836121bd565b9150612290602084016121bd565b90509250929050565b600080600080600060a086880312156122b0578081fd5b6122b9866121bd565b94506122c7602087016121bd565b935060408601356001600160401b03808211156122e2578283fd5b6122ee89838a016121d4565b94506060880135915080821115612303578283fd5b61230f89838a016121d4565b93506080880135915080821115612324578283fd5b5061233188828901612248565b9150509295509295909350565b600080600080600060a08688031215612355578081fd5b61235e866121bd565b945061236c602087016121bd565b9350604086013592506060860135915060808601356001600160401b03811115612394578182fd5b61233188828901612248565b6000806000606084860312156123b4578283fd5b6123bd846121bd565b925060208401356001600160401b03808211156123d8578384fd5b6123e4878388016121d4565b935060408601359150808211156123f9578283fd5b50612406868287016121d4565b9150509250925092565b60008060008060808587031215612425578384fd5b61242e856121bd565b935060208501356001600160401b0380821115612449578485fd5b612455888389016121d4565b9450604087013591508082111561246a578384fd5b612476888389016121d4565b9350606087013591508082111561248b578283fd5b5061249887828801612248565b91505092959194509250565b600080604083850312156124b6578182fd5b6124bf836121bd565b9150602083013580151581146124d3578182fd5b809150509250929050565b600080604083850312156124f0578182fd5b6124f9836121bd565b946020939093013593505050565b60008060006060848603121561251b578081fd5b612524846121bd565b95602085013595506040909401359392505050565b6000806000806080858703121561254e578182fd5b612557856121bd565b9350602085013592506040850135915060608501356001600160401b0381111561257f578182fd5b61249887828801612248565b6000806040838503121561259d578182fd5b82356001600160401b03808211156125b3578384fd5b818501915085601f8301126125c6578384fd5b813560206125d382612be2565b6040516125e08282612cd1565b8381528281019150858301600585901b870184018b10156125ff578889fd5b8896505b8487101561262857612614816121bd565b835260019690960195918301918301612603565b509650508601359250508082111561263e578283fd5b5061264b858286016121d4565b9150509250929050565b600060208284031215612666578081fd5b5035919050565b6000806040838503121561267f578182fd5b82359150612290602084016121bd565b600080604083850312156126a1578182fd5b50508035926020909101359150565b6000602082840312156126c1578081fd5b813561097e81612dec565b6000602082840312156126dd578081fd5b815161097e81612dec565b6000602082840312156126f9578081fd5b81356001600160401b0381111561270e578182fd5b8201601f8101841361271e578182fd5b61272d84823560208401612160565b949350505050565b6000815180845260208085019450808401835b8381101561276457815187529582019590820190600101612748565b509495945050505050565b60008151808452612787816020860160208601612c53565b601f01601f19169290920160200192915050565b60007f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000825283516127d3816017850160208801612c53565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612804816028840160208801612c53565b01602801949350505050565b6001600160a01b0386811682528516602082015260a06040820181905260009061283c90830186612735565b828103606084015261284e8186612735565b90508281036080840152612862818561276f565b98975050505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906128a89083018461276f565b979650505050505050565b60006020825261097e6020830184612735565b6000604082526128d96040830185612735565b82810360208401526128eb8185612735565b95945050505050565b60006020825261097e602083018461276f565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b60208082526029908201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260408201526808185c1c1c9bdd995960ba1b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526038908201527f455243313135355072657365744d696e7465725061757365723a206d7573742060408201527f68617665206d696e74657220726f6c6520746f206d696e740000000000000000606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60006001600160401b03821115612bfb57612bfb612d2e565b5060051b60200190565b60008219821115612c1857612c18612d18565b500190565b6000816000190483118215151615612c3757612c37612d18565b500290565b600082821015612c4e57612c4e612d18565b500390565b60005b83811015612c6e578181015183820152602001612c56565b8381111561056b5750506000910152565b600081612c8e57612c8e612d18565b506000190190565b600181811c90821680612caa57607f821691505b60208210811415612ccb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8201601f191681016001600160401b0381118282101715612cf657612cf6612d2e565b6040525050565b6000600019821415612d1157612d11612d18565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060033d111561084e57600481823e5160e01c90565b600060443d1015612d6b5761084e565b6040516003193d81016004833e81513d6001600160401b038160248401118184111715612d9c57505050505061084e565b8285019150815181811115612db65750505050505061084e565b843d8701016020828501011115612dd25750505050505061084e565b612de160208286010187612cd1565b509094505050505090565b6001600160e01b031981168114611cb957600080fdfe65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a2646970667358221220166811afa209403f8988927022aab75d1042e46ab13705d9e9191b9de647c02364736f6c63430008030033", "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061018d5760003560e01c80638456cb59116100de578063d539139311610097578063e985e9c511610071578063e985e9c514610373578063f242432a146103af578063f5298aca146103c2578063f62d1888146103d55761018d565b8063d539139314610336578063d547741f1461034b578063e63ab1e91461035e5761018d565b80638456cb59146102c25780639010d07c146102ca57806391d14854146102f5578063a217fddf14610308578063a22cb46514610310578063ca15c873146103235761018d565b80632f2ff15d1161014b5780634e1273f4116101255780634e1273f4146102745780635c975abb146102945780636b20c4541461029c578063731133e9146102af5761018d565b80632f2ff15d1461024657806336568abe146102595780633f4ba83a1461026c5761018d565b8062fdd58e1461019257806301ffc9a7146101b85780630e89341c146101db5780631f7fdffa146101fb578063248a9ca3146102105780632eb2c2d614610233575b600080fd5b6101a56101a03660046124de565b6103e8565b6040519081526020015b60405180910390f35b6101cb6101c63660046126b0565b610484565b60405190151581526020016101af565b6101ee6101e9366004612655565b610497565b6040516101af91906128f4565b61020e610209366004612410565b61052b565b005b6101a561021e366004612655565b60009081526065602052604090206001015490565b61020e610241366004612299565b610571565b61020e61025436600461266d565b610608565b61020e61026736600461266d565b61062f565b61020e610651565b61028761028236600461258b565b6106e5565b6040516101af91906128b3565b6101cb610846565b61020e6102aa3660046123a0565b610851565b61020e6102bd366004612539565b610894565b61020e6108d4565b6102dd6102d836600461268f565b610966565b6040516001600160a01b0390911681526020016101af565b6101cb61030336600461266d565b610985565b6101a5600081565b61020e61031e3660046124a4565b6109b0565b6101a5610331366004612655565b610a94565b6101a5600080516020612e2383398151915281565b61020e61035936600461266d565b610aab565b6101a5600080516020612e0383398151915281565b6101cb610381366004612267565b6001600160a01b03918216600090815260ca6020908152604080832093909416825291909152205460ff1690565b61020e6103bd36600461233e565b610ab5565b61020e6103d0366004612507565b610afa565b61020e6103e33660046126e8565b610b3d565b60006001600160a01b0383166104595760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b50600081815260c9602090815260408083206001600160a01b03861684529091529020545b92915050565b600061048f82610bb3565b90505b919050565b606060cb80546104a690612c96565b80601f01602080910402602001604051908101604052809291908181526020018280546104d290612c96565b801561051f5780601f106104f45761010080835404028352916020019161051f565b820191906000526020600020905b81548152906001019060200180831161050257829003601f168201915b50505050509050919050565b610543600080516020612e2383398151915233610303565b61055f5760405162461bcd60e51b815260040161045090612ab2565b61056b84848484610bf3565b50505050565b6001600160a01b03851633148061058d575061058d8533610381565b6105f45760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b6064820152608401610450565b6106018585858585610d6a565b5050505050565b6106128282610f33565b600082815260976020526040902061062a9082610f5a565b505050565b6106398282610f6f565b600082815260976020526040902061062a9082610fe9565b610669600080516020612e0383398151915233610303565b6106db5760405162461bcd60e51b815260206004820152603b60248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f20756e706175736500000000006064820152608401610450565b6106e3610ffe565b565b6060815183511461074a5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610450565b600083516001600160401b0381111561077357634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561079c578160200160208202803683370190505b50905060005b845181101561083e576108038582815181106107ce57634e487b7160e01b600052603260045260246000fd5b60200260200101518583815181106107f657634e487b7160e01b600052603260045260246000fd5b60200260200101516103e8565b82828151811061082357634e487b7160e01b600052603260045260246000fd5b602090810291909101015261083781612cfd565b90506107a2565b509392505050565b61012d5460ff165b90565b6001600160a01b03831633148061086d575061086d8333610381565b6108895760405162461bcd60e51b815260040161045090612993565b61062a838383611094565b6108ac600080516020612e2383398151915233610303565b6108c85760405162461bcd60e51b815260040161045090612ab2565b61056b84848484611241565b6108ec600080516020612e0383398151915233610303565b61095e5760405162461bcd60e51b815260206004820152603960248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f207061757365000000000000006064820152608401610450565b6106e3611319565b600082815260976020526040812061097e9083611397565b9392505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b336001600160a01b0383161415610a1b5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610450565b33600081815260ca602090815260408083206001600160a01b0387168085529252909120805460ff1916841515179055906001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610a88911515815260200190565b60405180910390a35050565b600081815260976020526040812061048f906113a3565b61063982826113ad565b6001600160a01b038516331480610ad15750610ad18533610381565b610aed5760405162461bcd60e51b815260040161045090612993565b61060185858585856113d3565b6001600160a01b038316331480610b165750610b168333610381565b610b325760405162461bcd60e51b815260040161045090612993565b61062a8383836114f4565b600054610100900460ff1680610b56575060005460ff16155b610b725760405162461bcd60e51b815260040161045090612a21565b600054610100900460ff16158015610b94576000805461ffff19166101011790555b610b9d826115f9565b8015610baf576000805461ff00191690555b5050565b60006001600160e01b03198216636cdb3d1360e11b1480610be457506001600160e01b031982166303a24d0760e21b145b8061048f575061048f8261169a565b6001600160a01b038416610c195760405162461bcd60e51b815260040161045090612ba1565b8151835114610c3a5760405162461bcd60e51b815260040161045090612b59565b33610c4a816000878787876116bf565b60005b8451811015610d0257838181518110610c7657634e487b7160e01b600052603260045260246000fd5b602002602001015160c96000878481518110610ca257634e487b7160e01b600052603260045260246000fd5b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254610cea9190612c05565b90915550819050610cfa81612cfd565b915050610c4d565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610d539291906128c6565b60405180910390a4610601816000878787876116cd565b8151835114610d8b5760405162461bcd60e51b815260040161045090612b59565b6001600160a01b038416610db15760405162461bcd60e51b8152600401610450906129dc565b33610dc08187878787876116bf565b60005b8451811015610ec5576000858281518110610dee57634e487b7160e01b600052603260045260246000fd5b602002602001015190506000858381518110610e1a57634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815260c9835260408082206001600160a01b038e168352909352919091205490915081811015610e6b5760405162461bcd60e51b815260040161045090612b0f565b600083815260c9602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610eaa908490612c05565b9250508190555050505080610ebe90612cfd565b9050610dc3565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610f159291906128c6565b60405180910390a4610f2b8187878787876116cd565b505050505050565b600082815260656020526040902060010154610f5081335b611838565b61062a838361189c565b600061097e836001600160a01b038416611922565b6001600160a01b0381163314610fdf5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610450565b610baf8282611971565b600061097e836001600160a01b0384166119d8565b611006610846565b6110495760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610450565b61012d805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b0383166110ba5760405162461bcd60e51b815260040161045090612a6f565b80518251146110db5760405162461bcd60e51b815260040161045090612b59565b60003390506110fe818560008686604051806020016040528060008152506116bf565b60005b83518110156111e257600084828151811061112c57634e487b7160e01b600052603260045260246000fd5b60200260200101519050600084838151811061115857634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815260c9835260408082206001600160a01b038c1683529093529190912054909150818110156111a95760405162461bcd60e51b81526004016104509061294f565b600092835260c9602090815260408085206001600160a01b038b16865290915290922091039055806111da81612cfd565b915050611101565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516112339291906128c6565b60405180910390a450505050565b6001600160a01b0384166112675760405162461bcd60e51b815260040161045090612ba1565b336112878160008761127888611af5565b61128188611af5565b876116bf565b600084815260c9602090815260408083206001600160a01b0389168452909152812080548592906112b9908490612c05565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461060181600087878787611b4e565b611321610846565b156113615760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610450565b61012d805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110773390565b600061097e8383611c18565b600061048f825490565b6000828152606560205260409020600101546113c98133610f4b565b61062a8383611971565b6001600160a01b0384166113f95760405162461bcd60e51b8152600401610450906129dc565b3361140981878761127888611af5565b600084815260c9602090815260408083206001600160a01b038a1684529091529020548381101561144c5760405162461bcd60e51b815260040161045090612b0f565b600085815260c9602090815260408083206001600160a01b038b811685529252808320878503905590881682528120805486929061148b908490612c05565b90915550506040805186815260208101