test-contracts-sovryn
Version:
Smart contracts for the Sovryn protocol and external integrations.
797 lines • 87.8 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "GovernorAlphaMockup",
"sourceName": "contracts/mockup/GovernorAlphaMockup.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "timelock_",
"type": "address"
},
{
"internalType": "address",
"name": "staking_",
"type": "address"
},
{
"internalType": "address",
"name": "guardian_",
"type": "address"
},
{
"internalType": "uint96",
"name": "quorumVotes_",
"type": "uint96"
},
{
"internalType": "uint96",
"name": "_minPercentageVotes",
"type": "uint96"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "ProposalCanceled",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "proposer",
"type": "address"
},
{
"indexed": false,
"internalType": "address[]",
"name": "targets",
"type": "address[]"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"indexed": false,
"internalType": "string[]",
"name": "signatures",
"type": "string[]"
},
{
"indexed": false,
"internalType": "bytes[]",
"name": "calldatas",
"type": "bytes[]"
},
{
"indexed": false,
"internalType": "uint256",
"name": "startBlock",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "endBlock",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "description",
"type": "string"
}
],
"name": "ProposalCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "ProposalExecuted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "eta",
"type": "uint256"
}
],
"name": "ProposalQueued",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "voter",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bool",
"name": "support",
"type": "bool"
},
{
"indexed": false,
"internalType": "uint256",
"name": "votes",
"type": "uint256"
}
],
"name": "VoteCast",
"type": "event"
},
{
"constant": true,
"inputs": [],
"name": "BALLOT_TYPEHASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "DOMAIN_TYPEHASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "NAME",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "__abdicate",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "__acceptAdmin",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "newPendingAdmin",
"type": "address"
},
{
"internalType": "uint256",
"name": "eta",
"type": "uint256"
}
],
"name": "__executeSetTimelockPendingAdmin",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "newPendingAdmin",
"type": "address"
},
{
"internalType": "uint256",
"name": "eta",
"type": "uint256"
}
],
"name": "__queueSetTimelockPendingAdmin",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "cancel",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "bool",
"name": "support",
"type": "bool"
}
],
"name": "castVote",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "bool",
"name": "support",
"type": "bool"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "castVoteBySig",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "execute",
"outputs": [],
"payable": true,
"stateMutability": "payable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "getActions",
"outputs": [
{
"internalType": "address[]",
"name": "targets",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"internalType": "string[]",
"name": "signatures",
"type": "string[]"
},
{
"internalType": "bytes[]",
"name": "calldatas",
"type": "bytes[]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "address",
"name": "voter",
"type": "address"
}
],
"name": "getReceipt",
"outputs": [
{
"components": [
{
"internalType": "bool",
"name": "hasVoted",
"type": "bool"
},
{
"internalType": "bool",
"name": "support",
"type": "bool"
},
{
"internalType": "uint96",
"name": "votes",
"type": "uint96"
}
],
"internalType": "struct GovernorAlpha.Receipt",
"name": "",
"type": "tuple"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "guardian",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "latestProposalIds",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "majorityPercentageVotes",
"outputs": [
{
"internalType": "uint96",
"name": "",
"type": "uint96"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "proposalCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "proposalMaxOperations",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "proposalThreshold",
"outputs": [
{
"internalType": "uint96",
"name": "",
"type": "uint96"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "proposals",
"outputs": [
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint32",
"name": "startBlock",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "endBlock",
"type": "uint32"
},
{
"internalType": "uint96",
"name": "forVotes",
"type": "uint96"
},
{
"internalType": "uint96",
"name": "againstVotes",
"type": "uint96"
},
{
"internalType": "uint96",
"name": "quorum",
"type": "uint96"
},
{
"internalType": "uint96",
"name": "majorityPercentage",
"type": "uint96"
},
{
"internalType": "uint64",
"name": "eta",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "startTime",
"type": "uint64"
},
{
"internalType": "bool",
"name": "canceled",
"type": "bool"
},
{
"internalType": "bool",
"name": "executed",
"type": "bool"
},
{
"internalType": "address",
"name": "proposer",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address[]",
"name": "targets",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"internalType": "string[]",
"name": "signatures",
"type": "string[]"
},
{
"internalType": "bytes[]",
"name": "calldatas",
"type": "bytes[]"
},
{
"internalType": "string",
"name": "description",
"type": "string"
}
],
"name": "propose",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "queue",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint256[]",
"name": "proposalIds",
"type": "uint256[]"
}
],
"name": "queueProposals",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "quorumPercentageVotes",
"outputs": [
{
"internalType": "uint96",
"name": "",
"type": "uint96"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "quorumVotes",
"outputs": [
{
"internalType": "uint96",
"name": "",
"type": "uint96"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "staking",
"outputs": [
{
"internalType": "contract IStaking",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "state",
"outputs": [
{
"internalType": "enum GovernorAlpha.ProposalState",
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "timelock",
"outputs": [
{
"internalType": "contract ITimelock",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "votingDelay",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "votingPeriod",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
}
],
"bytecode": "0x60806040523480156200001157600080fd5b50604051620045b5380380620045b58339810160408190526200003491620000de565b600080546001600160a01b03199081166001600160a01b039788161790915560018054821695871695909517909455600280549094169290941691909117909155600480546001600160601b0319166001600160601b0392831617600160601b600160c01b0319166c010000000000000000000000009290931691909102919091179055620001a1565b8051620000cb816200017c565b92915050565b8051620000cb8162000196565b600080600080600060a08688031215620000f757600080fd5b6000620001058888620000be565b95505060206200011888828901620000be565b94505060406200012b88828901620000be565b93505060606200013e88828901620000d1565b92505060806200015188828901620000d1565b9150509295509295909350565b60006001600160a01b038216620000cb565b6001600160601b031690565b62000187816200015e565b81146200019357600080fd5b50565b620001878162000170565b61440480620001b16000396000f3fe6080604052600436106101cd5760003560e01c8063760fbc13116100f7578063d33219b411610095578063deaaa7cc11610064578063deaaa7cc146104e4578063e23a9a52146104f9578063e265379014610526578063fe0d94c11461053b576101cd565b8063d33219b41461047a578063da35c6641461048f578063da95691a146104a4578063ddf0b009146104c4576101cd565b8063a3f4df7e116100d1578063a3f4df7e14610419578063b2b0d91f1461043b578063b58131b014610450578063b9a6196114610465576101cd565b8063760fbc13146103e45780637bdbe4d01461021357806391500671146103f9576101cd565b8063328dd9821161016f578063452a93201161013e578063452a9320146103605780634634c61f146103825780634b9c9a27146103a25780634cf088d9146103c2576101cd565b8063328dd982146102ce5780633932abb1146102fe5780633e4f49e61461031357806340e58ee514610340576101cd565b806317977c61116101ab57806317977c611461025757806320606b701461027757806321f43e421461028c57806324bc1a64146102ac576101cd565b8063013cf08b146101d257806302a251a31461021357806315373e3d14610235575b600080fd5b3480156101de57600080fd5b506101f26101ed366004612cef565b61054e565b60405161020a9c9b9a99989796959493929190613ec8565b60405180910390f35b34801561021f57600080fd5b506102286105ee565b60405161020a9190613bda565b34801561024157600080fd5b50610255610250366004612d3d565b6105f4565b005b34801561026357600080fd5b50610228610272366004612af7565b610603565b34801561028357600080fd5b50610228610615565b34801561029857600080fd5b506102556102a7366004612b1d565b61062c565b3480156102b857600080fd5b506102c1610713565b60405161020a9190613f89565b3480156102da57600080fd5b506102ee6102e9366004612cef565b61081a565b60405161020a9493929190613b8d565b34801561030a57600080fd5b50610228610aa9565b34801561031f57600080fd5b5061033361032e366004612cef565b610aae565b60405161020a9190613c88565b34801561034c57600080fd5b5061025561035b366004612cef565b610d36565b34801561036c57600080fd5b50610375610f0e565b60405161020a9190613a01565b34801561038e57600080fd5b5061025561039d366004612d6d565b610f1d565b3480156103ae57600080fd5b506102556103bd366004612c3e565b6110b0565b3480156103ce57600080fd5b506103d76110de565b60405161020a9190613c7a565b3480156103f057600080fd5b506102556110ed565b34801561040557600080fd5b50610255610414366004612b1d565b611129565b34801561042557600080fd5b5061042e6111fe565b60405161020a9190613c96565b34801561044757600080fd5b506102c161122f565b34801561045c57600080fd5b506102c161123e565b34801561047157600080fd5b5061025561130b565b34801561048657600080fd5b506103d7611390565b34801561049b57600080fd5b5061022861139f565b3480156104b057600080fd5b506102286104bf366004612b57565b6113a5565b3480156104d057600080fd5b506102556104df366004612cef565b611a2c565b3480156104f057600080fd5b50610228611cdc565b34801561050557600080fd5b50610519610514366004612d0d565b611ce8565b60405161020a9190613df7565b34801561053257600080fd5b506102c1611d57565b610255610549366004612cef565b611d6d565b6005602052600090815260409020805460018201546002830154600390930154919263ffffffff808316936401000000008404909116926001600160601b03600160401b808304821694600160a01b90930482169383831693600160601b8104909316926001600160401b03600160c01b9091048116929082169160ff918104821691600160481b820416906001600160a01b03600160501b909104168c565b600a5b90565b6105ff338383611f4f565b5050565b60066020526000908152604090205481565b604051610621906139eb565b604051809103902081565b6002546001600160a01b0316331461065f5760405162461bcd60e51b815260040161065690613cd7565b60405180910390fd5b600080546040516001600160a01b0390911691630825f38f91839190610689908790602001613a01565b604051602081830303815290604052856040518563ffffffff1660e01b81526004016106b89493929190613a37565b600060405180830381600087803b1580156106d257600080fd5b505af11580156106e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261070e9190810190612cbb565b505050565b600080600160009054906101000a90046001600160a01b03166001600160a01b0316632522d7ba61075f6001430360405180606001604052806031815260200161420b603191396121ba565b426040518363ffffffff1660e01b815260040161077d929190613f7b565b60206040518083038186803b15801561079557600080fd5b505afa1580156107a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107cd9190810190612dd5565b60045460408051606081019091526032808252929350606492610803926001600160601b031691859161423c60208301396121ea565b6001600160601b03168161081357fe5b0491505090565b6060806060806000600560008781526020019081526020016000209050806004018160050182600601836007018380548060200260200160405190810160405280929190818152602001828054801561089c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161087e575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156108ee57602002820191906000526020600020905b8154815260200190600101908083116108da575b5050505050925081805480602002602001604051908101604052809291908181526020016000905b828210156109c15760008481526020908190208301805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156109ad5780601f10610982576101008083540402835291602001916109ad565b820191906000526020600020905b81548152906001019060200180831161099057829003601f168201915b505050505081526020019060010190610916565b50505050915080805480602002602001604051908101604052809291908181526020016000905b82821015610a935760008481526020908190208301805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015610a7f5780601f10610a5457610100808354040283529160200191610a7f565b820191906000526020600020905b815481529060010190602001808311610a6257829003601f168201915b5050505050815260200190600101906109e8565b5050505090509450945094509450509193509193565b600190565b60008160035410158015610ac25750600082115b610ade5760405162461bcd60e51b815260040161065690613ce7565b60008281526005602052604090206003810154600160401b900460ff1615610b0a576002915050610d31565b600181015463ffffffff164311610b25576000915050610d31565b6001810154640100000000900463ffffffff164311610b48576001915050610d31565b600181015460408051606081019091526037808252600092610b8d926001600160601b03600160401b8304811693600160a01b90930416916142906020830139612253565b90506000610bb582606460405180606001604052806025815260200161430960259139612286565b9050610bef816004600c9054906101000a90046001600160601b03166040518060600160405280603f8152602001614174603f91396121ea565b60018401549091506001600160601b03808316600160401b90920416111580610c28575060028301546001600160601b03908116908316105b15610c395760039350505050610d31565b6002830154600160c01b90046001600160401b0316610c5e5760049350505050610d31565b6003830154600160481b900460ff1615610c7e5760079350505050610d31565b6002830154600054604080516360d143f160e11b81529051610d1793600160c01b90046001600160401b0316926001600160a01b03169163c1a287e2916004808301926020929190829003018186803b158015610cda57600080fd5b505afa158015610cee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d129190810190612c9d565b6122d8565b4210610d295760069350505050610d31565b600593505050505b919050565b6000610d4182610aae565b90506007816007811115610d5157fe5b1415610d6f5760405162461bcd60e51b815260040161065690613db7565b60008281526005602052604090206002546001600160a01b03163314610da75760405162461bcd60e51b815260040161065690613d57565b60038101805468ff00000000000000001916600160401b17905560005b6004820154811015610ed1576000546004830180546001600160a01b039092169163591fcdfe919084908110610df657fe5b6000918252602090912001546005850180546001600160a01b039092169185908110610e1e57fe5b9060005260206000200154856006018581548110610e3857fe5b90600052602060002001866007018681548110610e5157fe5b906000526020600020018760020160189054906101000a90046001600160401b03166040518663ffffffff1660e01b8152600401610e93959493929190613b15565b600060405180830381600087803b158015610ead57600080fd5b505af1158015610ec1573d6000803e3d6000fd5b505060019092019150610dc49050565b507f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c83604051610f019190613bda565b60405180910390a1505050565b6002546001600160a01b031681565b6000604051610f2b906139eb565b604080519182900382208282019091526015825274536f7672796e20476f7665726e6f7220416c70686160581b6020909201919091527fddf6fbf241d6c602c276b8332aecac376ff7e0ef2276d109c25930e6911ca2bd610f8a6122fd565b30604051602001610f9e9493929190613be8565b6040516020818303038152906040528051906020012090506000604051610fc4906139f6565b604051908190038120610fdd9189908990602001613c1d565b6040516020818303038152906040528051906020012090506000828260405160200161100a9291906139ba565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516110479493929190613c45565b6020604051602081039080840390855afa158015611069573d6000803e3d6000fd5b50505060206040510351905061107e81612301565b61109a5760405162461bcd60e51b815260040161065690613d97565b6110a5818a8a611f4f565b505050505050505050565b60005b8181101561070e576110d68383838181106110ca57fe5b90506020020135611a2c565b6001016110b3565b6001546001600160a01b031681565b6002546001600160a01b031633146111175760405162461bcd60e51b815260040161065690613de7565b600280546001600160a01b0319169055565b6002546001600160a01b031633146111535760405162461bcd60e51b815260040161065690613d17565b600080546040516001600160a01b0390911691633a66f9019183919061117d908790602001613a01565b604051602081830303815290604052856040518563ffffffff1660e01b81526004016111ac9493929190613a37565b602060405180830381600087803b1580156111c657600080fd5b505af11580156111da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061070e9190810190612c9d565b60405180604001604052806015815260200174536f7672796e20476f7665726e6f7220416c70686160581b81525081565b6004546001600160601b031681565b600080600160009054906101000a90046001600160a01b03166001600160a01b0316632522d7ba61128a60014303604051806060016040528060378152602001614361603791396121ba565b426040518363ffffffff1660e01b81526004016112a8929190613f7b565b60206040518083038186803b1580156112c057600080fd5b505afa1580156112d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112f89190810190612dd5565b905060646001600160601b038216610813565b6002546001600160a01b031633146113355760405162461bcd60e51b815260040161065690613ca7565b6000805460408051630e18b68160e01b815290516001600160a01b0390921692630e18b6819260048084019382900301818387803b15801561137657600080fd5b505af115801561138a573d6000803e3d6000fd5b50505050565b6000546001600160a01b031681565b60035481565b6000806113b061123e565b600180549192506001600160601b038316916001600160a01b03169063836eebee9033906113df90439061233a565b426040518463ffffffff1660e01b81526004016113fe93929190613a0f565b60206040518083038186803b15801561141657600080fd5b505afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061144e9190810190612dd5565b6001600160601b0316116114745760405162461bcd60e51b815260040161065690613d87565b85518751148015611486575084518751145b8015611493575083518751145b6114af5760405162461bcd60e51b815260040161065690613d47565b86516114cd5760405162461bcd60e51b815260040161065690613d77565b6114d56105ee565b875111156114f55760405162461bcd60e51b815260040161065690613d27565b33600090815260066020526040902054801561157257600061151682610aae565b9050600181600781111561152657fe5b14156115445760405162461bcd60e51b815260040161065690613da7565b600081600781111561155257fe5b14156115705760405162461bcd60e51b815260040161065690613d07565b505b600061158043610d12610aa9565b9050600061159082610d126105ee565b60038054600101905590506115a36124e8565b60405180610200016040528060035481526020016115d98560405180606001604052806033815260200161432e603391396121ba565b63ffffffff168152602001611606846040518060600160405280603181526020016141da603191396121ba565b63ffffffff16815260200160006001600160601b0316815260200160006001600160601b03168152602001611669600460009054906101000a90046001600160601b03168860405180606001604052806036815260200161413e603691396121ea565b6001600160601b031681526020016116af6004600c9054906101000a90046001600160601b0316886040518060800160405280604281526020016142c7604291396121ea565b6001600160601b0316815260200160006001600160401b031681526020016116ef426040518060600160405280602a8152602001614398602a9139612362565b6001600160401b03168152602001600015158152602001600015158152602001336001600160a01b031681526020018c81526020018b81526020018a81526020018981525090508060056000836000015181526020019081526020016000206000820151816000015560208201518160010160006101000a81548163ffffffff021916908363ffffffff16021790555060408201518160010160046101000a81548163ffffffff021916908363ffffffff16021790555060608201518160010160086101000a8154816001600160601b0302191690836001600160601b0316021790555060808201518160010160146101000a8154816001600160601b0302191690836001600160601b0316021790555060a08201518160020160006101000a8154816001600160601b0302191690836001600160601b0316021790555060c082015181600201600c6101000a8154816001600160601b0302191690836001600160601b0316021790555060e08201518160020160186101000a8154816001600160401b0302191690836001600160401b031602179055506101008201518160030160006101000a8154816001600160401b0302191690836001600160401b031602179055506101208201518160030160086101000a81548160ff0219169083151502179055506101408201518160030160096101000a81548160ff02191690831515021790555061016082015181600301600a6101000a8154816001600160a01b0302191690836001600160a01b0316021790555061018082015181600401908051906020019061194292919061256e565b506101a0820151805161195f9160058401916020909101906125d3565b506101c0820151805161197c91600684019160209091019061261a565b506101e08201518051611999916007840191602090910190612673565b509050508060000151600660008361016001516001600160a01b03166001600160a01b03168152602001908152602001600020819055507f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e08160000151338d8d8d8d89898f604051611a1399989796959493929190613e05565b60405180910390a1519450505050505b95945050505050565b6004611a3782610aae565b6007811115611a4257fe5b14611a5f5760405162461bcd60e51b815260040161065690613cb7565b600081815260056020908152604080832083548251630d48571f60e31b81529251919493611ab89342936001600160a01b0390931692636a42b8f892600480840193919291829003018186803b158015610cda57600080fd5b905060005b6004830154811015611c6057611c58836004018281548110611adb57fe5b6000918252602090912001546005850180546001600160a01b039092169184908110611b0357fe5b9060005260206000200154856006018481548110611b1d57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611bab5780601f10611b8057610100808354040283529160200191611bab565b820191906000526020600020905b815481529060010190602001808311611b8e57829003601f168201915b5050505050866007018581548110611bbf57fe5b600091825260209182902001805460408051601f6002600019610100600187161502019094169390930492830185900485028101850190915281815292830182828015611c4d5780601f10611c2257610100808354040283529160200191611c4d565b820191906000526020600020905b815481529060010190602001808311611c3057829003601f168201915b505050505086612389565b600101611abd565b50611c838160405180606001604052806022815260200161426e60229139612362565b8260020160186101000a8154816001600160401b0302191690836001600160401b031602179055507f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28928382604051610f01929190613ead565b604051610621906139f6565b611cf06126cc565b5060008281526005602090815260408083206001600160a01b03851684526008018252918290208251606081018452905460ff80821615158352610100820416151592820192909252620100009091046001600160601b0316918101919091525b92915050565b600454600160601b90046001600160601b031681565b6005611d7882610aae565b6007811115611d8357fe5b14611da05760405162461bcd60e51b815260040161065690613cc7565b600081815260056020526040812060038101805469ff0000000000000000001916600160481b179055905b6004820154811015611f13576000546005830180546001600160a01b0390921691630825f38f919084908110611dfd57fe5b9060005260206000200154846004018481548110611e1757fe5b6000918252602090912001546005860180546001600160a01b039092169186908110611e3f57fe5b9060005260206000200154866006018681548110611e5957fe5b90600052602060002001876007018781548110611e7257fe5b906000526020600020018860020160189054906101000a90046001600160401b03166040518763ffffffff1660e01b8152600401611eb4959493929190613b15565b6000604051808303818588803b158015611ecd57600080fd5b505af1158015611ee1573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611f0a9190810190612cbb565b50600101611dcb565b507f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f82604051611f439190613bda565b60405180910390a15050565b6001611f5a83610aae565b6007811115611f6557fe5b14611f825760405162461bcd60e51b815260040161065690613dc7565b60008281526005602090815260408083206001600160a01b038716845260088101909252909120805460ff1615611fcb5760405162461bcd60e51b815260040161065690613cf7565b600180549083015460038401546040516341b775f760e11b81526000936001600160a01b03169263836eebee92612017928b9263ffffffff16916001600160401b031690600401613b65565b60206040518083038186803b15801561202f57600080fd5b505afa158015612043573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120679190810190612dd5565b905083156120d6576120a98360010160089054906101000a90046001600160601b0316826040518060600160405280602781526020016141b360279139612253565b8360010160086101000a8154816001600160601b0302191690836001600160601b03160217905550612139565b6121108360010160149054906101000a90046001600160601b0316826040518060600160405280602781526020016141b360279139612253565b8360010160146101000a8154816001600160601b0302191690836001600160601b031602179055505b8154600160ff199091161761ff00191661010085151502176dffffffffffffffffffffffff00001916620100006001600160601b038316021782556040517f877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c46906121aa908890889088908690613a86565b60405180910390a1505050505050565b60008164010000000084106121e25760405162461bcd60e51b81526004016106569190613c96565b509192915050565b60006001600160601b0384166122025750600061224c565b8383026001600160601b03808516908087169083168161221e57fe5b046001600160601b03161483906122485760405162461bcd60e51b81526004016106569190613c96565b5090505b9392505050565b6000838301826001600160601b0380871690831610156122485760405162461bcd60e51b81526004016106569190613c96565b6000816001600160601b0384166122b05760405162461bcd60e51b81526004016106569190613c96565b506000836001600160601b0316856001600160601b0316816122ce57fe5b0495945050505050565b60008282018381101561224c5760405162461bcd60e51b815260040161065690613d37565b4690565b600073dcc703c0e500b653ca82273b7bfad8045d85a4706001600160a01b03831614801590611d515750506001600160a01b0316151590565b60008282111561235c5760405162461bcd60e51b815260040161065690613dd7565b50900390565b600081600160401b84106121e25760405162461bcd60e51b81526004016106569190613c96565b6000546040516001600160a01b039091169063f2b06537906123b79088908890889088908890602001613abb565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016123e99190613bda565b60206040518083038186803b15801561240157600080fd5b505afa158015612415573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124399190810190612c7f565b156124565760405162461bcd60e51b815260040161065690613d67565b600054604051633a66f90160e01b81526001600160a01b0390911690633a66f9019061248e9088908890889088908890600401613abb565b602060405180830381600087803b1580156124a857600080fd5b505af11580156124bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124e09190810190612c9d565b505050505050565b604080516102008101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820183905261016082019290925261018081018290526101a081018290526101c081018290526101e081019190915290565b8280548282559060005260206000209081019282156125c3579160200282015b828111156125c357825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061258e565b506125cf9291506126ec565b5090565b82805482825590600052602060002090810192821561260e579160200282015b8281111561260e5782518255916020019190600101906125f3565b506125cf929150612710565b828054828255906000526020600020908101928215612667579160200282015b82811115612667578251805161265791849160209091019061272a565b509160200191906001019061263a565b506125cf929150612797565b8280548282559060005260206000209081019282156126c0579160200282015b828111156126c057825180516126b091849160209091019061272a565b5091602001919060010190612693565b506125cf9291506127ba565b604080516060810182526000808252602082018190529181019190915290565b6105f191905b808211156125cf5780546001600160a01b03191681556001016126f2565b6105f191905b808211156125cf5760008155600101612716565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061276b57805160ff191683800117855561260e565b8280016001018555821561260e579182018281111561260e5782518255916020019190600101906125f3565b6105f191905b808211156125cf5760006127b182826127dd565b5060010161279d565b6105f191905b808211156125cf5760006127d482826127dd565b506001016127c0565b50805460018160011615610100020316600290046000825580601f106128035750612821565b601f0160209004906000526020600020908101906128219190612710565b50565b8035611d5181614105565b600082601f83011261284057600080fd5b813561285361284e82613fbd565b613f97565b9150818183526020840193506020810190508385602084028201111561287857600080fd5b60005b838110156128a4578161288e8882612824565b845250602092830192919091019060010161287b565b5050505092915050565b600082601f8301126128bf57600080fd5b81356128cd61284e82613fbd565b81815260209384019390925082018360005b838110156128a457813586016128f58882612a4c565b84525060209283019291909101906001016128df565b600082601f83011261291c57600080fd5b813561292a61284e82613fbd565b81815260209384019390925082018360005b838110156128a457813586016129528882612a4c565b845250602092830192919091019060010161293c565b60008083601f84011261297a57600080fd5b5081356001600160401b0381111561299157600080fd5b6020830191508360208202830111156129a957600080fd5b9250929050565b600082601f8301126129c157600080fd5b81356129cf61284e82613fbd565b915081818352602084019350602081019050838560208402820111156129f457600080fd5b60005b838110156128a45781612a0a8882612a36565b84525060209283019291909101906001016129f7565b8035611d5181614119565b8051611d5181614119565b8035611d5181614122565b8051611d5181614122565b600082601f830112612a5d57600080fd5b8135612a6b61284e82613fdd565b91508082526020830160208301858383011115612a8757600080fd5b612a928382846140b9565b50505092915050565b600082601f830112612aac57600080fd5b8151612aba61284e82613fdd565b91508082526020830160208301858383011115612ad657600080fd5b612a928382846140c5565b8035611d518161412b565b8051611d5181614134565b600060208284031215612b0957600080fd5b6000612b158484612824565b949350505050565b60008060408385031215612b3057600080fd5b6000612b3c8585612824565b9250506020612b4d85828601612a36565b9150509250929050565b600080600080600060a08688031215612b6f57600080fd5b85356001600160401b03811115612b8557600080fd5b612b918882890161282f565b95505060208601356001600160401b03811115612bad57600080fd5b612bb9888289016129b0565b94505060408601356001600160401b03811115612bd557600080fd5b612be18882890161290b565b93505060608601356001600160401b03811115612bfd57600080fd5b612c09888289016128ae565b92505060808601356001600160401b03811115612c2557600080fd5b612c3188828901612a4c565b9150509295509295909350565b60008060208385031215612c5157600080fd5b82356001600160401b03811115612c6757600080fd5b612c7385828601612968565b92509250509250929050565b600060208284031215612c9157600080fd5b6000612b158484612a2b565b600060208284031215612caf57600080fd5b6000612b158484612a41565b600060208284031215612ccd57600080fd5b81516001600160401b03811115612ce357600080fd5b612b1584828501612a9b565b600060208284031215612d0157600080fd5b6000612b158484612a36565b60008060408385031215612d2057600080fd5b6000612d2c8585612a36565b9250506020612b4d85828601612824565b60008060408385031215612d5057600080fd5b6000612d5c8585612a36565b9250506020612b4d85828601612a20565b600080600080600060a08688031215612d8557600080fd5b6000612d918888612a36565b9550506020612da288828901612a20565b9450506040612db388828901612ae1565b9350506060612dc488828901612a36565b9250506080612c3188828901612a36565b600060208284031215612de757600080fd5b6000612b158484612aec565b6000612dff8383612e2e565b505060200190565b600061224c8383612fd0565b6000612dff8383612fb6565b612e2881614070565b82525050565b612e2881614023565b6000612e4282614016565b612e4c818561401a565b9350612e5783614004565b8060005b83811015612e85578151612e6f8882612df3565b9750612e7a83614004565b925050600101612e5b565b509495945050505050565b6000612e9b82614016565b612ea5818561401a565b935083602082028501612eb785614004565b8060005b85811015612ef15784840389528151612ed48582612e07565b9450612edf83614004565b60209a909a0199925050600101612ebb565b5091979650505050505050565b6000612f0982614016565b612f13818561401a565b935083602082028501612f2585614004565b8060005b85811015612ef15784840389528151612f428582612e07565b9450612f4d83614004565b60209a909a0199925050600101612f29565b6000612f6a82614016565b612f74818561401a565b9350612f7f83614004565b8060005b83811015612e85578151612f978882612e13565b9750612fa283614004565b925050600101612f83565b612e288161402e565b612e28816105f1565b612e28612fcb826105f1565b6105f1565b6000612fdb82614016565b612fe5818561401a565b9350612ff58185602086016140c5565b612ffe816140f1565b9093019392505050565b600081546001811660008114613025576001811461304b5761308a565b607f6002830416613036818761401a565b60ff198416815295505060208501925061308a565b60028204613059818761401a565b95506130648561400a565b60005b8281101561308357815488820152600190910190602001613067565b8701945050505b505092915050565b612e2881614077565b612e2881614082565b612e288161408d565b60006130ba60398361401a565b7f476f7665726e6f72416c7068613a3a5f5f61636365707441646d696e3a20736581527f6e646572206d75737420626520676f7620677561726469616e00000000000000602082015260400192915050565b600061311960448361401a565b7f476f7665726e6f72416c7068613a3a71756575653a2070726f706f73616c206381527f616e206f6e6c79206265207175657565642069662069742069732073756363656020820152631959195960e21b604082015260600192915050565b600061318560458361401a565b7f476f7665726e6f72416c7068613a3a657865637574653a2070726f706f73616c81527f2063616e206f6e6c7920626520657865637574656420696620697420697320716020820152641d595d595960da1b604082015260600192915050565b60006131f2600283610d31565b61190160f01b815260020192915050565b6000613210604c8361401a565b7f476f7665726e6f72416c7068613a3a5f5f6578656375746553657454696d656c81527f6f636b50656e64696e6741646d696e3a2073656e646572206d7573742062652060208201526b33b7bb1033bab0b93234b0b760a11b604082015260600192915050565b600061328460188361401a565b7f73657450656e64696e6741646d696e2861646472657373290000000000000000815260200192915050565b60006132bd60298361401a565b7f476f7665726e6f72416c7068613a3a73746174653a20696e76616c69642070728152681bdc1bdcd85b081a5960ba1b602082015260400192915050565b6000613308602d8361401a565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f7465722081526c185b1c9958591e481d9bdd1959609a1b602082015260400192915050565b600061335760598361401a565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c72656164792070656e64696e672070726f706f73616c00000000000000604082015260600192915050565b60006133dc604a8361401a565b7f476f7665726e6f72416c7068613a3a5f5f717565756553657454696d656c6f6381527f6b50656e64696e6741646d696e3a2073656e646572206d75737420626520676f6020820152693b1033bab0b93234b0b760b11b604082015260600192915050565b600061344e60288361401a565b7f476f7665726e6f72416c7068613a3a70726f706f73653a20746f6f206d616e7981526720616374696f6e7360c01b602082015260400192915050565b600061349860118361401a565b706164646974696f6e206f766572666c6f7760781b815260200192915050565b60006134c5604383610d31565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201526263742960e81b604082015260430192915050565b6000613530602783610d31565b7f42616c6c6f742875696e743235362070726f706f73616c49642c626f6f6c20738152667570706f72742960c81b602082015260270192915050565b600061357960448361401a565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73616c81527f2066756e6374696f6e20696e666f726d6174696f6e206172697479206d69736d6020820152630c2e8c6d60e31b604082015260600192915050565b60006135e5602e8361401a565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2073656e64657220697381526d3713ba10309033bab0b93234b0b760911b602082015260400192915050565b600061363560448361401a565b7f476f7665726e6f72416c7068613a3a5f71756575654f725265766572743a207081527f726f706f73616c20616374696f6e20616c7265616479207175657565642061746020820152632065746160e01b604082015260600192915050565b60006136a1602c8361401a565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206d7573742070726f81526b7669646520616374696f6e7360a01b602082015260400192915050565b60006136ef603f8361401a565b7f476f7665726e6f72416c7068613a3a70726f706f73653a2070726f706f73657281527f20766f7465732062656c6f772070726f706f73616c207468726573686f6c6400602082015260400192915050565b600061374e602f8361401a565b7f476f7665726e6f72416c7068613a3a63617374566f746542795369673a20696e81526e76616c6964207369676e617475726560881b602082015260400192915050565b600061379f60588361401a565b7f476f7665726e6f72416c7068613a3a70726f706f73653a206f6e65206c69766581527f2070726f706f73616c207065722070726f706f7365722c20666f756e6420616e60208201527f20616c7265616479206163746976652070726f706f73616c0000000000000000604082015260600192915050565b600061382460368361401a565b7f476f7665726e6f72416c7068613a3a63616e63656c3a2063616e6e6f742063618152751b98d95b08195e1958dd5d1959081c1c9bdc1bdcd85b60521b602082015260400192915050565b600061387c602a8361401a565b7f476f7665726e6f72416c7068613a3a5f63617374566f74653a20766f74696e67815269081a5cc818db1bdcd95960b21b602082015260400192915050565b60006138c860158361401a565b747375627472616374696f6e20756e646572666c6f7760581b815260200192915050565b60006138f960368361401a565b7f476f7665726e6f72416c7068613a3a5f5f61626469636174653a2073656e6465815275391036bab9ba1031329033b7bb1033bab0b93234b0b760511b602082015260400192915050565b805160608301906139558482612fad565b5060208201516139686020850182612fad565b50604082015161138a60408501826139b1565b612e2881614098565b612e2881614049565b612e28816140a3565b612e2881614052565b612e288161405e565b612e28816140ae565b612e2881614064565b60006139c5826131e5565b91506139d18285612fbf565b6020820191506139e18284612fbf565b5060200192915050565b6000611d51826134b8565b6000611d5182613523565b60208101611d518284612e2e565b60608101613a1d8286612e1f565b613a2a6020830185612fb6565b612b156040830184612fb6565b60a08101613a458287612e2e565b613a5260208301866130a4565b8181036040830152613a6381613277565b90508181036060830152613a778185612fd0565b9050611a236080830184612fb6565b60808101613a948287612e2e565b613aa16020830186612fb6565b613aae6040830185612fad565b611a2360608301846139a8565b60a08101613ac98288612e2e565b613ad66020830187612fb6565b8181036040830152613ae88186612fd0565b90508181036060830152613afc8185612fd0565b9050613b0b6080830184612fb6565b9695505050505050565b60a08101613b238288612e2e565b613b306020830187612fb6565b8181036040830152613b428186613008565b90508181036060830152613b568185613008565b9050613b0b608083018461398d565b60608101613b738286612e2e565b613b80602083018561397b565b612b15604083018461398d565b60808082528101613b9e8187612e37565b90508181036020830152613bb28186612f5f565b90508181036040830152613bc68185612efe565b90508181036060830152613b0b8184612e90565b60208101611d518284612fb6565b60808101613bf68287612fb6565b613c036020830186612fb6565b613c106040830185612fb6565b611a236060830184612e2e565b60608101613c2b8286612fb6565b613c386020830185612fb6565b612b156040830184612fad565b60808101613c538287612fb6565b613c60602083018661399f565b613c6d6040830185612fb6565b611a236060830184612fb6565b60208101611d518284613092565b60208101611d51828461309b565b6020808252810161224c8184612fd0565b60208082528101611d51816130ad565b60208082528101611d518161310c565b60208082528101611d5181613178565b60208082528101611d5181613203565b60208082528101611d51816132b0565b60208082528101611d51816132fb565b60208082528101611d518161334a565b60208082528101611d51816133cf565b60208082528101611d5181613441565b60208082528101611d518161348b565b60208082528101611d518161356c565b60208082528101611d51816135d8565b60208082528101611d5181613628565b60208082528101611d5181613694565b60208082528101611d51816136e2565b60208082528101611d5181613741565b60208082528101611d5181613792565b60208082528101611d5181613817565b60208082528101611d518161386f565b60208082528101611d51816138bb565b60208082528101611d51816138ec565b60608101611d518284613944565b6101208101613e14828c612fb6565b613e21602083018b612e1f565b8181036040830152613e33818a612e37565b90508181036060830152613e478189612f5f565b90508181036080830152613e5b8188612efe565b905081810360a0830152613e6f8187612e905