[ { "inputs": [ { "internalType": "contract IDAO", "name": "_dao", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "components": [ { "internalType": "address[]", "name": "receivers", "type": "address[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "internalType": "struct GovernanceERC20.MintSettings", "name": "_mintSettings", "type": "tuple" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "dao", "type": "address" }, { "internalType": "address", "name": "where", "type": "address" }, { "internalType": "address", "name": "who", "type": "address" }, { "internalType": "bytes32", "name": "permissionId", "type": "bytes32" } ], "name": "DaoUnauthorized", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "receiversArrayLength", "type": "uint256" }, { "internalType": "uint256", "name": "amountsArrayLength", "type": "uint256" } ], "name": "MintSettingsArrayLengthMismatch", "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": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "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": [], "name": "MINT_PERMISSION_ID", "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": "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 ERC20VotesUpgradeable.Checkpoint", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "dao", "outputs": [ { "internalType": "contract IDAO", "name": "", "type": "address" } ], "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": [ { "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "getPastTotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "getPastVotes", "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": "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": "contract IDAO", "name": "_dao", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "components": [ { "internalType": "address[]", "name": "receivers", "type": "address[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "internalType": "struct GovernanceERC20.MintSettings", "name": "_mintSettings", "type": "tuple" } ], "name": "initialize", "outputs": [], "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": "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" } ]
60806040523480156200001157600080fd5b5060405162003ad838038062003ad8833981016040819052620000349162000d20565b62000042848484846200004c565b5050505062001037565b600054610100900460ff16158080156200006d5750600054600160ff909116105b806200009d57506200008a306200023f60201b62000eb11760201c565b1580156200009d575060005460ff166001145b620001065760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156200012a576000805461ff0019166101001790555b6020820151518251511462000165578151516020830151516040516398b1381560e01b815260048101929092526024820152604401620000fd565b6200017184846200024e565b6200017c84620002ba565b620001878562000344565b60005b825151811015620001f057620001e783600001518281518110620001b257620001b262000e85565b602002602001015184602001518381518110620001d357620001d362000e85565b6020026020010151620003c360201b60201c565b6001016200018a565b50801562000238576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6001600160a01b03163b151590565b600054610100900460ff16620002aa5760405162461bcd60e51b815260206004820152602b602482015260008051602062003a9883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000fd565b620002b6828262000477565b5050565b600054610100900460ff16620003165760405162461bcd60e51b815260206004820152602b602482015260008051602062003a9883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000fd565b6200034181604051806040016040528060018152602001603160f81b815250620004f560201b60201c565b50565b600054610100900460ff16620003a05760405162461bcd60e51b815260206004820152602b602482015260008051602062003a9883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000fd565b61013080546001600160a01b0319166001600160a01b0392909216919091179055565b620003da82826200056b60201b62000ec01760201c565b6001600160e01b03620003ee6200063a8216565b1115620004575760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b6064820152608401620000fd565b6200047161010062000f8d6200064060201b178362000657565b50505050565b600054610100900460ff16620004d35760405162461bcd60e51b815260206004820152602b602482015260008051602062003a9883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000fd565b6068620004e1838262000f29565b506069620004f0828262000f29565b505050565b600054610100900460ff16620005515760405162461bcd60e51b815260206004820152602b602482015260008051602062003a9883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000fd565b815160209283012081519190920120609791909155609855565b6001600160a01b038216620005c35760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620000fd565b8060676000828254620005d791906200100b565b90915550506001600160a01b0382166000818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620002b660008383620007e9565b60675490565b60006200064e82846200100b565b90505b92915050565b82546000908190818115620006b75762000686876200067860018562001021565b600091825260209091200190565b60408051808201909152905463ffffffff8116825264010000000090046001600160e01b03166020820152620006cc565b60408051808201909152600080825260208201525b905080602001516001600160e01b03169350620006ea84868860201c565b9250600082118015620007035750805163ffffffff1643145b156200075a576200071f836200085f60201b62000f991760201c565b62000731886200067860018662001021565b80546001600160e01b03929092166401000000000263ffffffff909216919091179055620007df565b8660405180604001604052806200077c43620008ce60201b6200101c1760201c565b63ffffffff1681526020016200079d866200085f60201b62000f991760201c565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b620008018383836200093560201b620010981760201c565b6001600160a01b03821615801590620008285750620008208262000981565b63ffffffff16155b80156200084d57506001600160a01b03828116600090815260fe602052604090205416155b15620004f057620004f08280620009b0565b60006001600160e01b03821115620008ca5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401620000fd565b5090565b600063ffffffff821115620008ca5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401620000fd565b6200094d838383620004f060201b620007941760201c565b6001600160a01b03838116600090815260fe6020526040808220548584168352912054620004f09291821691168362000a27565b6001600160a01b038116600090815260ff6020908152604082205462000651916200101c620008ce821b17901c565b6001600160a01b03828116600081815260fe6020818152604080842080546065845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4620004718284835b816001600160a01b0316836001600160a01b03161415801562000a4a5750600081115b15620004f0576001600160a01b0383161562000ad7576001600160a01b038316600090815260ff602090815260408220829162000a94919062000b62901b620010ca178562000657565b91509150846001600160a01b031660008051602062003ab8833981519152838360405162000acc929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615620004f0576001600160a01b038216600090815260ff602090815260408220829162000b1b919062000640901b62000f8d178562000657565b91509150836001600160a01b031660008051602062003ab8833981519152838360405162000b53929190918252602082015260400190565b60405180910390a25050505050565b60006200064e828462001021565b6001600160a01b03811681146200034157600080fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171562000bc15762000bc162000b86565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000bf25762000bf262000b86565b604052919050565b600082601f83011262000c0c57600080fd5b81516001600160401b0381111562000c285762000c2862000b86565b602062000c3e601f8301601f1916820162000bc7565b828152858284870101111562000c5357600080fd5b60005b8381101562000c7357858101830151828201840152820162000c56565b506000928101909101919091529392505050565b60006001600160401b0382111562000ca35762000ca362000b86565b5060051b60200190565b600082601f83011262000cbf57600080fd5b8151602062000cd862000cd28362000c87565b62000bc7565b82815260059290921b8401810191818101908684111562000cf857600080fd5b8286015b8481101562000d15578051835291830191830162000cfc565b509695505050505050565b6000806000806080858703121562000d3757600080fd5b845162000d448162000b70565b602086810151919550906001600160401b038082111562000d6457600080fd5b62000d7289838a0162000bfa565b9550604088015191508082111562000d8957600080fd5b62000d9789838a0162000bfa565b9450606088015191508082111562000dae57600080fd5b908701906040828a03121562000dc357600080fd5b62000dcd62000b9c565b82518281111562000ddd57600080fd5b8301601f81018b1362000def57600080fd5b805162000e0062000cd28262000c87565b81815260059190911b8201860190868101908d83111562000e2057600080fd5b928701925b8284101562000e4b57835162000e3b8162000b70565b8252928701929087019062000e25565b8452505050828401518281111562000e6257600080fd5b62000e708b82860162000cad565b85830152508094505050505092959194509250565b634e487b7160e01b600052603260045260246000fd5b600181811c9082168062000eb057607f821691505b60208210810362000ed157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004f057600081815260208120601f850160051c8101602086101562000f005750805b601f850160051c820191505b8181101562000f215782815560010162000f0c565b505050505050565b81516001600160401b0381111562000f455762000f4562000b86565b62000f5d8162000f56845462000e9b565b8462000ed7565b602080601f83116001811462000f95576000841562000f7c5750858301515b600019600386901b1c1916600185901b17855562000f21565b600085815260208120601f198616915b8281101562000fc65788860151825594840194600190910190840162000fa5565b508582101562000fe55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8082018082111562000651576200065162000ff5565b8181038181111562000651576200065162000ff5565b612a5180620010476000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636fcfff45116100f9578063a9059cbb11610097578063d505accf11610071578063d505accf146103dc578063dab27fa9146103ef578063dd62ed3e14610402578063f1127ed81461043b57600080fd5b8063a9059cbb1461038f578063b2d2989c146103a2578063c3cda520146103c957600080fd5b80638e539e8c116100d35780638e539e8c1461034e57806395d89b41146103615780639ab24eb014610369578063a457c2d71461037c57600080fd5b80636fcfff45146102ea57806370a08231146103125780637ecebe001461033b57600080fd5b80633644e5151161016657806340c10f191161014057806340c10f19146102705780634162169f14610285578063587cde1e146102ab5780635c19a95c146102d757600080fd5b80633644e51514610242578063395093511461024a5780633a46b1a81461025d57600080fd5b806318160ddd1161019757806318160ddd1461020e57806323b872dd14610220578063313ce5671461023357600080fd5b806301ffc9a7146101be57806306fdde03146101e6578063095ea7b3146101fb575b600080fd5b6101d16101cc366004612294565b610478565b60405190151581526020015b60405180910390f35b6101ee6105b1565b6040516101dd91906122be565b6101d1610209366004612321565b610643565b6067545b6040519081526020016101dd565b6101d161022e36600461234d565b61065b565b604051601281526020016101dd565b61021261067f565b6101d1610258366004612321565b61068e565b61021261026b366004612321565b6106cd565b61028361027e366004612321565b61074c565b005b610130546001600160a01b03165b6040516001600160a01b0390911681526020016101dd565b6102936102b936600461238e565b6001600160a01b03908116600090815260fe60205260409020541690565b6102836102e536600461238e565b610799565b6102fd6102f836600461238e565b6107a6565b60405163ffffffff90911681526020016101dd565b61021261032036600461238e565b6001600160a01b031660009081526065602052604090205490565b61021261034936600461238e565b6107c8565b61021261035c3660046123ab565b6107e6565b6101ee610843565b61021261037736600461238e565b610852565b6101d161038a366004612321565b6108d9565b6101d161039d366004612321565b610983565b6102127fb737b436e6cc542520cb79ec04245c720c38eebfa56d9e2d99b043979db20e4c81565b6102836103d73660046123da565b610991565b6102836103ea366004612434565b610ac7565b6102836103fd366004612611565b610c2b565b61021261041036600461275b565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205490565b61044e610449366004612794565b610e2d565b60408051825163ffffffff1681526020928301516001600160e01b031692810192909252016101dd565b60006001600160e01b031982167f36372b070000000000000000000000000000000000000000000000000000000014806104db57506001600160e01b031982167f9d8ff7da00000000000000000000000000000000000000000000000000000000145b8061050f57506001600160e01b031982167fa219a02500000000000000000000000000000000000000000000000000000000145b8061054357506001600160e01b031982167fe90fb3f600000000000000000000000000000000000000000000000000000000145b8061057757506001600160e01b031982167f40c10f1900000000000000000000000000000000000000000000000000000000145b806105ab57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b6060606880546105c0906127cb565b80601f01602080910402602001604051908101604052809291908181526020018280546105ec906127cb565b80156106395780601f1061060e57610100808354040283529160200191610639565b820191906000526020600020905b81548152906001019060200180831161061c57829003601f168201915b5050505050905090565b6000336106518185856110d6565b5060019392505050565b60003361066985828561122e565b6106748585856112c0565b506001949350505050565b60006106896114ba565b905090565b3360008181526066602090815260408083206001600160a01b038716845290915281205490919061065190829086906106c8908790612815565b6110d6565b60004382106107235760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e65640060448201526064015b60405180910390fd5b6001600160a01b038316600090815260ff602052604090206107459083611535565b9392505050565b610130547fb737b436e6cc542520cb79ec04245c720c38eebfa56d9e2d99b043979db20e4c9061078a906001600160a01b031630338460003661162c565b610794838361171a565b505050565b6107a333826117b2565b50565b6001600160a01b038116600090815260ff60205260408120546105ab9061101c565b6001600160a01b038116600090815260cb60205260408120546105ab565b60004382106108375760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e656400604482015260640161071a565b6105ab61010083611535565b6060606980546105c0906127cb565b6001600160a01b038116600090815260ff602052604081205480156108c6576001600160a01b038316600090815260ff60205260409020610894600183612828565b815481106108a4576108a461283b565b60009182526020909120015464010000000090046001600160e01b03166108c9565b60005b6001600160e01b03169392505050565b3360008181526066602090815260408083206001600160a01b0387168452909152812054909190838110156109765760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161071a565b61067482868684036110d6565b6000336106518185856112c0565b834211156109e15760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e61747572652065787069726564000000604482015260640161071a565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090610a5b90610a539060a00160405160208183030381529060405280519060200120611844565b8585856118ad565b9050610a66816118d5565b8614610ab45760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e636500000000000000604482015260640161071a565b610abe81886117b2565b50505050505050565b83421115610b175760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015260640161071a565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610b468c6118d5565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610ba182611844565b90506000610bb1828787876118ad565b9050896001600160a01b0316816001600160a01b031614610c145760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260640161071a565b610c1f8a8a8a6110d6565b50505050505050505050565b600054610100900460ff1615808015610c4b5750600054600160ff909116105b80610c655750303b158015610c65575060005460ff166001145b610cd75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161071a565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610d18576000805461ff0019166101001790555b60208201515182515114610d6a578151516020830151516040517f98b138150000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161071a565b610d7484846118fd565b610d7d84611972565b610d8685611a1c565b60005b825151811015610ddf57610dd783600001518281518110610dac57610dac61283b565b602002602001015184602001518381518110610dca57610dca61283b565b602002602001015161171a565b600101610d89565b508015610e26576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60408051808201909152600080825260208201526001600160a01b038316600090815260ff60205260409020805463ffffffff8416908110610e7157610e7161283b565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b6001600160a01b03163b151590565b6001600160a01b038216610f165760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161071a565b8060676000828254610f289190612815565b90915550506001600160a01b0382166000818152606560209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610f8960008383611ac2565b5050565b60006107458284612815565b60006001600160e01b038211156110185760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f3234206269747300000000000000000000000000000000000000000000000000606482015260840161071a565b5090565b600063ffffffff8211156110185760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f3220626974730000000000000000000000000000000000000000000000000000606482015260840161071a565b6001600160a01b03838116600090815260fe602052604080822054858416835291205461079492918216911683611b24565b60006107458284612828565b6001600160a01b0383166111515760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161071a565b6001600160a01b0382166111cd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161071a565b6001600160a01b0383811660008181526066602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526066602090815260408083209386168352929052205460001981146112ba57818110156112ad5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161071a565b6112ba84848484036110d6565b50505050565b6001600160a01b03831661133c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161071a565b6001600160a01b0382166113b85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161071a565b6001600160a01b038316600090815260656020526040902054818110156114475760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161071a565b6001600160a01b0380851660008181526065602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114a79086815260200190565b60405180910390a36112ba848484611ac2565b60006106897f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6114e960975490565b6098546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b81546000908181600581111561158f57600061155084611c61565b61155a9085612828565b600088815260209020909150869082015463ffffffff16111561157f5780915061158d565b61158a816001612815565b92505b505b808210156115dc5760006115a38383611d49565b600088815260209020909150869082015463ffffffff1611156115c8578091506115d6565b6115d3816001612815565b92505b5061158f565b8015611616576115ff866115f1600184612828565b600091825260209091200190565b5464010000000090046001600160e01b0316611619565b60005b6001600160e01b03169695505050505050565b6040517ffdef91060000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063fdef9106906116799088908890889088908890600401612851565b602060405180830381865afa158015611696573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ba91906128a5565b611712576040517f32dbe3b40000000000000000000000000000000000000000000000000000000081526001600160a01b0380881660048301528087166024830152851660448201526064810184905260840161071a565b505050505050565b6117248282610ec0565b6067546001600160e01b0310156117a35760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201527f766572666c6f77696e6720766f74657300000000000000000000000000000000606482015260840161071a565b6112ba610100610f8d83611d64565b6001600160a01b03828116600081815260fe6020818152604080842080546065845282862054949093528787167fffffffffffffffffffffffff00000000000000000000000000000000000000008416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46112ba828483611b24565b60006105ab6118516114ba565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60008060006118be87878787611eb8565b915091506118cb81611f7c565b5095945050505050565b6001600160a01b038116600090815260cb602052604090208054600181018255905b50919050565b600054610100900460ff166119685760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161071a565b610f8982826120e1565b600054610100900460ff166119dd5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161071a565b6107a3816040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250612165565b600054610100900460ff16611a875760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161071a565b61013080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b611acd838383611098565b6001600160a01b03821615801590611af15750611ae9826107a6565b63ffffffff16155b8015611b1557506001600160a01b03828116600090815260fe602052604090205416155b156107945761079482836117b2565b816001600160a01b0316836001600160a01b031614158015611b465750600081115b15610794576001600160a01b03831615611bd4576001600160a01b038316600090815260ff602052604081208190611b81906110ca85611d64565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611bc9929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610794576001600160a01b038216600090815260ff602052604081208190611c0a90610f8d85611d64565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611c52929190918252602082015260400190565b60405180910390a25050505050565b600081600003611c7357506000919050565b60006001611c80846121ea565b901c6001901b90506001818481611c9957611c996128c7565b048201901c90506001818481611cb157611cb16128c7565b048201901c90506001818481611cc957611cc96128c7565b048201901c90506001818481611ce157611ce16128c7565b048201901c90506001818481611cf957611cf96128c7565b048201901c90506001818481611d1157611d116128c7565b048201901c90506001818481611d2957611d296128c7565b048201901c905061074581828581611d4357611d436128c7565b0461227e565b6000611d5860028484186128dd565b61074590848416612815565b82546000908190818115611db157611d81876115f1600185612828565b60408051808201909152905463ffffffff8116825264010000000090046001600160e01b03166020820152611dc6565b60408051808201909152600080825260208201525b905080602001516001600160e01b03169350611de684868863ffffffff16565b9250600082118015611dfe5750805163ffffffff1643145b15611e4357611e0c83610f99565b611e1b886115f1600186612828565b80546001600160e01b03929092166401000000000263ffffffff909216919091179055611eae565b866040518060400160405280611e584361101c565b63ffffffff168152602001611e6c86610f99565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b5050935093915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611eef5750600090506003611f73565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611f43573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611f6c57600060019250925050611f73565b9150600090505b94509492505050565b6000816004811115611f9057611f906128ff565b03611f985750565b6001816004811115611fac57611fac6128ff565b03611ff95760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161071a565b600281600481111561200d5761200d6128ff565b0361205a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161071a565b600381600481111561206e5761206e6128ff565b036107a35760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161071a565b600054610100900460ff1661214c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161071a565b6068612158838261295b565b506069610794828261295b565b600054610100900460ff166121d05760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161071a565b815160209283012081519190920120609791909155609855565b600080608083901c156121ff57608092831c92015b604083901c1561221157604092831c92015b602083901c1561222357602092831c92015b601083901c1561223557601092831c92015b600883901c1561224757600892831c92015b600483901c1561225957600492831c92015b600283901c1561226b57600292831c92015b600183901c156105ab5760010192915050565b600081831061228d5781610745565b5090919050565b6000602082840312156122a657600080fd5b81356001600160e01b03198116811461074557600080fd5b600060208083528351808285015260005b818110156122eb578581018301518582016040015282016122cf565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146107a357600080fd5b6000806040838503121561233457600080fd5b823561233f8161230c565b946020939093013593505050565b60008060006060848603121561236257600080fd5b833561236d8161230c565b9250602084013561237d8161230c565b929592945050506040919091013590565b6000602082840312156123a057600080fd5b81356107458161230c565b6000602082840312156123bd57600080fd5b5035919050565b803560ff811681146123d557600080fd5b919050565b60008060008060008060c087890312156123f357600080fd5b86356123fe8161230c565b9550602087013594506040870135935061241a606088016123c4565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561244f57600080fd5b873561245a8161230c565b9650602088013561246a8161230c565b95506040880135945060608801359350612486608089016123c4565b925060a0880135915060c0880135905092959891949750929550565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156124db576124db6124a2565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561250a5761250a6124a2565b604052919050565b600082601f83011261252357600080fd5b813567ffffffffffffffff81111561253d5761253d6124a2565b6125506020601f19601f840116016124e1565b81815284602083860101111561256557600080fd5b816020850160208301376000918101602001919091529392505050565b600067ffffffffffffffff82111561259c5761259c6124a2565b5060051b60200190565b600082601f8301126125b757600080fd5b813560206125cc6125c783612582565b6124e1565b82815260059290921b840181019181810190868411156125eb57600080fd5b8286015b8481101561260657803583529183019183016125ef565b509695505050505050565b6000806000806080858703121561262757600080fd5b84356126328161230c565b935060208581013567ffffffffffffffff8082111561265057600080fd5b61265c89838a01612512565b9550604088013591508082111561267257600080fd5b61267e89838a01612512565b9450606088013591508082111561269457600080fd5b908701906040828a0312156126a857600080fd5b6126b06124b8565b8235828111156126bf57600080fd5b8301601f81018b136126d057600080fd5b80356126de6125c782612582565b81815260059190911b8201860190868101908d8311156126fd57600080fd5b928701925b828410156127245783356127158161230c565b82529287019290870190612702565b8452505050828401358281111561273a57600080fd5b6127468b8286016125a6565b85830152508094505050505092959194509250565b6000806040838503121561276e57600080fd5b82356127798161230c565b915060208301356127898161230c565b809150509250929050565b600080604083850312156127a757600080fd5b82356127b28161230c565b9150602083013563ffffffff8116811461278957600080fd5b600181811c908216806127df57607f821691505b6020821081036118f757634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156105ab576105ab6127ff565b818103818111156105ab576105ab6127ff565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b03808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b6000602082840312156128b757600080fd5b8151801515811461074557600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826128fa57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052602160045260246000fd5b601f82111561079457600081815260208120601f850160051c8101602086101561293c5750805b601f850160051c820191505b8181101561171257828155600101612948565b815167ffffffffffffffff811115612975576129756124a2565b6129898161298384546127cb565b84612915565b602080601f8311600181146129be57600084156129a65750858301515b600019600386901b1c1916600185901b178555611712565b600085815260208120601f198616915b828110156129ed578886015182559484019460019091019084016129ce565b5085821015612a0b5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea26469706673582212208cfc50d955157b2d12f69f52f4a11a8378a311cac18997d45a259ba39da73e2964736f6c63430008110033496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069dec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000