[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "InvalidShortString", "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": [ { "indexed": true, "internalType": "address", "name": "delegator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "fromDelegate", "type": "address" }, { "indexed": true, "internalType": "address", "name": "toDelegate", "type": "address" } ], "name": "DelegateChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "delegate", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "previousBalance", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newBalance", "type": "uint256" } ], "name": "DelegateVotesChanged", "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" }, { "inputs": [], "name": "BURNER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "CLOCK_MODE", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "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": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint32", "name": "pos", "type": "uint32" } ], "name": "checkpoints", "outputs": [ { "components": [ { "internalType": "uint32", "name": "fromBlock", "type": "uint32" }, { "internalType": "uint224", "name": "votes", "type": "uint224" } ], "internalType": "struct ERC20Votes.Checkpoint", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "clock", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegatee", "type": "address" } ], "name": "delegate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegatee", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "delegateBySig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "delegates", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "uint256", "name": "timepoint", "type": "uint256" } ], "name": "getPastTotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "timepoint", "type": "uint256" } ], "name": "getPastVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "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": "address", "name": "account", "type": "address" } ], "name": "getVotes", "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": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "numCheckpoints", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "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": "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": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "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": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
6101606040523480156200001257600080fd5b50604051806040016040528060098152602001682a32b9ba2a37b5b2b760b91b81525080604051806040016040528060018152602001603160f81b815250604051806040016040528060098152602001682a32b9ba2a37b5b2b760b91b8152506040518060400160405280600981526020016805445535445524332360bc1b8152508160059080519060200190620000ac929190620009f4565b508051620000c2906006906020840190620009f4565b505050620000e0600783620001c360201b620010cd1790919060201c565b61012052620000fd816008620001c3602090811b620010cd17901c565b61014052815160208084019190912060e052815190820120610100524660a0526200018b60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6080525050503060601b60c052620001b0336b033b2e3c9fd0803ce800000062000217565b620001bd600033620002ce565b62000b92565b6000602083511015620001e357620001db83620002de565b905062000211565b82620001fa836200032160201b620011041760201c565b81516200020b9260200190620009f4565b5060ff90505b92915050565b6200022e82826200032460201b620011071760201c565b6001600160e01b0362000242620003f38216565b1115620002af5760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b60648201526084015b60405180910390fd5b620002c8600d620011d0620003f960201b17836200040e565b50505050565b620002da8282620005b7565b5050565b600080829050601f815111156200030c578260405163305a27a960e01b8152600401620002a6919062000a90565b8051620003198262000ae8565b179392505050565b90565b6001600160a01b0382166200037c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620002a6565b806004600082825462000390919062000b26565b90915550506001600160a01b0382166000818152600260209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620002da60008383620005fa565b60045490565b600062000407828462000b26565b9392505050565b825460009081908181156200045d5760008781526020902082016000190160408051808201909152905463ffffffff8116825264010000000090046001600160e01b0316602082015262000472565b60408051808201909152600080825260208201525b905080602001516001600160e01b031693506200049084868860201c565b9250600082118015620004bd5750620004a862000646565b65ffffffffffff16816000015163ffffffff16145b156200051157620004d9836200066360201b620011dc1760201c565b60008881526020902083016000190180546001600160e01b03929092166401000000000263ffffffff909216919091179055620005ad565b8660405180604001604052806200054a620005316200064660201b60201c565b65ffffffffffff16620006d260201b620012491760201c565b63ffffffff1681526020016200056b866200066360201b620011dc1760201c565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b620005ce82826200073960201b620012ae1760201c565b6000828152600160209081526040909120620005f59183906200134c620007d9821b17901c565b505050565b62000612838383620005f560201b6200078b1760201c565b6001600160a01b038381166000908152600b6020526040808220548584168352912054620005f592918216911683620007f0565b60006200065e436200092b60201b620013611760201c565b905090565b60006001600160e01b03821115620006ce5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401620002a6565b5090565b600063ffffffff821115620006ce5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401620002a6565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620002da576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620007953390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600062000407836001600160a01b03841662000994565b816001600160a01b0316836001600160a01b031614158015620008135750600081115b15620005f5576001600160a01b03831615620008a0576001600160a01b0383166000908152600c60209081526040822082916200085d9190620009e6901b620013c817856200040e565b91509150846001600160a01b031660008051602062003b7e833981519152838360405162000895929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615620005f5576001600160a01b0382166000908152600c6020908152604082208291620008e49190620003f9901b620011d017856200040e565b91509150836001600160a01b031660008051602062003b7e83398151915283836040516200091c929190918252602082015260400190565b60405180910390a25050505050565b600065ffffffffffff821115620006ce5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b6064820152608401620002a6565b6000818152600183016020526040812054620009dd5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000211565b50600062000211565b600062000407828462000b41565b82805462000a029062000b5b565b90600052602060002090601f01602090048101928262000a26576000855562000a71565b82601f1062000a4157805160ff191683800117855562000a71565b8280016001018555821562000a71579182015b8281111562000a7157825182559160200191906001019062000a54565b50620006ce9291505b80821115620006ce576000815560010162000a7a565b600060208083528351808285015260005b8181101562000abf5785810183015185820160400152820162000aa1565b8181111562000ad2576000604083870101525b50601f01601f1916929092016040019392505050565b8051602080830151919081101562000b0a576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111562000b3c5762000b3c62000b10565b500190565b60008282101562000b565762000b5662000b10565b500390565b600181811c9082168062000b7057607f821691505b6020821081141562000b0a57634e487b7160e01b600052602260045260246000fd5b60805160a05160c05160601c60e051610100516101205161014051612f8e62000bf06000396000610abd01526000610a920152600061174f0152600061172701526000611682015260006116ac015260006116d60152612f8e6000f3fe608060405234801561001057600080fd5b50600436106102925760003560e01c80637ecebe0011610160578063a217fddf116100d8578063d505accf1161008c578063d547741f11610071578063d547741f146105e4578063dd62ed3e146105f7578063f1127ed81461063057600080fd5b8063d505accf146105aa578063d5391393146105bd57600080fd5b8063a9059cbb116100bd578063a9059cbb14610571578063c3cda52014610584578063ca15c8731461059757600080fd5b8063a217fddf14610556578063a457c2d71461055e57600080fd5b806391d148541161012f57806395d89b411161011457806395d89b41146105285780639ab24eb0146105305780639dc29fac1461054357600080fd5b806391d14854146104d257806391ddadf41461050957600080fd5b80637ecebe001461047e57806384b0196e146104915780638e539e8c146104ac5780639010d07c146104bf57600080fd5b80633644e5151161020e5780634bf5d7e9116101c25780635c19a95c116101a75780635c19a95c1461041a5780636fcfff451461042d57806370a082311461045557600080fd5b80634bf5d7e9146103ce578063587cde1e146103d657600080fd5b806339509351116101f357806339509351146103955780633a46b1a8146103a857806340c10f19146103bb57600080fd5b80633644e5151461037a57806336568abe1461038257600080fd5b806323b872dd11610265578063282c51f31161024a578063282c51f31461032f5780632f2ff15d14610356578063313ce5671461036b57600080fd5b806323b872dd146102f9578063248a9ca31461030c57600080fd5b806301ffc9a71461029757806306fdde03146102bf578063095ea7b3146102d457806318160ddd146102e7575b600080fd5b6102aa6102a5366004612a07565b61066d565b60405190151581526020015b60405180910390f35b6102c7610698565b6040516102b69190612a89565b6102aa6102e2366004612ab8565b61072a565b6004545b6040519081526020016102b6565b6102aa610307366004612ae2565b610742565b6102eb61031a366004612b1e565b60009081526020819052604090206001015490565b6102eb7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b610369610364366004612b37565b610766565b005b604051601281526020016102b6565b6102eb610790565b610369610390366004612b37565b61079f565b6102aa6103a3366004612ab8565b610830565b6102eb6103b6366004612ab8565b61086f565b6103696103c9366004612ab8565b6108f8565b6102c761099f565b6104026103e4366004612b63565b6001600160a01b039081166000908152600b60205260409020541690565b6040516001600160a01b0390911681526020016102b6565b610369610428366004612b63565b610a37565b61044061043b366004612b63565b610a44565b60405163ffffffff90911681526020016102b6565b6102eb610463366004612b63565b6001600160a01b031660009081526002602052604090205490565b6102eb61048c366004612b63565b610a66565b610499610a84565b6040516102b69796959493929190612b7e565b6102eb6104ba366004612b1e565b610b0d565b6104026104cd366004612c14565b610b78565b6102aa6104e0366004612b37565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b610511610b90565b60405165ffffffffffff90911681526020016102b6565b6102c7610b9b565b6102eb61053e366004612b63565b610baa565b610369610551366004612ab8565b610c2c565b6102eb600081565b6102aa61056c366004612ab8565b610cd3565b6102aa61057f366004612ab8565b610d65565b610369610592366004612c47565b610d73565b6102eb6105a5366004612b1e565b610ea9565b6103696105b8366004612c9f565b610ec0565b6102eb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6103696105f2366004612b37565b611024565b6102eb610605366004612d09565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b61064361063e366004612d33565b611049565b60408051825163ffffffff1681526020928301516001600160e01b031692810192909252016102b6565b60006001600160e01b03198216635a05180f60e01b14806106925750610692826113d4565b92915050565b6060600580546106a790612d73565b80601f01602080910402602001604051908101604052809291908181526020018280546106d390612d73565b80156107205780601f106106f557610100808354040283529160200191610720565b820191906000526020600020905b81548152906001019060200180831161070357829003601f168201915b5050505050905090565b600033610738818585611409565b5060019392505050565b60003361075085828561152d565b61075b8585856115bf565b506001949350505050565b60008281526020819052604090206001015461078181611649565b61078b8383611653565b505050565b600061079a611675565b905090565b6001600160a01b03811633146108225760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b61082c82826117a0565b5050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909190610738908290869061086a908790612dbe565b611409565b6000610879610b90565b65ffffffffffff1682106108cf5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20667574757265206c6f6f6b7570000000000000006044820152606401610819565b6001600160a01b0383166000908152600c602052604090206108f190836117c2565b9392505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661092381336104e0565b6109955760405162461bcd60e51b815260206004820152603760248201527f42726565646572546f6b656e2e6f6e6c79486173526f6c653a206d73672e736560448201527f6e64657220646f6573206e6f74206861766520726f6c650000000000000000006064820152608401610819565b61078b83836118ab565b6060436109aa610b90565b65ffffffffffff16146109ff5760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a2062726f6b656e20636c6f636b206d6f64650000006044820152606401610819565b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b610a413382611942565b50565b6001600160a01b0381166000908152600c602052604081205461069290611249565b6001600160a01b038116600090815260096020526040812054610692565b600060608082808083610ab87f000000000000000000000000000000000000000000000000000000000000000060076119c9565b610ae37f000000000000000000000000000000000000000000000000000000000000000060086119c9565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000610b17610b90565b65ffffffffffff168210610b6d5760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20667574757265206c6f6f6b7570000000000000006044820152606401610819565b610692600d836117c2565b60008281526001602052604081206108f19083611a6d565b600061079a43611361565b6060600680546106a790612d73565b6001600160a01b0381166000908152600c60205260408120548015610c19576001600160a01b0383166000908152600c6020526040902080546000198301908110610bf757610bf7612dec565b60009182526020909120015464010000000090046001600160e01b0316610c1c565b60005b6001600160e01b03169392505050565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848610c5781336104e0565b610cc95760405162461bcd60e51b815260206004820152603760248201527f42726565646572546f6b656e2e6f6e6c79486173526f6c653a206d73672e736560448201527f6e64657220646f6573206e6f74206861766520726f6c650000000000000000006064820152608401610819565b61078b8383611a79565b3360008181526003602090815260408083206001600160a01b038716845290915281205490919083811015610d585760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610819565b61075b8286868403611409565b6000336107388185856115bf565b83421115610dc35760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e617475726520657870697265640000006044820152606401610819565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610e3d90610e359060a00160405160208183030381529060405280519060200120611a91565b858585611abe565b9050610e4881611ae6565b8614610e965760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e6365000000000000006044820152606401610819565b610ea08188611942565b50505050505050565b600081815260016020526040812061069290611b0e565b83421115610f105760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610819565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610f3f8c611ae6565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610f9a82611a91565b90506000610faa82878787611abe565b9050896001600160a01b0316816001600160a01b03161461100d5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610819565b6110188a8a8a611409565b50505050505050505050565b60008281526020819052604090206001015461103f81611649565b61078b83836117a0565b60408051808201909152600080825260208201526001600160a01b0383166000908152600c60205260409020805463ffffffff841690811061108d5761108d612dec565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b60006020835110156110e9576110e283611b18565b9050610692565b828281516110fa9260200190612977565b5060ff9050610692565b90565b6001600160a01b03821661115d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610819565b806004600082825461116f9190612dbe565b90915550506001600160a01b0382166000818152600260209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361082c60008383611b56565b60006108f18284612dbe565b60006001600160e01b038211156112455760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401610819565b5090565b600063ffffffff8211156112455760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610819565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1661082c576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556113083390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006108f1836001600160a01b038416611b88565b600065ffffffffffff8211156112455760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b6064820152608401610819565b60006108f18284612e02565b60006001600160e01b03198216637965db0b60e01b148061069257506301ffc9a760e01b6001600160e01b0319831614610692565b6001600160a01b03831661146b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610819565b6001600160a01b0382166114cc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610819565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526003602090815260408083209386168352929052205460001981146115b957818110156115ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610819565b6115b98484848403611409565b50505050565b6001600160a01b03821630141561163e5760405162461bcd60e51b815260206004820152603460248201527f42726565646572546f6b656e2e5f7472616e736665723a207472616e7366657260448201527f20746f2073656c66206e6f7420616c6c6f7765640000000000000000000000006064820152608401610819565b61078b838383611bd7565b610a418133611d88565b61165d82826112ae565b600082815260016020526040902061078b908261134c565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156116ce57507f000000000000000000000000000000000000000000000000000000000000000046145b156116f857507f000000000000000000000000000000000000000000000000000000000000000090565b61079a604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6117aa8282611dfb565b600082815260016020526040902061078b9082611e7a565b81546000908181600581111561181c5760006117dd84611e8f565b6117e79085612e02565b600088815260209020909150869082015463ffffffff16111561180c5780915061181a565b611817816001612dbe565b92505b505b808210156118695760006118308383611f74565b600088815260209020909150869082015463ffffffff16111561185557809150611863565b611860816001612dbe565b92505b5061181c565b8015611895576000868152602090208101600019015464010000000090046001600160e01b0316611898565b60005b6001600160e01b03169695505050505050565b6118b58282611107565b6004546001600160e01b0310156119345760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201527f766572666c6f77696e6720766f746573000000000000000000000000000000006064820152608401610819565b6115b9600d6111d083611f8f565b6001600160a01b038281166000818152600b60208181526040808420805460028452828620549490935287871673ffffffffffffffffffffffffffffffffffffffff198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46115b9828483612104565b606060ff83146119dc576110e283612241565b8180546119e890612d73565b80601f0160208091040260200160405190810160405280929190818152602001828054611a1490612d73565b8015611a615780601f10611a3657610100808354040283529160200191611a61565b820191906000526020600020905b815481529060010190602001808311611a4457829003601f168201915b50505050509050610692565b60006108f18383612280565b611a8382826122aa565b6115b9600d6113c883611f8f565b6000610692611a9e611675565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000611acf878787876123e5565b91509150611adc816124a9565b5095945050505050565b6001600160a01b03811660009081526009602052604090208054600181018255905b50919050565b6000610692825490565b600080829050601f81511115611b43578260405163305a27a960e01b81526004016108199190612a89565b8051611b4e82612e19565b179392505050565b6001600160a01b038381166000908152600b602052604080822054858416835291205461078b92918216911683612104565b6000818152600183016020526040812054611bcf57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610692565b506000610692565b6001600160a01b038316611c3b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610819565b6001600160a01b038216611c9d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610819565b6001600160a01b03831660009081526002602052604090205481811015611d155760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610819565b6001600160a01b0380851660008181526002602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d759086815260200190565b60405180910390a36115b9848484611b56565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1661082c57611db9816125f7565b611dc4836020612609565b604051602001611dd5929190612e3d565b60408051601f198184030181529082905262461bcd60e51b825261081991600401612a89565b6000828152602081815260408083206001600160a01b038516845290915290205460ff161561082c576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006108f1836001600160a01b0384166127b2565b600081611e9e57506000919050565b60006001611eab846128a5565b901c6001901b90506001818481611ec457611ec4612ebe565b048201901c90506001818481611edc57611edc612ebe565b048201901c90506001818481611ef457611ef4612ebe565b048201901c90506001818481611f0c57611f0c612ebe565b048201901c90506001818481611f2457611f24612ebe565b048201901c90506001818481611f3c57611f3c612ebe565b048201901c90506001818481611f5457611f54612ebe565b048201901c90506108f181828581611f6e57611f6e612ebe565b04612939565b6000611f836002848418612ed4565b6108f190848416612dbe565b82546000908190818115611fdc5760008781526020902082016000190160408051808201909152905463ffffffff8116825264010000000090046001600160e01b03166020820152611ff1565b60408051808201909152600080825260208201525b905080602001516001600160e01b0316935061201184868863ffffffff16565b925060008211801561203b5750612026610b90565b65ffffffffffff16816000015163ffffffff16145b1561208057612049836111dc565b60008881526020902083016000190180546001600160e01b03929092166401000000000263ffffffff9092169190911790556120fa565b8660405180604001604052806120a4612097610b90565b65ffffffffffff16611249565b63ffffffff1681526020016120b8866111dc565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b816001600160a01b0316836001600160a01b0316141580156121265750600081115b1561078b576001600160a01b038316156121b4576001600160a01b0383166000908152600c602052604081208190612161906113c885611f8f565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516121a9929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561078b576001600160a01b0382166000908152600c6020526040812081906121ea906111d085611f8f565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051612232929190918252602082015260400190565b60405180910390a25050505050565b6060600061224e8361294f565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600082600001828154811061229757612297612dec565b9060005260206000200154905092915050565b6001600160a01b03821661230a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610819565b6001600160a01b0382166000908152600260205260409020548181101561237e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610819565b6001600160a01b03831660008181526002602090815260408083208686039055600480548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361078b83600084611b56565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561241c57506000905060036124a0565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612470573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612499576000600192509250506124a0565b9150600090505b94509492505050565b60008160048111156124bd576124bd612ef6565b14156124c65750565b60018160048111156124da576124da612ef6565b14156125285760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610819565b600281600481111561253c5761253c612ef6565b141561258a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610819565b600381600481111561259e5761259e612ef6565b1415610a415760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610819565b60606106926001600160a01b03831660145b60606000612618836002612f0c565b612623906002612dbe565b67ffffffffffffffff81111561263b5761263b612dd6565b6040519080825280601f01601f191660200182016040528015612665576020820181803683370190505b509050600360fc1b8160008151811061268057612680612dec565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106126af576126af612dec565b60200101906001600160f81b031916908160001a90535060006126d3846002612f0c565b6126de906001612dbe565b90505b6001811115612763577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061271f5761271f612dec565b1a60f81b82828151811061273557612735612dec565b60200101906001600160f81b031916908160001a90535060049490941c9361275c81612f2b565b90506126e1565b5083156108f15760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610819565b6000818152600183016020526040812054801561289b5760006127d6600183612e02565b85549091506000906127ea90600190612e02565b905081811461284f57600086600001828154811061280a5761280a612dec565b906000526020600020015490508087600001848154811061282d5761282d612dec565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061286057612860612f42565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610692565b6000915050610692565b600080608083901c156128ba57608092831c92015b604083901c156128cc57604092831c92015b602083901c156128de57602092831c92015b601083901c156128f057601092831c92015b600883901c1561290257600892831c92015b600483901c1561291457600492831c92015b600283901c1561292657600292831c92015b600183901c156106925760010192915050565b600081831061294857816108f1565b5090919050565b600060ff8216601f81111561069257604051632cd44ac360e21b815260040160405180910390fd5b82805461298390612d73565b90600052602060002090601f0160209004810192826129a557600085556129eb565b82601f106129be57805160ff19168380011785556129eb565b828001600101855582156129eb579182015b828111156129eb5782518255916020019190600101906129d0565b506112459291505b8082111561124557600081556001016129f3565b600060208284031215612a1957600080fd5b81356001600160e01b0319811681146108f157600080fd5b60005b83811015612a4c578181015183820152602001612a34565b838111156115b95750506000910152565b60008151808452612a75816020860160208601612a31565b601f01601f19169290920160200192915050565b6020815260006108f16020830184612a5d565b80356001600160a01b0381168114612ab357600080fd5b919050565b60008060408385031215612acb57600080fd5b612ad483612a9c565b946020939093013593505050565b600080600060608486031215612af757600080fd5b612b0084612a9c565b9250612b0e60208501612a9c565b9150604084013590509250925092565b600060208284031215612b3057600080fd5b5035919050565b60008060408385031215612b4a57600080fd5b82359150612b5a60208401612a9c565b90509250929050565b600060208284031215612b7557600080fd5b6108f182612a9c565b60ff60f81b881681526000602060e081840152612b9e60e084018a612a5d565b8381036040850152612bb0818a612a5d565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015612c0257835183529284019291840191600101612be6565b50909c9b505050505050505050505050565b60008060408385031215612c2757600080fd5b50508035926020909101359150565b803560ff81168114612ab357600080fd5b60008060008060008060c08789031215612c6057600080fd5b612c6987612a9c565b95506020870135945060408701359350612c8560608801612c36565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215612cba57600080fd5b612cc388612a9c565b9650612cd160208901612a9c565b95506040880135945060608801359350612ced60808901612c36565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215612d1c57600080fd5b612d2583612a9c565b9150612b5a60208401612a9c565b60008060408385031215612d4657600080fd5b612d4f83612a9c565b9150602083013563ffffffff81168114612d6857600080fd5b809150509250929050565b600181811c90821680612d8757607f821691505b60208210811415611b0857634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115612dd157612dd1612da8565b500190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600082821015612e1457612e14612da8565b500390565b80516020808301519190811015611b085760001960209190910360031b1b16919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612e75816017850160208801612a31565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612eb2816028840160208801612a31565b01602801949350505050565b634e487b7160e01b600052601260045260246000fd5b600082612ef157634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052602160045260246000fd5b6000816000190483118215151615612f2657612f26612da8565b500290565b600081612f3a57612f3a612da8565b506000190190565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220f6d54a36c9e5cb77eda59ef2c7bd6b7a4bcf834c79a3ce35c2b75ee3b449880964736f6c63430008080033dec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724