[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "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": [ { "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": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "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": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "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": "DOMAIN_SEPARATOR", "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": [], "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": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isBlacklisted", "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": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "status", "type": "bool" } ], "name": "setBlacklist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
61016060405234801562000011575f80fd5b50336040518060400160405280600a81526020017f47617473627920496e7500000000000000000000000000000000000000000000815250806040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600a81526020017f47617473627920496e75000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f47415453425900000000000000000000000000000000000000000000000000008152508160039081620000fd919062000a98565b5080600490816200010f919062000a98565b505050620001286005836200026d60201b90919060201c565b6101208181525050620001466006826200026d60201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a0818152505062000185620002c260201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250505050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000236575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200022d919062000bbf565b60405180910390fd5b62000247816200031e60201b60201c565b5062000267336c054f529ca52576bc6892000000620003e160201b60201c565b62000f43565b5f60208351101562000292576200028a836200046b60201b60201c565b9050620002bc565b82620002a483620004d560201b60201c565b5f019081620002b4919062000a98565b5060ff5f1b90505b92915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e0516101005146306040516020016200030395949392919062000c05565b60405160208183030381529060405280519060200120905090565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000454575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016200044b919062000bbf565b60405180910390fd5b620004675f8383620004de60201b60201c565b5050565b5f80829050601f81511115620004ba57826040517f305a27a9000000000000000000000000000000000000000000000000000000008152600401620004b1919062000cea565b60405180910390fd5b805181620004c89062000d3b565b5f1c175f1b915050919050565b5f819050919050565b60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156200056b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005629062000df8565b60405180910390fd5b60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615620005f8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005ef9062000e66565b60405180910390fd5b6200060b8383836200061060201b60201c565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000664578060025f82825462000657919062000eb3565b9250508190555062000735565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015620006f0578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620006e79392919062000eed565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200077e578060025f8282540392505081905550620007c8565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000827919062000f28565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620008b057607f821691505b602082108103620008c657620008c56200086b565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200092a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620008ed565b620009368683620008ed565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620009806200097a62000974846200094e565b62000957565b6200094e565b9050919050565b5f819050919050565b6200099b8362000960565b620009b3620009aa8262000987565b848454620008f9565b825550505050565b5f90565b620009c9620009bb565b620009d681848462000990565b505050565b5b81811015620009fd57620009f15f82620009bf565b600181019050620009dc565b5050565b601f82111562000a4c5762000a1681620008cc565b62000a2184620008de565b8101602085101562000a31578190505b62000a4962000a4085620008de565b830182620009db565b50505b505050565b5f82821c905092915050565b5f62000a6e5f198460080262000a51565b1980831691505092915050565b5f62000a88838362000a5d565b9150826002028217905092915050565b62000aa38262000834565b67ffffffffffffffff81111562000abf5762000abe6200083e565b5b62000acb825462000898565b62000ad882828562000a01565b5f60209050601f83116001811462000b0e575f841562000af9578287015190505b62000b05858262000a7b565b86555062000b74565b601f19841662000b1e86620008cc565b5f5b8281101562000b475784890151825560018201915060208501945060208101905062000b20565b8683101562000b67578489015162000b63601f89168262000a5d565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000ba78262000b7c565b9050919050565b62000bb98162000b9b565b82525050565b5f60208201905062000bd45f83018462000bae565b92915050565b5f819050919050565b62000bee8162000bda565b82525050565b62000bff816200094e565b82525050565b5f60a08201905062000c1a5f83018862000be3565b62000c29602083018762000be3565b62000c38604083018662000be3565b62000c47606083018562000bf4565b62000c56608083018462000bae565b9695505050505050565b5f82825260208201905092915050565b5f5b8381101562000c8f57808201518184015260208101905062000c72565b5f8484015250505050565b5f601f19601f8301169050919050565b5f62000cb68262000834565b62000cc2818562000c60565b935062000cd481856020860162000c70565b62000cdf8162000c9a565b840191505092915050565b5f6020820190508181035f83015262000d04818462000caa565b905092915050565b5f81519050919050565b5f819050602082019050919050565b5f62000d32825162000bda565b80915050919050565b5f62000d478262000d0c565b8262000d538462000d16565b905062000d608162000d25565b9250602082101562000da35762000d9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802620008ed565b831692505b5050919050565b7f53656e64657220697320626c61636b6c697374656400000000000000000000005f82015250565b5f62000de060158362000c60565b915062000ded8262000daa565b602082019050919050565b5f6020820190508181035f83015262000e118162000dd2565b9050919050565b7f526563697069656e7420697320626c61636b6c697374656400000000000000005f82015250565b5f62000e4e60188362000c60565b915062000e5b8262000e18565b602082019050919050565b5f6020820190508181035f83015262000e7f8162000e40565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000ebf826200094e565b915062000ecc836200094e565b925082820190508082111562000ee75762000ee662000e86565b5b92915050565b5f60608201905062000f025f83018662000bae565b62000f11602083018562000bf4565b62000f20604083018462000bf4565b949350505050565b5f60208201905062000f3d5f83018462000bf4565b92915050565b60805160a05160c05160e05161010051610120516101405161240662000f955f395f610f1901525f610ede01525f61131d01525f6112fc01525f610d1901525f610d6f01525f610d9801526124065ff3fe608060405234801561000f575f80fd5b5060043610610114575f3560e01c80637ecebe00116100a0578063a9059cbb1161006f578063a9059cbb146102d6578063d505accf14610306578063dd62ed3e14610322578063f2fde38b14610352578063fe575a871461036e57610114565b80637ecebe001461024657806384b0196e146102765780638da5cb5b1461029a57806395d89b41146102b857610114565b806323b872dd116100e757806323b872dd146101a0578063313ce567146101d05780633644e515146101ee57806370a082311461020c578063715018a61461023c57610114565b806306fdde0314610118578063095ea7b314610136578063153b0d1e1461016657806318160ddd14610182575b5f80fd5b61012061039e565b60405161012d9190611a06565b60405180910390f35b610150600480360381019061014b9190611ab7565b61042e565b60405161015d9190611b0f565b60405180910390f35b610180600480360381019061017b9190611b52565b610450565b005b61018a610622565b6040516101979190611b9f565b60405180910390f35b6101ba60048036038101906101b59190611bb8565b61062b565b6040516101c79190611b0f565b60405180910390f35b6101d8610659565b6040516101e59190611c23565b60405180910390f35b6101f6610661565b6040516102039190611c54565b60405180910390f35b61022660048036038101906102219190611c6d565b61066f565b6040516102339190611b9f565b60405180910390f35b6102446106b4565b005b610260600480360381019061025b9190611c6d565b6106c7565b60405161026d9190611b9f565b60405180910390f35b61027e6106d8565b6040516102919796959493929190611d98565b60405180910390f35b6102a261077d565b6040516102af9190611e1a565b60405180910390f35b6102c06107a5565b6040516102cd9190611a06565b60405180910390f35b6102f060048036038101906102eb9190611ab7565b610835565b6040516102fd9190611b0f565b60405180910390f35b610320600480360381019061031b9190611e87565b610857565b005b61033c60048036038101906103379190611f24565b61099c565b6040516103499190611b9f565b60405180910390f35b61036c60048036038101906103679190611c6d565b610a1e565b005b61038860048036038101906103839190611c6d565b610aa2565b6040516103959190611b0f565b60405180910390f35b6060600380546103ad90611f8f565b80601f01602080910402602001604051908101604052809291908181526020018280546103d990611f8f565b80156104245780601f106103fb57610100808354040283529160200191610424565b820191905f5260205f20905b81548152906001019060200180831161040757829003601f168201915b5050505050905090565b5f80610438610af4565b9050610445818585610afb565b600191505092915050565b610458610b0d565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036104c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104bd90612009565b60405180910390fd5b6104ce61077d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361053b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053290612071565b60405180910390fd5b80151560095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515036105ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c1906120d9565b60405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f600254905090565b5f80610635610af4565b9050610642858285610b94565b61064d858585610c26565b60019150509392505050565b5f6012905090565b5f61066a610d16565b905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6106bc610b0d565b6106c55f610dcc565b565b5f6106d182610e8f565b9050919050565b5f6060805f805f60606106e9610ed5565b6106f1610f10565b46305f801b5f67ffffffffffffffff8111156107105761070f6120f7565b5b60405190808252806020026020018201604052801561073e5781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546107b490611f8f565b80601f01602080910402602001604051908101604052809291908181526020018280546107e090611f8f565b801561082b5780601f106108025761010080835404028352916020019161082b565b820191905f5260205f20905b81548152906001019060200180831161080e57829003601f168201915b5050505050905090565b5f8061083f610af4565b905061084c818585610c26565b600191505092915050565b8342111561089c57836040517f627913020000000000000000000000000000000000000000000000000000000081526004016108939190611b9f565b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886108ca8c610f4b565b896040516020016108e096959493929190612124565b6040516020818303038152906040528051906020012090505f61090282610f9e565b90505f61091182878787610fb7565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461098557808a6040517f4b800e4600000000000000000000000000000000000000000000000000000000815260040161097c929190612183565b60405180910390fd5b6109908a8a8a610afb565b50505050505050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610a26610b0d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a96575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610a8d9190611e1a565b60405180910390fd5b610a9f81610dcc565b50565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f33905090565b610b088383836001610fe5565b505050565b610b15610af4565b73ffffffffffffffffffffffffffffffffffffffff16610b3361077d565b73ffffffffffffffffffffffffffffffffffffffff1614610b9257610b56610af4565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610b899190611e1a565b60405180910390fd5b565b5f610b9f848461099c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c205781811015610c11578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610c08939291906121aa565b60405180910390fd5b610c1f84848484035f610fe5565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c96575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610c8d9190611e1a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d06575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610cfd9190611e1a565b60405180910390fd5b610d118383836111b4565b505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16148015610d9157507f000000000000000000000000000000000000000000000000000000000000000046145b15610dbe577f00000000000000000000000000000000000000000000000000000000000000009050610dc9565b610dc66112d8565b90505b90565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6060610f0b60057f000000000000000000000000000000000000000000000000000000000000000061136d90919063ffffffff16565b905090565b6060610f4660067f000000000000000000000000000000000000000000000000000000000000000061136d90919063ffffffff16565b905090565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050559050919050565b5f610fb0610faa610d16565b8361141a565b9050919050565b5f805f80610fc78888888861145a565b925092509250610fd78282611541565b829350505050949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611055575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161104c9190611e1a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110c5575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016110bc9190611e1a565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156111ae578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516111a59190611b9f565b60405180910390a35b50505050565b60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561123e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123590612229565b60405180910390fd5b60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156112c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bf90612291565b60405180910390fd5b6112d38383836116a3565b505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000046306040516020016113529594939291906122af565b60405160208183030381529060405280519060200120905090565b606060ff5f1b831461138957611382836118bc565b9050611414565b81805461139590611f8f565b80601f01602080910402602001604051908101604052809291908181526020018280546113c190611f8f565b801561140c5780601f106113e35761010080835404028352916020019161140c565b820191905f5260205f20905b8154815290600101906020018083116113ef57829003601f168201915b505050505090505b92915050565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f805f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c1115611496575f600385925092509250611537565b5f6001888888886040515f81526020016040526040516114b99493929190612300565b6020604051602081039080840390855afa1580156114d9573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361152a575f60015f801b93509350935050611537565b805f805f1b935093509350505b9450945094915050565b5f600381111561155457611553612343565b5b82600381111561156757611566612343565b5b031561169f576001600381111561158157611580612343565b5b82600381111561159457611593612343565b5b036115cb576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156115df576115de612343565b5b8260038111156115f2576115f1612343565b5b0361163657805f1c6040517ffce698f700000000000000000000000000000000000000000000000000000000815260040161162d9190611b9f565b60405180910390fd5b60038081111561164957611648612343565b5b82600381111561165c5761165b612343565b5b0361169e57806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016116959190611c54565b60405180910390fd5b5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116f3578060025f8282546116e7919061239d565b925050819055506117c1565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561177c578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611773939291906121aa565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611808578060025f8282540392505081905550611852565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118af9190611b9f565b60405180910390a3505050565b60605f6118c88361192e565b90505f602067ffffffffffffffff8111156118e6576118e56120f7565b5b6040519080825280601f01601f1916602001820160405280156119185781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f8060ff835f1c169050601f811115611973576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156119b3578082015181840152602081019050611998565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6119d88261197c565b6119e28185611986565b93506119f2818560208601611996565b6119fb816119be565b840191505092915050565b5f6020820190508181035f830152611a1e81846119ce565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611a5382611a2a565b9050919050565b611a6381611a49565b8114611a6d575f80fd5b50565b5f81359050611a7e81611a5a565b92915050565b5f819050919050565b611a9681611a84565b8114611aa0575f80fd5b50565b5f81359050611ab181611a8d565b92915050565b5f8060408385031215611acd57611acc611a26565b5b5f611ada85828601611a70565b9250506020611aeb85828601611aa3565b9150509250929050565b5f8115159050919050565b611b0981611af5565b82525050565b5f602082019050611b225f830184611b00565b92915050565b611b3181611af5565b8114611b3b575f80fd5b50565b5f81359050611b4c81611b28565b92915050565b5f8060408385031215611b6857611b67611a26565b5b5f611b7585828601611a70565b9250506020611b8685828601611b3e565b9150509250929050565b611b9981611a84565b82525050565b5f602082019050611bb25f830184611b90565b92915050565b5f805f60608486031215611bcf57611bce611a26565b5b5f611bdc86828701611a70565b9350506020611bed86828701611a70565b9250506040611bfe86828701611aa3565b9150509250925092565b5f60ff82169050919050565b611c1d81611c08565b82525050565b5f602082019050611c365f830184611c14565b92915050565b5f819050919050565b611c4e81611c3c565b82525050565b5f602082019050611c675f830184611c45565b92915050565b5f60208284031215611c8257611c81611a26565b5b5f611c8f84828501611a70565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b611ccc81611c98565b82525050565b611cdb81611a49565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611d1381611a84565b82525050565b5f611d248383611d0a565b60208301905092915050565b5f602082019050919050565b5f611d4682611ce1565b611d508185611ceb565b9350611d5b83611cfb565b805f5b83811015611d8b578151611d728882611d19565b9750611d7d83611d30565b925050600181019050611d5e565b5085935050505092915050565b5f60e082019050611dab5f83018a611cc3565b8181036020830152611dbd81896119ce565b90508181036040830152611dd181886119ce565b9050611de06060830187611b90565b611ded6080830186611cd2565b611dfa60a0830185611c45565b81810360c0830152611e0c8184611d3c565b905098975050505050505050565b5f602082019050611e2d5f830184611cd2565b92915050565b611e3c81611c08565b8114611e46575f80fd5b50565b5f81359050611e5781611e33565b92915050565b611e6681611c3c565b8114611e70575f80fd5b50565b5f81359050611e8181611e5d565b92915050565b5f805f805f805f60e0888a031215611ea257611ea1611a26565b5b5f611eaf8a828b01611a70565b9750506020611ec08a828b01611a70565b9650506040611ed18a828b01611aa3565b9550506060611ee28a828b01611aa3565b9450506080611ef38a828b01611e49565b93505060a0611f048a828b01611e73565b92505060c0611f158a828b01611e73565b91505092959891949750929550565b5f8060408385031215611f3a57611f39611a26565b5b5f611f4785828601611a70565b9250506020611f5885828601611a70565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611fa657607f821691505b602082108103611fb957611fb8611f62565b5b50919050565b7f43616e6e6f7420626c61636b6c697374207a65726f20616464726573730000005f82015250565b5f611ff3601d83611986565b9150611ffe82611fbf565b602082019050919050565b5f6020820190508181035f83015261202081611fe7565b9050919050565b7f43616e6e6f7420626c61636b6c697374206f776e6572000000000000000000005f82015250565b5f61205b601683611986565b915061206682612027565b602082019050919050565b5f6020820190508181035f8301526120888161204f565b9050919050565b7f53746174757320616c72656164792073657400000000000000000000000000005f82015250565b5f6120c3601283611986565b91506120ce8261208f565b602082019050919050565b5f6020820190508181035f8301526120f0816120b7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f60c0820190506121375f830189611c45565b6121446020830188611cd2565b6121516040830187611cd2565b61215e6060830186611b90565b61216b6080830185611b90565b61217860a0830184611b90565b979650505050505050565b5f6040820190506121965f830185611cd2565b6121a36020830184611cd2565b9392505050565b5f6060820190506121bd5f830186611cd2565b6121ca6020830185611b90565b6121d76040830184611b90565b949350505050565b7f53656e64657220697320626c61636b6c697374656400000000000000000000005f82015250565b5f612213601583611986565b915061221e826121df565b602082019050919050565b5f6020820190508181035f83015261224081612207565b9050919050565b7f526563697069656e7420697320626c61636b6c697374656400000000000000005f82015250565b5f61227b601883611986565b915061228682612247565b602082019050919050565b5f6020820190508181035f8301526122a88161226f565b9050919050565b5f60a0820190506122c25f830188611c45565b6122cf6020830187611c45565b6122dc6040830186611c45565b6122e96060830185611b90565b6122f66080830184611cd2565b9695505050505050565b5f6080820190506123135f830187611c45565b6123206020830186611c14565b61232d6040830185611c45565b61233a6060830184611c45565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6123a782611a84565b91506123b283611a84565b92508282019050808211156123ca576123c9612370565b5b9291505056fea26469706673582212209828f375c6a933888cbab6febb9d43aed20aae214d08c8bb58e19c8f135f83e764736f6c63430008140033