[ { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "uint256", "name": "initialSupply", "type": "uint256" }, { "internalType": "uint16", "name": "taxNumerator", "type": "uint16" } ], "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": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "AddressInsufficientBalance", "type": "error" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "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" }, { "inputs": [ { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "ERC2612ExpiredSignature", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC2612InvalidSigner", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [], "name": "Forbidden", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "SafeERC20FailedOperation", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "UnacceptableReference", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "Unauthorized", "type": "error" }, { "inputs": [], "name": "WithdrawToZeroAddress", "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": [], "name": "EIP712DomainChanged", "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" }, { "anonymous": false, "inputs": [], "name": "TransfersEnabled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "consumer", "type": "address" } ], "name": "UpdatedTaxConsumer", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "TRANSFER_TAX_NUMERATOR", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "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": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "enableTransfers", "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": "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": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "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": [], "name": "supervisedTransfers", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "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": "taxConsumer", "outputs": [ { "internalType": "contract IMemecoinTaxConsumer", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IMemecoinTaxConsumer", "name": "consumer", "type": "address" } ], "name": "updateTaxConsumer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "to", "type": "address" } ], "name": "withdrawCoin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "contract IERC20", "name": "token_", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdrawToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
6101606040526009805461ffff60ff60b01b011916600160b01b1790553480156200002957600080fd5b5060405162002767380380620027678339810160408190526200004c9162000791565b6040805180820190915260018152603160f81b60208201528490819081866003620000788382620008b0565b506004620000878282620008b0565b506200009991508390506005620001d3565b61012052620000aa816006620001d3565b61014052815160208084019190912060e052815190820120610100524660a0526200013860e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c0525033620001506000826200020c565b506200017d7f2a2246aa17eb93eaa9570fca27712522411a4fb0938901fc7da2b666ab875056826200020c565b50620001aa7f73a70c1e5cb24d88d071f1df63ae336fa3414417ea9c5d0c9d771967cbebc2ab826200020c565b506009805461ffff191661ffff8416179055620001c88184620002be565b5050505050620009f8565b6000602083511015620001f357620001eb8362000300565b905062000206565b81620002008482620008b0565b5060ff90505b92915050565b60008281526008602090815260408083206001600160a01b038516845290915281205460ff16620002b55760008381526008602090815260408083206001600160a01b03861684529091529020805460ff191660011790556200026c3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600162000206565b50600062000206565b6001600160a01b038216620002ee5760405163ec442f0560e01b8152600060048201526024015b60405180910390fd5b620002fc6000838362000343565b5050565b600080829050601f815111156200032e578260405163305a27a960e01b8152600401620002e591906200097c565b80516200033b82620009b1565b179392505050565b600954600160b01b900460ff1615620003cc5733600090815260008051602062002727833981519152602052604081205460ff1680620003a957506001600160a01b038416600090815260008051602062002727833981519152602052604090205460ff165b905080620003ca57604051631dd2188d60e31b815260040160405180910390fd5b505b600080620003dd33868686620004aa565b909250905081156200049657600954620004099086906201000090046001600160a01b03168462000591565b6009546201000090046001600160a01b0316635489b4f783620004293390565b6040516001600160e01b031960e085901b16815260048101929092526001600160a01b039081166024830152808916604483015287166064820152608401600060405180830381600087803b1580156200048257600080fd5b505af192505050801562000494575060015b505b620004a385858362000591565b5050505050565b6001600160a01b0384166000908152600080516020620027478339815191526020526040812054819060ff16806200050857506001600160a01b038416600090815260008051602062002747833981519152602052604090205460ff165b806200053a57506001600160a01b038516600090815260008051602062002747833981519152602052604090205460ff165b156200054857508162000588565b6009546000906201000090046001600160a01b031615620005705760095461ffff1662000573565b60005b61ffff16905061271084820204925050508082035b94509492505050565b6001600160a01b038316620005c0578060026000828254620005b49190620009d6565b90915550620006349050565b6001600160a01b03831660009081526020819052604090205481811015620006155760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401620002e5565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216620006525760028054829003905562000671565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620006b791815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620006f7578181015183820152602001620006dd565b50506000910152565b600082601f8301126200071257600080fd5b81516001600160401b03808211156200072f576200072f620006c4565b604051601f8301601f19908116603f011681019082821181831017156200075a576200075a620006c4565b816040528381528660208588010111156200077457600080fd5b62000787846020830160208901620006da565b9695505050505050565b60008060008060808587031215620007a857600080fd5b84516001600160401b0380821115620007c057600080fd5b620007ce8883890162000700565b95506020870151915080821115620007e557600080fd5b50620007f48782880162000700565b93505060408501519150606085015161ffff811681146200081457600080fd5b939692955090935050565b600181811c908216806200083457607f821691505b6020821081036200085557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620008ab576000816000526020600020601f850160051c81016020861015620008865750805b601f850160051c820191505b81811015620008a75782815560010162000892565b5050505b505050565b81516001600160401b03811115620008cc57620008cc620006c4565b620008e481620008dd84546200081f565b846200085b565b602080601f8311600181146200091c5760008415620009035750858301515b600019600386901b1c1916600185901b178555620008a7565b600085815260208120601f198616915b828110156200094d578886015182559484019460019091019084016200092c565b50858210156200096c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152600082518060208401526200099d816040850160208701620006da565b601f01601f19169190910160400192915050565b80516020808301519190811015620008555760001960209190910360031b1b16919050565b808201808211156200020657634e487b7160e01b600052601160045260246000fd5b60805160a05160c05160e051610100516101205161014051611cd462000a536000396000610f5b01526000610f2e01526000610e3301526000610e0b01526000610d6601526000610d9001526000610dba0152611cd46000f3fe6080604052600436106101c65760003560e01c80635a73928f116100f757806394a1475611610095578063af35c6c711610064578063af35c6c714610540578063d505accf14610555578063d547741f14610575578063dd62ed3e1461059557600080fd5b806394a14756146104d557806395d89b41146104f6578063a217fddf1461050b578063a9059cbb1461052057600080fd5b806379cc6790116100d157806379cc67901461044d5780637ecebe001461046d57806384b0196e1461048d57806391d14854146104b557600080fd5b80635a73928f146103b957806370a08231146103d957806374ce7e221461040f57600080fd5b8063248a9ca3116101645780633644e5151161013e5780633644e5151461033657806336568abe1461034b57806342966c681461036b5780635a3587051461038b57600080fd5b8063248a9ca3146102ca5780632f2ff15d146102fa578063313ce5671461031a57600080fd5b8063095ea7b3116101a0578063095ea7b31461024b5780630caac5101461026b57806318160ddd1461028b57806323b872dd146102aa57600080fd5b806301e33667146101d257806301ffc9a7146101f457806306fdde031461022957600080fd5b366101cd57005b600080fd5b3480156101de57600080fd5b506101f26101ed366004611951565b6105db565b005b34801561020057600080fd5b5061021461020f366004611992565b610656565b60405190151581526020015b60405180910390f35b34801561023557600080fd5b5061023e61068d565b6040516102209190611a0c565b34801561025757600080fd5b50610214610266366004611a1f565b61071f565b34801561027757600080fd5b506101f2610286366004611a4b565b610737565b34801561029757600080fd5b506002545b604051908152602001610220565b3480156102b657600080fd5b506102146102c5366004611951565b6107f0565b3480156102d657600080fd5b5061029c6102e5366004611a68565b60009081526008602052604090206001015490565b34801561030657600080fd5b506101f2610315366004611a81565b610816565b34801561032657600080fd5b5060405160128152602001610220565b34801561034257600080fd5b5061029c610841565b34801561035757600080fd5b506101f2610366366004611a81565b610850565b34801561037757600080fd5b506101f2610386366004611a68565b610883565b34801561039757600080fd5b506009546103a69061ffff1681565b60405161ffff9091168152602001610220565b3480156103c557600080fd5b506101f26103d4366004611a4b565b610890565b3480156103e557600080fd5b5061029c6103f4366004611a4b565b6001600160a01b031660009081526020819052604090205490565b34801561041b57600080fd5b50600954610435906201000090046001600160a01b031681565b6040516001600160a01b039091168152602001610220565b34801561045957600080fd5b506101f2610468366004611a1f565b610905565b34801561047957600080fd5b5061029c610488366004611a4b565b61091a565b34801561049957600080fd5b506104a2610938565b6040516102209796959493929190611ab1565b3480156104c157600080fd5b506102146104d0366004611a81565b61097e565b3480156104e157600080fd5b5060095461021490600160b01b900460ff1681565b34801561050257600080fd5b5061023e6109a9565b34801561051757600080fd5b5061029c600081565b34801561052c57600080fd5b5061021461053b366004611a1f565b6109b8565b34801561054c57600080fd5b506101f26109c6565b34801561056157600080fd5b506101f2610570366004611b4a565b610a0a565b34801561058157600080fd5b506101f2610590366004611a81565b610b44565b3480156105a157600080fd5b5061029c6105b0366004611bc1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6105e660003361097e565b61061657335b60405163472511eb60e11b81526001600160a01b0390911660048201526024015b60405180910390fd5b6001600160a01b03831661063d576040516308c956f960e41b815260040160405180910390fd5b6106516001600160a01b0383168483610b69565b505050565b60006001600160e01b03198216637965db0b60e01b148061068757506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606003805461069c90611bef565b80601f01602080910402602001604051908101604052809291908181526020018280546106c890611bef565b80156107155780601f106106ea57610100808354040283529160200191610715565b820191906000526020600020905b8154815290600101906020018083116106f857829003601f168201915b5050505050905090565b60003361072d818585610bbb565b5060019392505050565b600061074281610bc8565b6001600160a01b03821615801590610768575061076682635489b4f760e01b610bd2565b155b156107915760405163193ca27360e31b81526001600160a01b038316600482015260240161060d565b6009805462010000600160b01b031916620100006001600160a01b038516908102919091179091556040519081527fa424083f0552343a5cc0a1ac5f20c3f597751e9e206320078a8161ec295c20099060200160405180910390a15050565b6000336107fe858285610bee565b610809858585610c66565b60019150505b9392505050565b60008281526008602052604090206001015461083181610bc8565b61083b8383610cc5565b50505050565b600061084b610d59565b905090565b6001600160a01b03811633146108795760405163334bd91960e11b815260040160405180910390fd5b6106518282610e84565b61088d3382610ef1565b50565b61089b60003361097e565b6108a557336105ec565b6001600160a01b0381166108cc576040516308c956f960e41b815260040160405180910390fd5b6040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015610901573d6000803e3d6000fd5b5050565b610910823383610bee565b6109018282610ef1565b6001600160a01b038116600090815260076020526040812054610687565b60006060806000806000606061094c610f27565b610954610f54565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b60009182526008602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606004805461069c90611bef565b60003361072d818585610c66565b60006109d181610bc8565b6009805460ff60b01b191690556040517feadb24812ab3c9a55c774958184293ebdb6c7f6a2dbab11f397d80c86feb65d390600090a150565b83421115610a2e5760405163313c898160e11b81526004810185905260240161060d565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610a7b8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610ad682610f81565b90506000610ae682878787610fae565b9050896001600160a01b0316816001600160a01b031614610b2d576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161060d565b610b388a8a8a610bbb565b50505050505050505050565b600082815260086020526040902060010154610b5f81610bc8565b61083b8383610e84565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610651908490610fdc565b610651838383600161103f565b61088d8133611114565b6000610bdd8361114d565b801561080f575061080f8383611180565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461083b5781811015610c5757604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161060d565b61083b8484848403600061103f565b6001600160a01b038316610c9057604051634b637e8f60e11b81526000600482015260240161060d565b6001600160a01b038216610cba5760405163ec442f0560e01b81526000600482015260240161060d565b61065183838361120a565b6000610cd1838361097e565b610d515760008381526008602090815260408083206001600160a01b03861684529091529020805460ff19166001179055610d093390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610687565b506000610687565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610db257507f000000000000000000000000000000000000000000000000000000000000000046145b15610ddc57507f000000000000000000000000000000000000000000000000000000000000000090565b61084b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6000610e90838361097e565b15610d515760008381526008602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610687565b6001600160a01b038216610f1b57604051634b637e8f60e11b81526000600482015260240161060d565b6109018260008361120a565b606061084b7f00000000000000000000000000000000000000000000000000000000000000006005611368565b606061084b7f00000000000000000000000000000000000000000000000000000000000000006006611368565b6000610687610f8e610d59565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610fc088888888611413565b925092509250610fd082826114e2565b50909695505050505050565b6000610ff16001600160a01b0384168361159b565b905080516000141580156110165750808060200190518101906110149190611c29565b155b1561065157604051635274afe760e01b81526001600160a01b038416600482015260240161060d565b6001600160a01b0384166110695760405163e602df0560e01b81526000600482015260240161060d565b6001600160a01b03831661109357604051634a1406b160e11b81526000600482015260240161060d565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561083b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161110691815260200190565b60405180910390a350505050565b61111e828261097e565b6109015760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161060d565b6000611160826301ffc9a760e01b611180565b80156106875750611179826001600160e01b0319611180565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180516001600160e01b03166301ffc9a760e01b178152825192935060009283928392909183918a617530fa92503d915060005190508280156111f3575060208210155b80156111ff5750600081115b979650505050505050565b600954600160b01b900460ff161561129a5760006112487f73a70c1e5cb24d88d071f1df63ae336fa3414417ea9c5d0c9d771967cbebc2ab3361097e565b8061127857506112787f73a70c1e5cb24d88d071f1df63ae336fa3414417ea9c5d0c9d771967cbebc2ab8561097e565b90508061129857604051631dd2188d60e31b815260040160405180910390fd5b505b6000806112a9338686866115a9565b90925090508115611356576009546112d29086906201000090046001600160a01b031684611689565b6009546201000090046001600160a01b0316635489b4f783336040516001600160e01b031960e085901b16815260048101929092526001600160a01b039081166024830152808916604483015287166064820152608401600060405180830381600087803b15801561134357600080fd5b505af1925050508015611354575060015b505b611361858583611689565b5050505050565b606060ff83146113825761137b836117b3565b9050610687565b81805461138e90611bef565b80601f01602080910402602001604051908101604052809291908181526020018280546113ba90611bef565b80156114075780601f106113dc57610100808354040283529160200191611407565b820191906000526020600020905b8154815290600101906020018083116113ea57829003601f168201915b50505050509050610687565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561144e57506000915060039050826114d8565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156114a2573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166114ce575060009250600191508290506114d8565b9250600091508190505b9450945094915050565b60008260038111156114f6576114f6611c4b565b036114ff575050565b600182600381111561151357611513611c4b565b036115315760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561154557611545611c4b565b036115665760405163fce698f760e01b81526004810182905260240161060d565b600382600381111561157a5761157a611c4b565b03610901576040516335e2f38360e21b81526004810182905260240161060d565b606061080f838360006117f2565b6000806115d67f2a2246aa17eb93eaa9570fca27712522411a4fb0938901fc7da2b666ab8750568761097e565b8061160657506116067f2a2246aa17eb93eaa9570fca27712522411a4fb0938901fc7da2b666ab8750568561097e565b8061163657506116367f2a2246aa17eb93eaa9570fca27712522411a4fb0938901fc7da2b666ab8750568661097e565b15611642575081611680565b6009546000906201000090046001600160a01b0316156116685760095461ffff1661166b565b60005b61ffff16905061271084820204925050508082035b94509492505050565b6001600160a01b0383166116b45780600260008282546116a99190611c61565b909155506117269050565b6001600160a01b038316600090815260208190526040902054818110156117075760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161060d565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661174257600280548290039055611761565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117a691815260200190565b60405180910390a3505050565b606060006117c08361188f565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6060814710156118175760405163cd78605960e01b815230600482015260240161060d565b600080856001600160a01b031684866040516118339190611c82565b60006040518083038185875af1925050503d8060008114611870576040519150601f19603f3d011682016040523d82523d6000602084013e611875565b606091505b50915091506118858683836118b7565b9695505050505050565b600060ff8216601f81111561068757604051632cd44ac360e21b815260040160405180910390fd5b6060826118cc576118c782611913565b61080f565b81511580156118e357506001600160a01b0384163b155b1561190c57604051639996b31560e01b81526001600160a01b038516600482015260240161060d565b508061080f565b8051156119235780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b038116811461088d57600080fd5b60008060006060848603121561196657600080fd5b83356119718161193c565b925060208401356119818161193c565b929592945050506040919091013590565b6000602082840312156119a457600080fd5b81356001600160e01b03198116811461080f57600080fd5b60005b838110156119d75781810151838201526020016119bf565b50506000910152565b600081518084526119f88160208601602086016119bc565b601f01601f19169290920160200192915050565b60208152600061080f60208301846119e0565b60008060408385031215611a3257600080fd5b8235611a3d8161193c565b946020939093013593505050565b600060208284031215611a5d57600080fd5b813561080f8161193c565b600060208284031215611a7a57600080fd5b5035919050565b60008060408385031215611a9457600080fd5b823591506020830135611aa68161193c565b809150509250929050565b60ff60f81b881681526000602060e06020840152611ad260e084018a6119e0565b8381036040850152611ae4818a6119e0565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611b3857835183529284019291840191600101611b1c565b50909c9b505050505050505050505050565b600080600080600080600060e0888a031215611b6557600080fd5b8735611b708161193c565b96506020880135611b808161193c565b95506040880135945060608801359350608088013560ff81168114611ba457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215611bd457600080fd5b8235611bdf8161193c565b91506020830135611aa68161193c565b600181811c90821680611c0357607f821691505b602082108103611c2357634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215611c3b57600080fd5b8151801515811461080f57600080fd5b634e487b7160e01b600052602160045260246000fd5b8082018082111561068757634e487b7160e01b600052601160045260246000fd5b60008251611c948184602087016119bc565b919091019291505056fea26469706673582212200377dbce8d729aa2d538662ca5cc12988718b71dae383f71469b185c7c862e1264736f6c6343000818003395aa34ba7b6b1e6c2a69ce9a2d0b39db1fe3dacc81d71a126e733f13dbff1be2de28e05bc42c19f39401886f6e77098b289939162c84a03159fb6a4ecf0728cc000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000cecb8f27f4200f3a00000000000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000000000000000000000000000000000000000000550494e4755000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000550494e4755000000000000000000000000000000000000000000000000000000
0xa26469706673582212200377dbce8d729aa2d538662ca5cc12988718b71dae383f71469b185c7c862e1264736f6c6343000818003395aa34ba7b6b1e6c2a69ce9a2d0b39db1fe3dacc81d71a126e733f13dbff1be2de28e05bc42c19f39401886f6e77098b289939162c84a03159fb6a4ecf0728cc000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000cecb8f27f4200f3a00000000000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000000000000000000000000000000000000000000550494e4755000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000550494e4755000000000000000000000000000000000000000000000000000000