UNPKG

@vechain/vebetterdao-contracts

Version:

Open-source repository that houses the smart contracts powering the decentralized VeBetterDAO on the VeChain Thor blockchain.

338 lines 53 kB
{ "_format": "hh-sol-artifact-1", "contractName": "GovernorVotesLogic", "sourceName": "contracts/governance/libraries/GovernorVotesLogic.sol", "abi": [ { "inputs": [], "name": "CheckpointUnorderedInsertion", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "citizen", "type": "address" } ], "name": "DelegatedToNavigator", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "GovernanceSkipWindowNotReached", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "voter", "type": "address" } ], "name": "GovernorAlreadyCastVote", "type": "error" }, { "inputs": [], "name": "GovernorInvalidVoteType", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "GovernorNonexistentProposal", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "voter", "type": "address" }, { "internalType": "string", "name": "explanation", "type": "string" } ], "name": "GovernorPersonhoodVerificationFailed", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "internalType": "enum GovernorTypes.ProposalState", "name": "current", "type": "uint8" }, { "internalType": "bytes32", "name": "expectedStates", "type": "bytes32" } ], "name": "GovernorUnexpectedProposalState", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "threshold", "type": "uint256" }, { "internalType": "uint256", "name": "votes", "type": "uint256" } ], "name": "GovernorVotingThresholdNotMet", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "navigator", "type": "address" }, { "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "NavigatorDecisionNotSet", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "citizen", "type": "address" } ], "name": "NotDelegatedToNavigator", "type": "error" }, { "inputs": [ { "internalType": "uint8", "name": "bits", "type": "uint8" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "SafeCastOverflowedUintDowncast", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "citizen", "type": "address" }, { "indexed": true, "internalType": "address", "name": "navigator", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "indexed": false, "internalType": "uint8", "name": "support", "type": "uint8" }, { "indexed": false, "internalType": "uint256", "name": "weight", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "power", "type": "uint256" } ], "name": "NavigatorGovernanceVoteCast", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "citizen", "type": "address" }, { "indexed": true, "internalType": "address", "name": "navigator", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "proposalId", "type": "uint256" } ], "name": "NavigatorGovernanceVoteSkipped", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bool", "name": "disabled", "type": "bool" } ], "name": "QuadraticVotingToggled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "voter", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "proposalId", "type": "uint256" }, { "indexed": false, "internalType": "uint8", "name": "support", "type": "uint8" }, { "indexed": false, "internalType": "uint256", "name": "weight", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "power", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "reason", "type": "string" } ], "name": "VoteCast", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "timepoint", "type": "uint256" } ], "name": "getQuadraticVotingPower", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isQuadraticVotingDisabledForCurrentRound", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "roundId", "type": "uint256" } ], "name": "isQuadraticVotingDisabledForRound", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x612b1861003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061006c5760003560e01c806381c0d6df146100715780639c17e7b31461008e578063a45aa313146100a5578063b69d417b146100b8578063b6e9eff4146100d9578063dd063f90146100f9575b600080fd5b610079610119565b60405190151581526020015b60405180910390f35b81801561009a57600080fd5b506100a36101cc565b005b6100796100b3366004612573565b61031c565b6100cb6100c63660046125a4565b6103c7565b604051908152602001610085565b8180156100e557600080fd5b506100cb6100f43660046125d0565b6103f2565b81801561010557600080fd5b506100cb61011436600461260f565b610ae9565b600080610124610d7b565b9050600081600a0160009054906101000a90046001600160a01b03166001600160a01b031663561b64ef6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561017d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a191906126ad565b90506101b96101af82610d9f565b6013840190610dd6565b6001600160d01b03166001149250505090565b60006101d6610d7b565b9050600061024a73__$3618b725599b71188fd71e0b940aaf7176$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af4158015610226573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101af91906126c6565b6001600160d01b03166001149050600081610266576001610269565b60005b60ff1690506102e973__$3618b725599b71188fd71e0b940aaf7176$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af41580156102ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102de91906126c6565b601385019083610e8c565b50506040518215907fe782263e17b994d34e64f19af2397c26081a1f4c26c604acb8fb3db6bafc903e90600090a2505050565b600080610327610d7b565b600a8101546040516368377f6d60e11b8152600481018690529192506000916103a3916001600160a01b03169063d06efeda90602401602060405180830381865afa15801561037a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039e91906126ad565b610d9f565b90506103b26013830182610dd6565b6001600160d01b031660011492505050919050565b60006103db6103d68484610ea7565b6110d5565b6103e990633b9aca00612704565b90505b92915050565b6000806103fd610d7b565b90506104128461040d60016111c4565b6111e7565b50600061041e85611226565b601f8301546040516318be49d960e01b81529192506000916001600160a01b03909116906318be49d990610458908890869060040161271b565b602060405180830381865afa158015610475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104999190612734565b90506001600160a01b0381166104cd5784604051630d1c9abb60e31b81526004016104c49190612751565b60405180910390fd5b600086815260018085016020526040918290200154601f850154915163506b90db60e11b815290916001600160a01b03169063a0d721b690610513908590600401612751565b602060405180830381865afa158015610530573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610554919061277a565b156106115760208401546001600160a01b0316156105d55760208401546040516318b9baa160e01b81526001600160a01b03909116906318b9baa1906105a29084908a908c90600401612795565b600060405180830381600087803b1580156105bc57600080fd5b505af11580156105d0573d6000803e3d6000fd5b505050505b86826001600160a01b0316876001600160a01b0316600080516020612ac383398151915260405160405180910390a460009450505050506103ec565b601f840154604051632246f2db60e01b81526001600160a01b0390911690632246f2db906106459085908b9060040161271b565b602060405180830381865afa158015610662573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610686919061277a565b61078557600061069588611613565b9050806106a0611796565b6106aa90436127b4565b10156106cc576040516324852b2f60e11b8152600481018990526024016104c4565b60208501546001600160a01b0316156107485760208501546040516318b9baa160e01b81526001600160a01b03909116906318b9baa1906107159085908b908d90600401612795565b600060405180830381600087803b15801561072f57600080fd5b505af1158015610743573d6000803e3d6000fd5b505050505b87836001600160a01b0316886001600160a01b0316600080516020612ac383398151915260405160405180910390a46000955050505050506103ec565b60148401546000906001600160a01b031663d0ebb0ee886107a587610d9f565b6040518363ffffffff1660e01b81526004016107c29291906127c7565b600060405180830381865afa1580156107df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108079190810190612822565b509050806108585760208501546001600160a01b0316156107485760208501546040516318b9baa160e01b81526001600160a01b03909116906318b9baa1906107159085908b908d90600401612795565b601f8501546040516338b3ce1360e01b81526000916001600160a01b0316906338b3ce139061088d9087908d9060040161271b565b602060405180830381865afa1580156108aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ce91906128e2565b905060006108dd6001836128ff565b601f88015460405163c61c06e760e01b81529192506000916001600160a01b039091169063c61c06e790610917908d908b9060040161271b565b602060405180830381865afa158015610934573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095891906126ad565b90506000610965826110d5565b61097390633b9aca00612704565b604051631504e3b960e11b8152600481018e905290915060009073__$0f6271ecd36857987d374ff633d31cbc3c$__90632a09c77290602401602060405180830381865af41580156109c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ed91906128e2565b60ff166001811115610a0157610a01612918565b9050610a0d83826117a9565b610a1a8d8d8686866117e6565b610a288a8e8e86888e611973565b610a338a8e8e611abc565b6040805160ff86168152602081018590529081018390528d906001600160a01b03808b1691908f16907fe5aba2374a4ff3b54ee59beb7eabaae209c8a3e5d31185fd429458c2f887c21a9060600160405180910390a46040805160ff86168152602081018590529081018390526080606082018190526000908201528d906001600160a01b038e1690600080516020612aa38339815191529060a0015b60405180910390a350909b9a5050505050505050505050565b600080610af4610d7b565b9050610b048761040d60016111c4565b506000610b1088611226565b601f8301549091506001600160a01b031615610bc557601f8201546040516318be49d960e01b81526000916001600160a01b0316906318be49d990610b5b908b90869060040161271b565b602060405180830381865afa158015610b78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9c9190612734565b6001600160a01b031614610bc5578660405163640ed18360e01b81526004016104c49190612751565b601482015460009081906001600160a01b031663d0ebb0ee8a610be786610d9f565b6040518363ffffffff1660e01b8152600401610c049291906127c7565b600060405180830381865afa158015610c21573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c499190810190612822565b9150915081610c6f5788816040516344c4534960e01b81526004016104c492919061292e565b6000610c7b8a85610ea7565b90506000610c88826110d5565b610c9690633b9aca00612704565b604051631504e3b960e11b8152600481018e905290915060009073__$0f6271ecd36857987d374ff633d31cbc3c$__90632a09c77290602401602060405180830381865af4158015610cec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1091906128e2565b60ff166001811115610d2457610d24612918565b9050610d3083826117a9565b610d3d8d8d8d86866117e6565b610d4b878e8e868f8b611973565b8c8c6001600160a01b0316600080516020612aa38339815191528d86868f8f604051610ad0959493929190612970565b7fd09a0aaf4ab3087bae7fa25ef74ddd4e5a4950980903ce417e66228cf7dc7b0090565b600065ffffffffffff821115610dd2576040516306dfcc6560e41b815260306004820152602481018390526044016104c4565b5090565b815460009081816005811115610e35576000610df1846110d5565b610dfb90856129b7565b60008881526020902090915081015465ffffffffffff9081169087161015610e2557809150610e33565b610e308160016127b4565b92505b505b6000610e4387878585611b57565b90508015610e7e57610e6887610e5a6001846129b7565b600091825260209091200190565b54600160301b90046001600160d01b0316610e81565b60005b979650505050505050565b600080610e9a858585611bb9565b915091505b935093915050565b600080610eb2610d7b565b600c810154604051630748d63560e31b81529192506000916001600160a01b0390911690633a46b1a890610eec908890889060040161271b565b602060405180830381865afa158015610f09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2d91906126ad565b601f8301549091506001600160a01b0316610f4b5791506103ec9050565b601f8201546040516318be49d960e01b81526000916001600160a01b0316906318be49d990610f80908990899060040161271b565b602060405180830381865afa158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc19190612734565b6001600160a01b03161461104d57601f82015460405163c61c06e760e01b81526001600160a01b039091169063c61c06e790611003908890889060040161271b565b602060405180830381865afa158015611020573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104491906126ad565b925050506103ec565b601f82015460405163094f6f2960e21b81526001600160a01b039091169063253dbca490611081908890889060040161271b565b602060405180830381865afa15801561109e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c291906126ad565b6110cc90826127b4565b95945050505050565b6000816000036110e757506000919050565b600060016110f484611d33565b901c6001901b9050600181848161110d5761110d6129ca565b048201901c90506001818481611125576111256129ca565b048201901c9050600181848161113d5761113d6129ca565b048201901c90506001818481611155576111556129ca565b048201901c9050600181848161116d5761116d6129ca565b048201901c90506001818481611185576111856129ca565b048201901c9050600181848161119d5761119d6129ca565b048201901c90506111bd818285816111b7576111b76129ca565b04611dc7565b9392505050565b60008160098111156111d8576111d8612918565b600160ff919091161b92915050565b6000806111f384611ddd565b9050600083611201836111c4565b16036103e9578381846040516331b75e4d60e01b81526004016104c4939291906129e0565b600080611231610d7b565b90508060010160008481526020019081526020016000206001015481600a0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c591906126ad565b106113625760006112d4610d7b565b600a81015460008681526001808401602052604091829020015490516368377f6d60e11b815260048101919091529192506001600160a01b03169063d06efeda906024015b602060405180830381865afa158015611336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135a91906126ad565b949350505050565b600a81015460408051639cbe5efd60e01b815290516000926001600160a01b031691639cbe5efd9160048083019260209291908290030181865afa1580156113ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d291906126ad565b60008581526001808501602052604090912001546113f091906129b7565b905060006113ff6001836129b7565b83600a0160009054906101000a90046001600160a01b03166001600160a01b03166302a251a36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611454573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147891906126ad565b6114829190612704565b9050600083600a0160009054906101000a90046001600160a01b03166001600160a01b031663593728126040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ff91906126ad565b905073__$3618b725599b71188fd71e0b940aaf7176$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af415801561154a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156e91906126c6565b65ffffffffffff1681116115f45773__$3618b725599b71188fd71e0b940aaf7176$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af41580156115c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e991906126c6565b65ffffffffffff1690505b826115ff83836127b4565b61160991906127b4565b9695505050505050565b60008061161e610d7b565b90508060010160008481526020019081526020016000206001015481600a0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561168e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b291906126ad565b1061170a5760006116c1610d7b565b600a810154600086815260018084016020526040918290200154905163d3a368bd60e01b815260048101919091529192506001600160a01b03169063d3a368bd90602401611319565b80600a0160009054906101000a90046001600160a01b03166001600160a01b03166302a251a36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178391906126ad565b61178c84611226565b6111bd91906127b4565b60006117a0610d7b565b60220154905090565b60006117b482612184565b9050808310156117e15760405163742f62c360e01b815260048101829052602481018490526044016104c4565b505050565b60006117f0610d7b565b6000878152600f8201602090815260408083206001600160a01b038a16845260038101909252909120549192509060ff161561184157856040516371c6af4960e01b81526004016104c49190612751565b6001600160a01b03861660009081526003820160205260408120805460ff1916600117905561186e610119565b611878578361187a565b845b905060ff86166118a3578082600001600082825461189891906127b4565b909155506118fc9050565b60001960ff8716016118c3578082600101600082825461189891906127b4565b60011960ff8716016118e3578082600201600082825461189891906127b4565b6040516303599be160e11b815260040160405180910390fd5b60008881526011840160205260408120805487929061191c9084906127b4565b90915550506001600160a01b038716600090815260108401602052604090205460ff16611969576001600160a01b03871660009081526010840160205260409020805460ff191660011790555b5050505050505050565b600986015460405163a7381dab60e01b81526004810183905260009182916101009091046001600160a01b03169063a7381dab906024016040805180830381865afa1580156119c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ea9190612a08565b9150915060008460ff16600214611a015782611a03565b815b90506000612710611a148389612704565b611a1e9190612a2c565b60098b015490915061010090046001600160a01b0316632f18339d8a8a84611a45816110d5565b6040516001600160e01b031960e087901b16815260048101949094526001600160a01b03909216602484015260448301526064820152608401600060405180830381600087803b158015611a9857600080fd5b505af1158015611aac573d6000803e3d6000fd5b5050505050505050505050505050565b60208301546001600160a01b0316611ad357505050565b602080840154600084815260018087019093526040808220909301549251636cf88e7360e01b81526001600160a01b0390921692636cf88e7392611b209233928792909190600401612a4e565b600060405180830381600087803b158015611b3a57600080fd5b505af1158015611b4e573d6000803e3d6000fd5b50505050505050565b60005b81831015611bb1576000611b6e848461223a565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff161115611b9d57809250611bab565b611ba88160016127b4565b93505b50611b5a565b509392505050565b825460009081908015611cd8576000611bd787610e5a6001856129b7565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b031660208401529192509087161015611c2b57604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff808816911603611c775784611c4e88610e5a6001866129b7565b80546001600160d01b0392909216600160301b0265ffffffffffff909216919091179055611cc8565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b602001519250839150610e9f9050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b029190931617920191909155905081610e9f565b600080608083901c15611d4857608092831c92015b604083901c15611d5a57604092831c92015b602083901c15611d6c57602092831c92015b601083901c15611d7e57601092831c92015b600883901c15611d9057600892831c92015b600483901c15611da257600492831c92015b600283901c15611db457600292831c92015b600183901c156103ec5760010192915050565b6000818310611dd657816103e9565b5090919050565b600080611de8610d7b565b6000848152600180830160209081526040808420601e8601909252909220546002830154939450919260ff92831692600160281b8204811692600160301b9092041690836002811115611e3d57611e3d612918565b03611e4f575060089695505050505050565b6002836002811115611e6357611e63612918565b03611e75575060099695505050505050565b8115611e88575060069695505050505050565b8015611e9b575060029695505050505050565b8360010154600003611ec357604051636ad0607560e01b8152600481018890526024016104c4565b836001015485600a0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4191906126ad565b1015611f54575060009695505050505050565b600073__$3618b725599b71188fd71e0b940aaf7176$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af4158015611f9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc391906126c6565b65ffffffffffff1690506000611fd889611613565b9050611fe389612255565b611ff65750600798975050505050505050565b81811061200c5750600198975050505050505050565b61201589612281565b15806120275750612025896122df565b155b1561203b5750600398975050505050505050565b61204489612307565b60000361205a5750600498975050505050505050565b6000898152600788016020526040908190205460068901549151632c258a9f60e11b81526004810182905290916001600160a01b03169063584b153e90602401602060405180830381865afa1580156120b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120db919061277a565b156120f0575060059998505050505050505050565b6006880154604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa15801561213b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215f919061277a565b15612174575060069998505050505050505050565b5060029998505050505050505050565b60008061218f610d7b565b905061219a83612339565b6121fa5760405162461bcd60e51b815260206004820152602b60248201527f476f7665726e6f72436f6e666967757261746f723a20696e76616c696420707260448201526a6f706f73616c207479706560a81b60648201526084016104c4565b80601701600084600181111561221257612212612918565b600181111561222357612223612918565b815260200190815260200160002054915050919050565b60006122496002848418612a2c565b6103e9908484166127b4565b600080612260610d7b565b60009384526001016020525050604090206004810154600390910154101590565b60008061228c610d7b565b6000848152601582016020908152604080832054601185019092529091205491925060ff16906122d56122be86611226565b8360018111156122d0576122d0612918565b612370565b1115949350505050565b6000806122ea610d7b565b6000938452600f0160205250506040902080546001909101541190565b600080612312610d7b565b600093845260010160205250506040902060020154600160381b900465ffffffffffff1690565b60008082600181111561234e5761234e612918565b14806103ec5750600182600181111561236957612369612918565b1492915050565b60008061237b610d7b565b90506064612389858561240c565b600c830154604051632394e7a360e21b8152600481018890526001600160a01b0390911690638e539e8c90602401602060405180830381865afa1580156123d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f891906126ad565b6124029190612704565b61135a9190612a2c565b60006103e9838360ff16600181111561242757612427612918565b600080612432610d7b565b9050600081601801600085600181111561244e5761244e612918565b600181111561245f5761245f612918565b815260208101919091526040016000908120549150601883018186600181111561248b5761248b612918565b600181111561249c5761249c612918565b815260208101919091526040016000206124b76001846129b7565b815481106124c7576124c7612a8c565b6000918252602090912001805490915065ffffffffffff811690600160301b90046001600160d01b031687821161250d576001600160d01b031694506103ec9350505050565b61255e61251989610d9f565b8660180160008a600181111561253157612531612918565b600181111561254257612542612918565b8152602001908152602001600020610dd690919063ffffffff16565b6001600160d01b031698975050505050505050565b60006020828403121561258557600080fd5b5035919050565b6001600160a01b03811681146125a157600080fd5b50565b600080604083850312156125b757600080fd5b82356125c28161258c565b946020939093013593505050565b600080604083850312156125e357600080fd5b8235915060208301356125f58161258c565b809150509250929050565b60ff811681146125a157600080fd5b60008060008060006080868803121561262757600080fd5b8535945060208601356126398161258c565b9350604086013561264981612600565b925060608601356001600160401b038082111561266557600080fd5b818801915088601f83011261267957600080fd5b81358181111561268857600080fd5b89602082850101111561269a57600080fd5b9699959850939650602001949392505050565b6000602082840312156126bf57600080fd5b5051919050565b6000602082840312156126d857600080fd5b815165ffffffffffff811681146103e957600080fd5b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176103ec576103ec6126ee565b6001600160a01b03929092168252602082015260400190565b60006020828403121561274657600080fd5b81516103e98161258c565b6001600160a01b0391909116815260200190565b8051801515811461277557600080fd5b919050565b60006020828403121561278c57600080fd5b6103e982612765565b9283526001600160a01b03919091166020830152604082015260600190565b808201808211156103ec576103ec6126ee565b6001600160a01b0392909216825265ffffffffffff16602082015260400190565b634e487b7160e01b600052604160045260246000fd5b60005b83811015612819578181015183820152602001612801565b50506000910152565b6000806040838503121561283557600080fd5b61283e83612765565b60208401519092506001600160401b038082111561285b57600080fd5b818501915085601f83011261286f57600080fd5b815181811115612881576128816127e8565b604051601f8201601f19908116603f011681019083821181831017156128a9576128a96127e8565b816040528281528860208487010111156128c257600080fd5b6128d38360208301602088016127fe565b80955050505050509250929050565b6000602082840312156128f457600080fd5b81516103e981612600565b60ff82811682821603908111156103ec576103ec6126ee565b634e487b7160e01b600052602160045260246000fd5b60018060a01b0383168152604060208201526000825180604084015261295b8160608501602087016127fe565b601f01601f1916919091016060019392505050565b60ff8616815284602082015283604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b818103818111156103ec576103ec6126ee565b634e487b7160e01b600052601260045260246000fd5b83815260608101600a84106129f7576129f7612918565b602082019390935260400152919050565b60008060408385031215612a1b57600080fd5b505080516020909101519092909150565b600082612a4957634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b03858116825284166020820152604081018390526080810160028310612a7d57612a7d612918565b82606083015295945050505050565b634e487b7160e01b600052603260045260246000fdfeaec5ebd9cfb5e0fa9ec893c112b6f15c366248db781323babe6909c0e07703978b34402b007625b875ac624bea888f2cd3b6896eb9b8f2a2a278bbf3b5dd9b4da2646970667358221220155b22843dc4830fcd112e9f6e9d1deb550233b1baf3ce9487e5f57eab1bbd7e64736f6c63430008140033", "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040526004361061006c5760003560e01c806381c0d6df146100715780639c17e7b31461008e578063a45aa313146100a5578063b69d417b146100b8578063b6e9eff4146100d9578063dd063f90146100f9575b600080fd5b610079610119565b60405190151581526020015b60405180910390f35b81801561009a57600080fd5b506100a36101cc565b005b6100796100b3366004612573565b61031c565b6100cb6100c63660046125a4565b6103c7565b604051908152602001610085565b8180156100e557600080fd5b506100cb6100f43660046125d0565b6103f2565b81801561010557600080fd5b506100cb61011436600461260f565b610ae9565b600080610124610d7b565b9050600081600a0160009054906101000a90046001600160a01b03166001600160a01b031663561b64ef6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561017d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a191906126ad565b90506101b96101af82610d9f565b6013840190610dd6565b6001600160d01b03166001149250505090565b60006101d6610d7b565b9050600061024a73__$3618b725599b71188fd71e0b940aaf7176$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af4158015610226573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101af91906126c6565b6001600160d01b03166001149050600081610266576001610269565b60005b60ff1690506102e973__$3618b725599b71188fd71e0b940aaf7176$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af41580156102ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102de91906126c6565b601385019083610e8c565b50506040518215907fe782263e17b994d34e64f19af2397c26081a1f4c26c604acb8fb3db6bafc903e90600090a2505050565b600080610327610d7b565b600a8101546040516368377f6d60e11b8152600481018690529192506000916103a3916001600160a01b03169063d06efeda90602401602060405180830381865afa15801561037a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039e91906126ad565b610d9f565b90506103b26013830182610dd6565b6001600160d01b031660011492505050919050565b60006103db6103d68484610ea7565b6110d5565b6103e990633b9aca00612704565b90505b92915050565b6000806103fd610d7b565b90506104128461040d60016111c4565b6111e7565b50600061041e85611226565b601f8301546040516318be49d960e01b81529192506000916001600160a01b03909116906318be49d990610458908890869060040161271b565b602060405180830381865afa158015610475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104999190612734565b90506001600160a01b0381166104cd5784604051630d1c9abb60e31b81526004016104c49190612751565b60405180910390fd5b600086815260018085016020526040918290200154601f850154915163506b90db60e11b815290916001600160a01b03169063a0d721b690610513908590600401612751565b602060405180830381865afa158015610530573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610554919061277a565b156106115760208401546001600160a01b0316156105d55760208401546040516318b9baa160e01b81526001600160a01b03909116906318b9baa1906105a29084908a908c90600401612795565b600060405180830381600087803b1580156105bc57600080fd5b505af11580156105d0573d6000803e3d6000fd5b505050505b86826001600160a01b0316876001600160a01b0316600080516020612ac383398151915260405160405180910390a460009450505050506103ec565b601f840154604051632246f2db60e01b81526001600160a01b0390911690632246f2db906106459085908b9060040161271b565b602060405180830381865afa158015610662573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610686919061277a565b61078557600061069588611613565b9050806106a0611796565b6106aa90436127b4565b10156106cc576040516324852b2f60e11b8152600481018990526024016104c4565b60208501546001600160a01b0316156107485760208501546040516318b9baa160e01b81526001600160a01b03909116906318b9baa1906107159085908b908d90600401612795565b600060405180830381600087803b15801561072f57600080fd5b505af1158015610743573d6000803e3d6000fd5b505050505b87836001600160a01b0316886001600160a01b0316600080516020612ac383398151915260405160405180910390a46000955050505050506103ec565b60148401546000906001600160a01b031663d0ebb0ee886107a587610d9f565b6040518363ffffffff1660e01b81526004016107c29291906127c7565b600060405180830381865afa1580156107df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108079190810190612822565b509050806108585760208501546001600160a01b0316156107485760208501546040516318b9baa160e01b81526001600160a01b03909116906318b9baa1906107159085908b908d90600401612795565b601f8501546040516338b3ce1360e01b81526000916001600160a01b0316906338b3ce139061088d9087908d9060040161271b565b602060405180830381865afa1580156108aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ce91906128e2565b905060006108dd6001836128ff565b601f88015460405163c61c06e760e01b81529192506000916001600160a01b039091169063c61c06e790610917908d908b9060040161271b565b602060405180830381865afa158015610934573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095891906126ad565b90506000610965826110d5565b61097390633b9aca00612704565b604051631504e3b960e11b8152600481018e905290915060009073__$0f6271ecd36857987d374ff633d31cbc3c$__90632a09c77290602401602060405180830381865af41580156109c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ed91906128e2565b60ff166001811115610a0157610a01612918565b9050610a0d83826117a9565b610a1a8d8d8686866117e6565b610a288a8e8e86888e611973565b610a338a8e8e611abc565b6040805160ff86168152602081018590529081018390528d906001600160a01b03808b1691908f16907fe5aba2374a4ff3b54ee59beb7eabaae209c8a3e5d31185fd429458c2f887c21a9060600160405180910390a46040805160ff86168152602081018590529081018390526080606082018190526000908201528d906001600160a01b038e1690600080516020612aa38339815191529060a0015b60405180910390a350909b9a5050505050505050505050565b600080610af4610d7b565b9050610b048761040d60016111c4565b506000610b1088611226565b601f8301549091506001600160a01b031615610bc557601f8201546040516318be49d960e01b81526000916001600160a01b0316906318be49d990610b5b908b90869060040161271b565b602060405180830381865afa158015610b78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9c9190612734565b6001600160a01b031614610bc5578660405163640ed18360e01b81526004016104c49190612751565b601482015460009081906001600160a01b031663d0ebb0ee8a610be786610d9f565b6040518363ffffffff1660e01b8152600401610c049291906127c7565b600060405180830381865afa158015610c21573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c499190810190612822565b9150915081610c6f5788816040516344c4534960e01b81526004016104c492919061292e565b6000610c7b8a85610ea7565b90506000610c88826110d5565b610c9690633b9aca00612704565b604051631504e3b960e11b8152600481018e905290915060009073__$0f6271ecd36857987d374ff633d31cbc3c$__90632a09c77290602401602060405180830381865af4158015610cec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1091906128e2565b60ff166001811115610d2457610d24612918565b9050610d3083826117a9565b610d3d8d8d8d86866117e6565b610d4b878e8e868f8b611973565b8c8c6001600160a01b0316600080516020612aa38339815191528d86868f8f604051610ad0959493929190612970565b7fd09a0aaf4ab3087bae7fa25ef74ddd4e5a4950980903ce417e66228cf7dc7b0090565b600065ffffffffffff821115610dd2576040516306dfcc6560e41b815260306004820152602481018390526044016104c4565b5090565b815460009081816005811115610e35576000610df1846110d5565b610dfb90856129b7565b60008881526020902090915081015465ffffffffffff9081169087161015610e2557809150610e33565b610e308160016127b4565b92505b505b6000610e4387878585611b57565b90508015610e7e57610e6887610e5a6001846129b7565b600091825260209091200190565b54600160301b90046001600160d01b0316610e81565b60005b979650505050505050565b600080610e9a858585611bb9565b915091505b935093915050565b600080610eb2610d7b565b600c810154604051630748d63560e31b81529192506000916001600160a01b0390911690633a46b1a890610eec908890889060040161271b565b602060405180830381865afa158015610f09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2d91906126ad565b601f8301549091506001600160a01b0316610f4b5791506103ec9050565b601f8201546040516318be49d960e01b81526000916001600160a01b0316906318be49d990610f80908990899060040161271b565b602060405180830381865afa158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc19190612734565b6001600160a01b03161461104d57601f82015460405163c61c06e760e01b81526001600160a01b039091169063c61c06e790611003908890889060040161271b565b602060405180830381865afa158015611020573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104491906126ad565b925050506103ec565b601f82015460405163094f6f2960e21b81526001600160a01b039091169063253dbca490611081908890889060040161271b565b602060405180830381865afa15801561109e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c291906126ad565b6110cc90826127b4565b95945050505050565b6000816000036110e757506000919050565b600060016110f484611d33565b901c6001901b9050600181848161110d5761110d6129ca565b048201901c90506001818481611125576111256129ca565b048201901c9050600181848161113d5761113d6129ca565b048201901c90506001818481611155576111556129ca565b048201901c9050600181848161116d5761116d6129ca565b048201901c90506001818481611185576111856129ca565b048201901c9050600181848161119d5761119d6129ca565b048201901c90506111bd818285816111b7576111b76129ca565b04611dc7565b9392505050565b60008160098111156111d8576111d8612918565b600160ff919091161b92915050565b6000806111f384611ddd565b9050600083611201836111c4565b16036103e9578381846040516331b75e4d60e01b81526004016104c4939291906129e0565b600080611231610d7b565b90508060010160008481526020019081526020016000206001015481600a0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c591906126ad565b106113625760006112d4610d7b565b600a81015460008681526001808401602052604091829020015490516368377f6d60e11b815260048101919091529192506001600160a01b03169063d06efeda906024015b602060405180830381865afa158015611336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135a91906126ad565b949350505050565b600a81015460408051639cbe5efd60e01b815290516000926001600160a01b031691639cbe5efd9160048083019260209291908290030181865afa1580156113ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d291906126ad565b60008581526001808501602052604090912001546113f091906129b7565b905060006113ff6001836129b7565b83600a0160009054906101000a90046001600160a01b03166001600160a01b03166302a251a36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611454573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147891906126ad565b6114829190612704565b9050600083600a0160009054906101000a90046001600160a01b03166001600160a01b031663593728126040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ff91906126ad565b905073__$3618b725599b71188fd71e0b940aaf7176$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af415801561154a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156e91906126c6565b65ffffffffffff1681116115f45773__$3618b725599b71188fd71e0b940aaf7176$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af41580156115c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e991906126c6565b65ffffffffffff1690505b826115ff83836127b4565b61160991906127b4565b9695505050505050565b60008061161e610d7b565b90508060010160008481526020019081526020016000206001015481600a0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561168e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b291906126ad565b1061170a5760006116c1610d7b565b600a810154600086815260018084016020526040918290200154905163d3a368bd60e01b815260048101919091529192506001600160a01b03169063d3a368bd90602401611319565b80600a0160009054906101000a90046001600160a01b03166001600160a01b03166302a251a36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178391906126ad565b61178c84611226565b6111bd91906127b4565b60006117a0610d7b565b60220154905090565b60006117b482612184565b9050808310156117e15760405163742f62c360e01b815260048101829052602481018490526044016104c4565b505050565b60006117f0610d7b565b6000878152600f8201602090815260408083206001600160a01b038a16845260038101909252909120549192509060ff161561184157856040516371c6af4960e01b81526004016104c49190612751565b6001600160a01b03861660009081526003820160205260408120805460ff1916600117905561186e610119565b611878578361187a565b845b905060ff86166118a3578082600001600082825461189891906127b4565b909155506118fc9050565b60001960ff8716016118c3578082600101600082825461189891906127b4565b60011960ff8716016118e3578082600201600082825461189891906127b4565b6040516303599be160e11b815260040160405180910390fd5b60008881526011840160205260408120805487929061191c9084906127b4565b90915550506001600160a01b038716600090815260108401602052604090205460ff16611969576001600160a01b03871660009081526010840160205260409020805460ff191660011790555b5050505050505050565b600986015460405163a7381dab60e01b81526004810183905260009182916101009091046001600160a01b03169063a7381dab906024016040805180830381865afa1580156119c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ea9190612a08565b9150915060008460ff16600214611a015782611a03565b815b90506000612710611a148389612704565b611a1e9190612a2c565b60098b015490915061010090046001600160a01b0316632f18339d8a8a84611a45816110d5565b6040516001600160e01b031960e087901b16815260048101949094526001600160a01b03909216602484015260448301526064820152608401600060405180830381600087803b158015611a9857600080fd5b505af1158015611aac573d6000803e3d6000fd5b5050505050505050505050505050565b60208301546001600160a01b0316611ad357505050565b602080840154600084815260018087019093526040808220909301549251636cf88e7360e01b81526001600160a01b0390921692636cf88e7392611b209233928792909190600401612a4e565b600060405180830381600087803b158015611b3a57600080fd5b505af1158015611b4e573d6000803e3d6000fd5b50505050505050565b60005b81831015611bb1576000611b6e848461223a565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff161115611b9d57809250611bab565b611ba88160016127b4565b93505b50611b5a565b509392505050565b825460009081908015611cd8576000611bd787610e5a6001856129b7565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b031660208401529192509087161015611c2b57604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff808816911603611c775784611c4e88610e5a6001866129b7565b80546001600160d01b0392909216600160301b0265ffffffffffff909216919091179055611cc8565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b602001519250839150610e9f9050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b029190931617920191909155905081610e9f565b600080608083901c15611d4857608092831c92015b604083901c15611d5a57604092831c92015b602083901c15611d6c57602092831c92015b601083901c15611d7e57601092831c92015b600883901c15611d9057600892831c92015b600483901c15611da257600492831c92015b600283901c15611db457600292831c92015b600183901c156103ec5760010192915050565b6000818310611dd657816103e9565b5090919050565b600080611de8610d7b565b6000848152600180830160209081526040808420601e8601909252909220546002830154939450919260ff92831692600160281b8204811692600160301b9092041690836002811115611e3d57611e3d612918565b03611e4f575060089695505050505050565b6002836002811115611e6357611e63612918565b03611e75575060099695505050505050565b8115611e88575060069695505050505050565b8015611e9b575060029695505050505050565b8360010154600003611ec357604051636ad0607560e01b8152600481018890526024016104c4565b836001015485600a0160009054906101000a90046001600160a01b03166001600160a01b0316639cbe5efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4191906126ad565b1015611f54575060009695505050505050565b600073__$3618b725599b71188fd71e0b940aaf7176$__6391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865af4158015611f9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc391906126c6565b65ffffffffffff1690506000611fd889611613565b9050611fe389612255565b611ff65750600798975050505050505050565b81811061200c5750600198975050505050505050565b61201589612281565b15806120275750612025896122df565b155b1561203b5750600398975050505050505050565b61204489612307565b60000361205a5750600498975050505050505050565b6000898152600788016020526040908190205460068901549151632c258a9f60e11b81526004810182905290916001600160a01b03169063584b153e90602401602060405180830381865afa1580156120b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120db919061277a565b156120f0575060059998505050505050505050565b6006880154604051632ab0f52960e01b8152600481018390526001600160a01b0390911690632ab0f52990602401602060405180830381865afa15801561213b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215f919061277a565b15612174575060069998505050505050505050565b5060029998505050505050505050565b60008061218f610d7b565b905061219a83612339565b6121fa5760405162461bcd60e51b815260206004820152602b60248201527f476f7665726e6f72436f6e666967757261746f723a20696e76616c696420707260448201526a6f706f73616c207479706560a81b60648201526084016104c4565b80601701600084600181111561221257612212612918565b600181111561222357612223612918565b815260200190815260200160002054915050919050565b60006122496002848418612a2c565b6103e9908484166127b4565b600080612260610d7b565b60009384526001016020525050604090206004810154600390910154101590565b60008061228c610d7b565b6000848152601582016020908152604080832054601185019092529091205491925060ff16906122d56122be86611226565b8360018111156122d0576122d0612918565b612370565b1115949350505050565b6000806122ea610d7b565b6000938452600f0160205250506040902080546001909101541190565b600080612312610d7b565b600093845260010160205250506040902060020154600160381b900465ffffffffffff1690565b60008082600181111561234e5761234e612918565b14806103ec5750600182600181111561236957612369612918565b1492915050565b60008061237b610d7b565b90506064612389858561240c565b600c830154604051632394e7a360e21b8152600481018890526001600160a01b0390911690638e539e8c90602401602060405180830381865afa1580156123d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f891906126ad565b6124029190612704565b61135a9190612a2c565b60006103e9838360ff16600181111561242757612427612918565b600080612432610d7b565b9050600081601801600085600181111561244e5761244e612918565b600181111561245f5761245f612918565b815260208101919091526040016000908120549150601883018186600181111561248b5761248b612918565b600181111561249c5761249c612918565b815260208101919091526040016000206124b76001846129b7565b815481106124c7576124c7612a8c565b6000918252602090912001805490915065ffffffffffff811690600160301b90046001600160d01b031687821161250d576001600160d01b031694506103ec9350505050565b61255e61251989610d9f565b8660180160008a600181111561253157612531612918565b600181111561254257612542612918565b8152602001908152602001600020610dd690919063ffffffff16565b6001600160d01b031698975050505050505050565b60006020828403121561258557600080fd5b5035919050565b6001600160a01b03811681146125a157600080fd5b50565b600080604083850312156125b757600080fd5b82356125c28161258c565b946020939093013593505050565b600080604083850312156125e357600080fd5b8235915060208301356125f58161258c565b809150509250929050565b60ff811681146125a157600080fd5b60008060008060006080868803121561262757600080fd5b8535945060208601356126398161258c565b9350604086013561264981612600565b925060608601356001600160401b038082111561266557600080fd5b818801915088601f83011261267957600080fd5b81358181111561268857600080fd5b89602082850101111561269a57600080fd5b9699959850939650602001949392505050565b6000602082840312156126bf57600080fd5b5051919050565b6000602082840312156126d857600080fd5b815165ffffffffffff811681146103e957600080fd5b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176103ec576103ec6126ee565b6001600160a01b03929092168252602082015260400190565b60006020828403121561274657600080fd5b81516103e98161258c565b6001600160a01b0391909116815260200190565b8051801515811461277557600080fd5b919050565b60006020828403121561278c57600080fd5b6103e982612765565b9283526001600160a01b03919091166020830152604082015260600190565b808201808211156103ec576103ec6126ee565b6001600160a01b0392909216825265ffffffffffff16602082015260400190565b634e487b7160e01b600052604160045260246000fd5b60005b838110156128195781810151838201526020016128015