0 txs
0 calls
constructor
constructor(address stakingAdr)
functions
addressVoted
viewfunction addressVoted(address) view returns (bool)
addressVotedFor
viewfunction addressVotedFor(address, uint256) view returns (uint256)
addressVotedForProposal
viewfunction addressVotedForProposal(address, uint256) view returns (bool)
authorization
viewfunction authorization(address) view returns (bool)
currentTimestamp
viewfunction currentTimestamp() view returns (uint256)
DENOMINATOR
viewfunction DENOMINATOR() view returns (uint256)
getAllOptions
viewfunction getAllOptions(uint256 proposalID) view returns (string[])
getAllProposals
viewfunction getAllProposals() view returns (tuple[])
getAllUserVotedProposals
viewfunction getAllUserVotedProposals(address account) view returns (tuple[])
getAllVoters
viewfunction getAllVoters() view returns (address[])
getAllVotersForProposal
viewfunction getAllVotersForProposal(uint256 proposalID) view returns (address[])
getEligibleProposers
viewfunction getEligibleProposers() view returns (tuple[])
getEligibleVoters
viewfunction getEligibleVoters() view returns (tuple[])
getMultipliedVote
viewfunction getMultipliedVote(address user, uint256 proposalID) view returns (uint256)
getProposalsInRange
viewfunction getProposalsInRange(uint256 start, uint256 end) view returns (tuple[])
getProposerEligibility
viewfunction getProposerEligibility(address user) view returns (bool)
getUserTotalVotesForAllProposals
viewfunction getUserTotalVotesForAllProposals(address account) view returns (uint256[])
getUserVotedOptionsForAllProposals
viewfunction getUserVotedOptionsForAllProposals(address account) view returns (uint256[][])
getUserVotedOptionsForSpecificProposals
viewfunction getUserVotedOptionsForSpecificProposals(address account, uint256 proposalID) view returns (uint256[])
getUserVotedProposalsInRange
viewfunction getUserVotedProposalsInRange(address account, uint256 start, uint256 end) view returns (tuple[])
getVotedOptionsForAllProposals
viewfunction getVotedOptionsForAllProposals() view returns (uint256[][])
getVotedOptionsForSpecificProposals
viewfunction getVotedOptionsForSpecificProposals(uint256 proposalID) view returns (uint256[])
getVoterEligibility
viewfunction getVoterEligibility(address user) view returns (bool)
isGovernance
purefunction isGovernance() pure returns (bool)
minStakingToPropose
viewfunction minStakingToPropose() view returns (uint256)
minStakingToVote
viewfunction minStakingToVote() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
projectOwner
viewfunction projectOwner() view returns (address)
proposal
viewfunction proposal(uint256) view returns (string proposalInfo, uint256 startTime, uint256 endTime, bool approved, bool rejected, address proposedBy)
proposalToAddressSpecificVoteTotal
viewfunction proposalToAddressSpecificVoteTotal(uint256, address, uint256) view returns (uint256)
proposalToAddressVoteStatus
viewfunction proposalToAddressVoteStatus(uint256, address) view returns (bool)
proposalToAddressVoteTotal
viewfunction proposalToAddressVoteTotal(uint256, address) view returns (uint256)
proposalToTotalVoteOptions
viewfunction proposalToTotalVoteOptions(uint256) view returns (uint256)
proposalToTotalVoters
viewfunction proposalToTotalVoters(uint256) view returns (uint256)
proposalToVoteOptions
viewfunction proposalToVoteOptions(uint256, uint256) view returns (string)
proposalToVoters
viewfunction proposalToVoters(uint256, uint256) view returns (address)
proposalVoteCount
viewfunction proposalVoteCount(uint256, uint256) view returns (uint256)
proposedBy
viewfunction proposedBy(uint256) view returns (address)
staking
viewfunction staking() view returns (address)
totalEligibleProposers
viewfunction totalEligibleProposers() view returns (uint256)
totalEligibleVoters
viewfunction totalEligibleVoters() view returns (uint256)
totalProposals
viewfunction totalProposals() view returns (uint256)
totalVotersVoted
viewfunction totalVotersVoted() view returns (uint256)
totalVotes
viewfunction totalVotes() view returns (uint256)
voters
viewfunction voters(uint256) view returns (address)
wTokenLocked
viewfunction wTokenLocked() view returns (bool)
approveProposal
nonpayablefunction approveProposal(uint256 proposalID)
authorize
nonpayablefunction authorize(address account)
createProposal
nonpayablefunction createProposal(uint256 timeStart, uint256 timeEnd, string info, string[] options)
editProposalInfo
nonpayablefunction editProposalInfo(uint256 proposalID, string newInfo)
editProposalOptions
nonpayablefunction editProposalOptions(uint256 proposalID, uint256 optionID, string newOption)
editProposalTimeInfo
nonpayablefunction editProposalTimeInfo(uint256 proposalID, uint256 newTimeStart, uint256 newTimeEnd)
pause
nonpayablefunction pause()
rejectProposal
nonpayablefunction rejectProposal(uint256 proposalID)
renounceOwnership
nonpayablefunction renounceOwnership()
replaceProposalOptions
nonpayablefunction replaceProposalOptions(uint256 proposalID, string[] newOptions)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unauthorize
nonpayablefunction unauthorize(address account)
unpause
nonpayablefunction unpause()
updateMinStakingToPropose
nonpayablefunction updateMinStakingToPropose(uint256 newMinStakingToPropose)
updateMinStakingToVote
nonpayablefunction updateMinStakingToVote(uint256 newMinStakingToVote)
vote
nonpayablefunction vote(uint256 proposalID, uint256 optionID)
wTokens
nonpayablefunction wTokens(address tokenAddress, uint256 amount)
events
EditMinStakingToPropose
event EditMinStakingToPropose(uint256 oldMinStakingToPropose, uint256 newMinStakingToPropose, address caller, uint256 timestamp)
EditMinStakingToVote
event EditMinStakingToVote(uint256 oldMinStakingToVote, uint256 newMinStakingToVote, address caller, uint256 timestamp)
EditProposalInfo
event EditProposalInfo(uint256 id, string oldInfo, string newInfo, address caller, uint256 timestamp)
EditProposalOption
event EditProposalOption(uint256 id, string oldOption, string newOption, address caller, uint256 timestamp)
EditProposalTimeInfo
event EditProposalTimeInfo(uint256 id, uint256 oldTimeStart, uint256 oldTimeEnd, uint256 newTimeStart, uint256 newTimeEnd, address caller, uint256 timestamp)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
ProposalApproved
event ProposalApproved(uint256 proposalID, address caller, uint256 timestamp)
ProposalCreated
event ProposalCreated(uint256 id, uint256 timeStart, uint256 timeEnd, uint256 totalOptions, string[] options, string info, address caller, uint256 timestamp)
ProposalRejected
event ProposalRejected(uint256 proposalID, address caller, uint256 timestamp)
ReplaceProposalOption
event ReplaceProposalOption(uint256 id, string[] oldOptions, string[] newOptions, address caller, uint256 timestamp)
Unpaused
event Unpaused(address account)
UpdateAuthorizedAccount
event UpdateAuthorizedAccount(address authorizedAccount, address caller, bool state, uint256 timestamp)
VotedFor
event VotedFor(uint256 id, uint256 optionId, string optionsInfo, uint256 votes, address caller, uint256 timestamp)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
AlreadyVoted
error AlreadyVoted()
CanNoLongerRescueFund
error CanNoLongerRescueFund()
CannotUseCurrentAddress
error CannotUseCurrentAddress(address current)
CannotUseCurrentState
error CannotUseCurrentState(bool current)
CannotUseCurrentValue
error CannotUseCurrentValue(uint256 current)
CurrentAuthorizedState
error CurrentAuthorizedState(address account, bool state)
EmptyOptionsArray
error EmptyOptionsArray()
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
FailedInnerCall
error FailedInnerCall()
InvalidAddress
error InvalidAddress(address invalid)
InvalidAuthorizedAccount
error InvalidAuthorizedAccount(address account)
InvalidEndTime
error InvalidEndTime(uint256 end)
InvalidOptionID
error InvalidOptionID(uint256 invalid, uint256 max)
InvalidProposalID
error InvalidProposalID(uint256 invalid, uint256 max)
InvalidStartTime
error InvalidStartTime(uint256 start)
InvalidTimeRange
error InvalidTimeRange(uint256 start, uint256 end)
InvalidValue
error InvalidValue(uint256 invalid)
NoMoreVotingPowerForThisProposal
error NoMoreVotingPowerForThisProposal()
NotEligibleToPropose
error NotEligibleToPropose()
NotEligibleToVote
error NotEligibleToVote()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ProjectOwnerCannotInitiateTransferEther
error ProjectOwnerCannotInitiateTransferEther()
ProposalRejectedByAuthorizedAccountOrOwner
error ProposalRejectedByAuthorizedAccountOrOwner()
ProposalWasNotApprovedByAuthorizedAccountOrOwner
error ProposalWasNotApprovedByAuthorizedAccountOrOwner()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
VotingAlreadyEnd
error VotingAlreadyEnd(uint256 endTime)
VotingNotYetStart
error VotingNotYetStart(uint256 startTime)
creation bytecode
0x60a06040526a01bcb13a657b26388000006006556a115eec47f6cf7e350000006007556008805460ff191690553480156200003957600080fd5b50604051620057ea380380620057ea8339810160408190526200005c91620002aa565b3380806200008557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200009081620000e6565b506200009c8162000136565b6001600160a01b0381163314620000b857620000b83362000136565b50600280546001600160a01b03929092166080526001600160a81b03199091166101003302179055620002dc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620001406200019d565b6001600160a01b03811615806200016157506001600160a01b03811661dead145b156200018c57604051635077b8ed60e11b81526001600160a01b03821660048201526024016200007c565b6200019a81336001620001de565b50565b33620001b16000546001600160a01b031690565b6001600160a01b031614620001dc5760405163118cdaa760e01b81523360048201526024016200007c565b565b6001600160a01b03831660009081526001602052604090205481151560ff9091161515036200023457604051635ce75a3b60e01b81526001600160a01b038416600482015281151560248201526044016200007c565b6001600160a01b03838116600081815260016020908152604091829020805460ff19168615159081179091558251938452938616908301528101919091524260608201527fff1d0a27274ca0cc8403b0e8f4a70b968164366f4856d18f7569eba542e9aae49060800160405180910390a1505050565b600060208284031215620002bd57600080fd5b81516001600160a01b0381168114620002d557600080fd5b9392505050565b6080516154b362000337600039600081816105df01528181610f020152818161106c01528181611cec0152818161204f0152818161299e015281816134bd01528181613a130152818161401e01526140fd01526154b36000f3fe6080604052600436106103475760003560e01c80638ee704e6116101b2578063bc28d878116100ed578063da58c7d911610090578063da58c7d914610b3a578063db3a4bc614610b70578063e575ed8714610b84578063e5cd489f14610ba4578063eb37906f14610bc4578063f0b37c0414610bda578063f2fde38b14610bfa578063ff5584a314610c1a57600080fd5b8063bc28d87814610a1f578063c0eed4e414610a3f578063ca64b17f14610a5f578063ca97aead14610a7f578063cbe1296914610ab5578063cceb68f514610ae5578063ce9021b014610afa578063d404bba114610b1a57600080fd5b8063a77726e611610155578063a77726e6146108e6578063a78d80fc14610916578063b384abef1461092c578063b51212621461094c578063b6a5d7de14610987578063b746a730146109a7578063ba459d89146109c7578063bb96327a146109e757600080fd5b80638ee704e6146107ce5780639180d2a0146107fb578063918f86741461081b57806398951b56146108325780639ad8aae214610852578063a01647e61461087f578063a07ba87514610894578063a4475ce4146108c157600080fd5b806344e57d9811610282578063705d923611610225578063705d9236146106d8578063715018a6146106ed57806378622c5d1461070257806379d31dec146107185780638456cb591461073a5780638790d3e61461074f57806387b6f2601461076f5780638da5cb5b146107b057600080fd5b806344e57d98146105ad5780634cf088d9146105cd5780634f7bb0351461060e5780634fbb98361461063b578063570b1e481461065d57806358b63ea91461067d5780635ad1e48f146106935780635c975abb146106c057600080fd5b806320d99534116102ea57806320d995341461048557806322a6c3541461049f57806330326c17146104d7578063336074b31461050957806333dc401014610536578063355fe1fe1461055657806335bbe70e146105765780633f4ba83a1461059857600080fd5b80630c60c70f146103535780630d15fd7714610389578063107b96d1146103ad57806310eaf892146103c2578063120c2787146103e457806312fdf0dc146104225780631e2ff94f146104525780631f685bac1461046557600080fd5b3661034e57005b600080fd5b34801561035f57600080fd5b5061037361036e3660046145cc565b610c55565b6040516103809190614696565b60405180910390f35b34801561039557600080fd5b5061039f60045481565b604051908152602001610380565b3480156103b957600080fd5b5061039f610efd565b3480156103ce57600080fd5b506103e26103dd36600461475e565b610fe2565b005b3480156103f057600080fd5b5061039f6103ff36600461478c565b601660209081526000938452604080852082529284528284209052825290205481565b34801561042e57600080fd5b5061044261043d3660046147c4565b611065565b6040519015158152602001610380565b34801561045e57600080fd5b504261039f565b34801561047157600080fd5b506103e26104803660046147e1565b611100565b34801561049157600080fd5b506008546104429060ff1681565b3480156104ab57600080fd5b5061039f6104ba36600461480d565b601460209081526000928352604080842090915290825290205481565b3480156104e357600080fd5b506104f76104f236600461475e565b61124e565b6040516103809695949392919061483d565b34801561051557600080fd5b506105296105243660046147c4565b61131d565b60405161038091906148bf565b34801561054257600080fd5b506103e2610551366004614af3565b6115a7565b34801561056257600080fd5b50610529610571366004614b39565b6118a7565b34801561058257600080fd5b5061058b611ba8565b6040516103809190614b6e565b3480156105a457600080fd5b506103e2611c5e565b3480156105b957600080fd5b506103e26105c836600461475e565b611c78565b3480156105d957600080fd5b506106017f000000000000000000000000000000000000000000000000000000000000000081565b6040516103809190614bbb565b34801561061a57600080fd5b5061039f61062936600461475e565b60116020526000908152604090205481565b34801561064757600080fd5b50610650611ce6565b6040516103809190614bcf565b34801561066957600080fd5b506103e2610678366004614c46565b611f10565b34801561068957600080fd5b5061039f60075481565b34801561069f57600080fd5b5061039f6106ae36600461475e565b600f6020526000908152604090205481565b3480156106cc57600080fd5b5060025460ff16610442565b3480156106e457600080fd5b5061039f61204a565b3480156106f957600080fd5b506103e2612128565b34801561070e57600080fd5b5061039f60055481565b34801561072457600080fd5b5061072d61213a565b6040516103809190614c95565b34801561074657600080fd5b506103e2612296565b34801561075b57600080fd5b506103e261076a366004614cf7565b6122ae565b34801561077b57600080fd5b5061060161078a3660046145cc565b60106020908152600092835260408084209091529082529020546001600160a01b031681565b3480156107bc57600080fd5b506000546001600160a01b0316610601565b3480156107da57600080fd5b506107ee6107e93660046147e1565b61256f565b6040516103809190614d6d565b34801561080757600080fd5b506103e2610816366004614d80565b612681565b34801561082757600080fd5b5061039f620186a081565b34801561083e57600080fd5b506103e261084d36600461475e565b612854565b34801561085e57600080fd5b5061087261086d3660046145cc565b6128f3565b6040516103809190614dbc565b34801561088b57600080fd5b50610650612998565b3480156108a057600080fd5b506108b46108af36600461475e565b612bb8565b6040516103809190614e17565b3480156108cd57600080fd5b506002546106019061010090046001600160a01b031681565b3480156108f257600080fd5b506104426109013660046147c4565b600b6020526000908152604090205460ff1681565b34801561092257600080fd5b5061039f60035481565b34801561093857600080fd5b506103e26109473660046145cc565b612d40565b34801561095857600080fd5b506104426109673660046147e1565b600d60209081526000928352604080842090915290825290205460ff1681565b34801561099357600080fd5b506103e26109a23660046147c4565b6131c1565b3480156109b357600080fd5b506103e26109c2366004614e2a565b613218565b3480156109d357600080fd5b5061039f6109e23660046147e1565b6133ef565b3480156109f357600080fd5b5061039f610a023660046145cc565b601360209081526000928352604080842090915290825290205481565b348015610a2b57600080fd5b506103e2610a3a36600461475e565b613420565b348015610a4b57600080fd5b50610442610a5a3660046147c4565b6134b6565b348015610a6b57600080fd5b506107ee610a7a36600461475e565b613507565b348015610a8b57600080fd5b50610601610a9a36600461475e565b6009602052600090815260409020546001600160a01b031681565b348015610ac157600080fd5b50610442610ad03660046147c4565b60016020526000908152604090205460ff1681565b348015610af157600080fd5b506103736135fc565b348015610b0657600080fd5b506107ee610b153660046147c4565b613874565b348015610b2657600080fd5b5061058b610b3536600461475e565b61393b565b348015610b4657600080fd5b50610601610b5536600461475e565b600c602052600090815260409020546001600160a01b031681565b348015610b7c57600080fd5b506001610442565b348015610b9057600080fd5b5061039f610b9f3660046147e1565b613a0e565b348015610bb057600080fd5b5061072d610bbf3660046147c4565b613b30565b348015610bd057600080fd5b5061039f60065481565b348015610be657600080fd5b506103e2610bf53660046147c4565b613ca0565b348015610c0657600080fd5b506103e2610c153660046147c4565b613cf4565b348015610c2657600080fd5b50610442610c3536600461480d565b601560209081526000928352604080842090915290825290205460ff1681565b6003546060908290811115610c6957506003545b6000610c758585614e6c565b90506000610c84826001614e7f565b6001600160401b03811115610c9b57610c9b614942565b604051908082528060200260200182016040528015610cd457816020015b610cc161448d565b815260200190600190039081610cb95790505b50905060005b828111610ef157600a6000610cef838a614e7f565b81526020019081526020016000206040518060e0016040529081600082018054610d1890614e92565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4490614e92565b8015610d915780601f10610d6657610100808354040283529160200191610d91565b820191906000526020600020905b815481529060010190602001808311610d7457829003601f168201915b505050918352505060018201546020808301919091526002830154604080840191909152600384015460ff80821615156060860152610100820416151560808501526201000090046001600160a01b031660a084015260048401805482518185028101850190935280835260c090940193919290919060009084015b82821015610eb9578382906000526020600020018054610e2c90614e92565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5890614e92565b8015610ea55780601f10610e7a57610100808354040283529160200191610ea5565b820191906000526020600020905b815481529060010190602001808311610e8857829003601f168201915b505050505081526020019060010190610e0d565b5050505081525050828281518110610ed357610ed3614ec6565b60200260200101819052508080610ee990614edc565b915050610cda565b50925050505b92915050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636d763a6e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610f5e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f869190810190614ef5565b90506000805b8251811015610fdb57600654838281518110610faa57610faa614ec6565b60200260200101516000015110610fc95781610fc581614edc565b9250505b80610fd381614edc565b915050610f8c565b5092915050565b610fea613d92565b600654810361101b5760065460405163657e16cf60e01b815260040161101291815260200190565b60405180910390fd5b60068054908290556040517f194c2dfa0e532019d02c3c9319314df5b8b422a0da75eab9edf2b292d6797a3790611059908390859033904290614fcf565b60405180910390a15050565b60006007547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fe70078b846040518263ffffffff1660e01b81526004016110b69190614bbb565b608060405180830381865afa1580156110d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f79190614ff3565b51101592915050565b60085460ff1615611124576040516328810dfd60e21b815260040160405180910390fd5b806001600160a01b0383166111b2578160000361113e5750475b60025461010090046001600160a01b0316330361116e576040516341e8951160e11b815260040160405180910390fd5b6002546040516101009091046001600160a01b0316906108fc8315029083906000818181858888f193505050501580156111ac573d6000803e3d6000fd5b50505050565b8160000361122a576040516370a0823160e01b81526001600160a01b038416906370a08231906111e6903090600401614bbb565b602060405180830381865afa158015611203573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112279190615058565b90505b600254611249906001600160a01b038581169161010090041683613dc4565b505050565b600a6020526000908152604090208054819061126990614e92565b80601f016020809104026020016040519081016040528092919081815260200182805461129590614e92565b80156112e25780601f106112b7576101008083540402835291602001916112e2565b820191906000526020600020905b8154815290600101906020018083116112c557829003601f168201915b505050600184015460028501546003909501549394909390925060ff8082169250610100820416906001600160a01b03620100009091041686565b6001600160a01b0381166000908152600e6020526040812054606091816001600160401b0381111561135157611351614942565b6040519080825280602002602001820160405280156113a657816020015b61139360405180606001604052806060815260200160008152602001606081525090565b81526020019060019003908161136f5790505b50905060005b8281101561159f576001600160a01b0385166000908152600e602052604081208054839081106113de576113de614ec6565b60009182526020808320909101548083526011909152604082205490925090816001600160401b0381111561141557611415614942565b60405190808252806020026020018201604052801561143e578160200160208202803683370190505b50905060005b828110156114b85760008481526016602090815260408083206001600160a01b038d16845290915281209061147a836001614e7f565b81526020019081526020016000205482828151811061149b5761149b614ec6565b6020908102919091010152806114b081614edc565b915050611444565b50604080516060810182526000858152600a6020529190912080548291906114df90614e92565b80601f016020809104026020016040519081016040528092919081815260200182805461150b90614e92565b80156115585780601f1061152d57610100808354040283529160200191611558565b820191906000526020600020905b81548152906001019060200180831161153b57829003601f168201915b505050505081526020018481526020018281525085858151811061157e5761157e614ec6565b6020026020010181905250505050808061159790614edc565b9150506113ac565b509392505050565b3360009081526001602052604090205460ff1615806115dd57506000828152600960205260409020546001600160a01b03163314155b156115fd573360405163118cdaa760e01b81526004016110129190614bbb565b600182108061160d575060035482115b156116395760035460405163b0f9d8f160e01b8152611012918491600401918252602082015260400190565b6000828152600a60205260409020600101544210611681576000828152600a6020526040908190206001015490516376429b5760e01b81526004810191909152602401611012565b6001815110156116a45760405163768a8a9b60e11b815260040160405180910390fd5b6000828152601160205260408120805483519182905591826001600160401b038111156116d3576116d3614942565b60405190808252806020026020018201604052801561170657816020015b60608152602001906001900390816116f15790505b5090506000828411611718578261171a565b835b905060015b81811161185f578481116117f95760008781526012602090815260408083208484529091529020805461175190614e92565b80601f016020809104026020016040519081016040528092919081815260200182805461177d90614e92565b80156117ca5780601f1061179f576101008083540402835291602001916117ca565b820191906000526020600020905b8154815290600101906020018083116117ad57829003601f168201915b5050505050836001836117dd9190614e6c565b815181106117ed576117ed614ec6565b60200260200101819052505b8381116118335761182e878288611811600183614e6c565b8151811061182157611821614ec6565b6020026020010151613e16565b61184d565b61184d878260405180602001604052806000815250613e16565b8061185781614edc565b91505061171f565b507f833cd514ad76f49ab61155d2286441fb6788e1eae30b4828dd266c5d4dc012348683873342604051611897959493929190615071565b60405180910390a1505050505050565b606060018310806118b757508183115b156118d85760405163181c9d0b60e21b815260048101849052602401611012565b600060035483116118e957826118ed565b6003545b905060006118fb8583614e6c565b611906906001614e7f565b90506000816001600160401b0381111561192257611922614942565b60405190808252806020026020018201604052801561197757816020015b61196460405180606001604052806060815260200160008152602001606081525090565b8152602001906001900390816119405790505b50905060005b82811015611b9b576001600160a01b0388166000908152600e60205260408120826119a960018b614e6c565b6119b39190614e7f565b815481106119c3576119c3614ec6565b60009182526020808320909101548083526011909152604082205490925090816001600160401b038111156119fa576119fa614942565b604051908082528060200260200182016040528015611a23578160200160208202803683370190505b50905060005b82811015611ab4576016600085815260200190815260200160002060008d6001600160a01b03166001600160a01b031681526020019081526020016000206000826001611a769190614e7f565b815260200190815260200160002054828281518110611a9757611a97614ec6565b602090810291909101015280611aac81614edc565b915050611a29565b50604080516060810182526000858152600a602052919091208054829190611adb90614e92565b80601f0160208091040260200160405190810160405280929190818152602001828054611b0790614e92565b8015611b545780601f10611b2957610100808354040283529160200191611b54565b820191906000526020600020905b815481529060010190602001808311611b3757829003601f168201915b5050505050815260200184815260200182815250858581518110611b7a57611b7a614ec6565b60200260200101819052505050508080611b9390614edc565b91505061197d565b50925050505b9392505050565b606060006005546001600160401b03811115611bc657611bc6614942565b604051908082528060200260200182016040528015611bef578160200160208202803683370190505b50905060005b600554811015611c58576000818152600c602052604090205482516001600160a01b0390911690839083908110611c2e57611c2e614ec6565b6001600160a01b039092166020928302919091019091015280611c5081614edc565b915050611bf5565b50919050565b611c66613f26565b611c6e613d92565b611c76613f49565b565b611c80613d92565b6007548103611ca85760075460405163657e16cf60e01b815260040161101291815260200190565b60078054908290556040517fa17750a05de5a474154042c002ad158cc331def72c7960178dacaea0dff8a92390611059908390859033904290614fcf565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636d763a6e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611d48573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d709190810190614ef5565b90506000611d7c61204a565b90506000816001600160401b03811115611d9857611d98614942565b604051908082528060200260200182016040528015611dd157816020015b611dbe6144d7565b815260200190600190039081611db65790505b5090506000805b8451811015611f0657600754858281518110611df657611df6614ec6565b60200260200101516000015110611ef4576040518060a00160405280868381518110611e2457611e24614ec6565b6020026020010151600001518152602001868381518110611e4757611e47614ec6565b6020026020010151602001518152602001868381518110611e6a57611e6a614ec6565b6020026020010151604001518152602001868381518110611e8d57611e8d614ec6565b6020026020010151606001518152602001868381518110611eb057611eb0614ec6565b6020026020010151608001516001600160a01b0316815250838381518110611eda57611eda614ec6565b60200260200101819052508180611ef090614edc565b9250505b80611efe81614edc565b915050611dd8565b5090949350505050565b3360009081526001602052604090205460ff161580611f4657506000838152600960205260409020546001600160a01b03163314155b15611f66573360405163118cdaa760e01b81526004016110129190614bbb565b6001831080611f76575060035483115b15611fa25760035460405163b0f9d8f160e01b8152611012918591600401918252602082015260400190565b6001821080611fbe575060008381526011602052604090205482115b15611ff75760008381526011602052604090819020549051630810a50760e01b8152611012918491600401918252602082015260400190565b6000838152600a6020526040902060010154421061203f576000838152600a6020526040908190206001015490516376429b5760e01b81526004810191909152602401611012565b611249838383613e16565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636d763a6e6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156120ab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120d39190810190614ef5565b90506000805b8251811015610fdb576007548382815181106120f7576120f7614ec6565b60200260200101516000015110612116578161211281614edc565b9250505b8061212081614edc565b9150506120d9565b612130613f59565b611c766000613f95565b606060006003546001600160401b0381111561215857612158614942565b60405190808252806020026020018201604052801561218b57816020015b60608152602001906001900390816121765790505b50905060005b600354811015611c585760006121a8826001614e7f565b600081815260116020526040812054919250816001600160401b038111156121d2576121d2614942565b6040519080825280602002602001820160405280156121fb578160200160208202803683370190505b50905060005b8281101561226157600084815260136020526040812090612223836001614e7f565b81526020019081526020016000205482828151811061224457612244614ec6565b60209081029190910101528061225981614edc565b915050612201565b508085858151811061227557612275614ec6565b6020026020010181905250505050808061228e90614edc565b915050612191565b61229e613fe5565b6122a6613d92565b611c76614009565b6122b6613fe5565b836122c34261012c614e7f565b101580156122db5750826122d985610708614e7f565b115b1561230357604051630e781b2360e31b81526004810185905260248101849052604401611012565b836123104261012c614e7f565b10612331576040516376429b5760e01b815260048101859052602401611012565b8261233e85610708614e7f565b1115612360576040516382e42d1160e01b815260048101849052602401611012565b6001815110156123835760405163768a8a9b60e11b815260040160405180910390fd5b61238c33611065565b6123a957604051633249300d60e11b815260040160405180910390fd5b6000815190506001600360008282546123c29190614e7f565b90915550506003805460009081526009602090815260408083208054336001600160a01b0319909116811790915584548452600a9092528083208401805462010000600160b01b0319166201000090930292909217909155825482528082206001018890558254825280822060020187905591548152206124438482615108565b506003546000908152600a60209081526040909120835161246c9260049092019185019061450f565b50600380546000908152600a602090815260408083208401805460ff19169055835483528083208401805461ff001916905592548252601190522081905560015b81811161251557826124c0600183614e6c565b815181106124d0576124d0614ec6565b602090810291909101810151600354600090815260128352604080822085835290935291909120906125029082615108565b508061250d81614edc565b9150506124ad565b506125203385614019565b507fc26bad037b818824c42f4a2ce13907246a6e95f68446056b52e0ee2251a43d97600354868684868833426040516125609897969594939291906151c7565b60405180910390a15050505050565b60606001821080612581575060035482115b156125ad5760035460405163b0f9d8f160e01b8152611012918491600401918252602082015260400190565b60008281526011602052604081205490816001600160401b038111156125d5576125d5614942565b6040519080825280602002602001820160405280156125fe578160200160208202803683370190505b50905060005b828110156126785760008581526016602090815260408083206001600160a01b038a16845290915281209061263a836001614e7f565b81526020019081526020016000205482828151811061265b5761265b614ec6565b60209081029190910101528061267081614edc565b915050612604565b50949350505050565b3360009081526001602052604090205460ff1615806126b757506000828152600960205260409020546001600160a01b03163314155b156126d7573360405163118cdaa760e01b81526004016110129190614bbb565b60018210806126e7575060035482115b156127135760035460405163b0f9d8f160e01b8152611012918491600401918252602082015260400190565b6000828152600a6020526040902060010154421061275b576000828152600a6020526040908190206001015490516376429b5760e01b81526004810191909152602401611012565b6000828152600a60205260408120805461277490614e92565b80601f01602080910402602001604051908101604052809291908181526020018280546127a090614e92565b80156127ed5780601f106127c2576101008083540402835291602001916127ed565b820191906000526020600020905b8154815290600101906020018083116127d057829003601f168201915b5050506000868152600a6020526040902092935061280f915084905082615108565b507f221048e858894b3408c6f12736d0b62d5af3eb36774ff3d5677b0919543751cf8382843342604051612847959493929190615228565b60405180910390a1505050565b61285c613d92565b600181108061286c575060035481115b156128985760035460405163b0f9d8f160e01b8152611012918391600401918252602082015260400190565b6000818152600a602052604090819020600301805460ff19166001179055517f2f0f51d2f12c71357e60d575d47e93e081dbaf32072245ab1e01540f0aadbf1a906128e890839033904290615253565b60405180910390a150565b60126020908152600092835260408084209091529082529020805461291790614e92565b80601f016020809104026020016040519081016040528092919081815260200182805461294390614e92565b80156129905780601f1061296557610100808354040283529160200191612990565b820191906000526020600020905b81548152906001019060200180831161297357829003601f168201915b505050505081565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636d763a6e6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156129fa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612a229190810190614ef5565b90506000612a2e610efd565b90506000816001600160401b03811115612a4a57612a4a614942565b604051908082528060200260200182016040528015612a8357816020015b612a706144d7565b815260200190600190039081612a685790505b5090506000805b8451811015611f0657600654858281518110612aa857612aa8614ec6565b60200260200101516000015110612ba6576040518060a00160405280868381518110612ad657612ad6614ec6565b6020026020010151600001518152602001868381518110612af957612af9614ec6565b6020026020010151602001518152602001868381518110612b1c57612b1c614ec6565b6020026020010151604001518152602001868381518110612b3f57612b3f614ec6565b6020026020010151606001518152602001868381518110612b6257612b62614ec6565b6020026020010151608001516001600160a01b0316815250838381518110612b8c57612b8c614ec6565b60200260200101819052508180612ba290614edc565b9250505b80612bb081614edc565b915050612a8a565b60606001821080612bca575060035482115b15612bf65760035460405163b0f9d8f160e01b8152611012918491600401918252602082015260400190565b60008281526011602052604081205490816001600160401b03811115612c1e57612c1e614942565b604051908082528060200260200182016040528015612c5157816020015b6060815260200190600190039081612c3c5790505b50905060005b8281101561159f57600085815260126020526040812090612c79836001614e7f565b81526020019081526020016000208054612c9290614e92565b80601f0160208091040260200160405190810160405280929190818152602001828054612cbe90614e92565b8015612d0b5780601f10612ce057610100808354040283529160200191612d0b565b820191906000526020600020905b815481529060010190602001808311612cee57829003601f168201915b5050505050828281518110612d2257612d22614ec6565b60200260200101819052508080612d3890614edc565b915050612c57565b612d48613fe5565b6001821080612d58575060035482115b15612d845760035460405163b0f9d8f160e01b8152611012918491600401918252602082015260400190565b6001811080612da0575060008281526011602052604090205481115b15612dd95760008281526011602052604090819020549051630810a50760e01b8152611012918391600401918252602082015260400190565b6000828152600a60205260409020600101544211612e21576000828152600a602052604090819020600101549051630da0228760e21b81526004810191909152602401611012565b6000828152600a6020526040902060020154421115612e6a576000828152600a6020526040908190206002015490516327793cbd60e01b81526004810191909152602401611012565b6000828152600a6020526040902060030154610100900460ff1615612ea257604051630449677760e51b815260040160405180910390fd5b6000828152600a602052604090206003015460ff16612ed45760405163073e0d0d60e51b815260040160405180910390fd5b612edd336134b6565b612efa57604051637fb16f1b60e01b815260040160405180910390fd5b600082815260156020908152604080832033845290915290205460ff1615612f3557604051637c9a1cf960e01b815260040160405180910390fd5b6000612f413384613a0e565b336000908152600b602052604090205490915060ff16612faf57600580546000908152600c6020526040812080546001600160a01b0319163317905581546001929190612f8f908490614e7f565b9091555050336000908152600b60205260409020805460ff191660011790555b336000908152600d6020908152604080832086845290915290205460ff16613045576000838152601060209081526040808320600f8084528285208054865291845291842080546001600160a01b03191633179055868452915280546001929061301a908490614e7f565b9091555050336000908152600d602090815260408083208684529091529020805460ff191660011790555b600181101561306757604051632e932b3960e01b815260040160405180910390fd5b600083815260156020908152604080832033845290915290205460ff166130c65760008381526015602090815260408083203384528252808320805460ff19166001908117909155600e83529083208054918201815583529120018390555b80600460008282546130d89190614e7f565b9091555050600083815260136020908152604080832085845290915281208054839290613106908490614e7f565b9091555050600083815260146020908152604080832033845290915281208054839290613134908490614e7f565b9091555050600083815260166020908152604080832033845282528083208584529091528120805483929061316a908490614e7f565b909155505060008381526012602090815260408083208584529091529081902090517f25fa0ba9cd24ca1088a97ae34d77958e81e922e457f3cb8f73d61f2475e6748d916128479186918691869033904290615272565b6131c9613f59565b6001600160a01b03811615806131e957506001600160a01b03811661dead145b156132095780604051635077b8ed60e11b81526004016110129190614bbb565b613215813360016141a7565b50565b3360009081526001602052604090205460ff16158061324e57506000838152600960205260409020546001600160a01b03163314155b1561326e573360405163118cdaa760e01b81526004016110129190614bbb565b8161327b4261012c614e7f565b1015801561329357508061329183610708614e7f565b115b156132bb57604051630e781b2360e31b81526004810183905260248101829052604401611012565b816132c84261012c614e7f565b1015806132e657506000838152600a60205260409020600101544210155b15613307576040516376429b5760e01b815260048101839052602401611012565b8061331483610708614e7f565b1115613336576040516382e42d1160e01b815260048101829052602401611012565b6001831080613346575060035483115b156133725760035460405163b0f9d8f160e01b8152611012918591600401918252602082015260400190565b6000838152600a60209081526040918290206001810180546002909201805491879055859055835187815292830182905292820183905260608201859052608082018490523360a08301524260c083015291907fedb64e081c018ce8dac62cf24984100e697a7bd7d7496af7a2c2ec186e6e3ec39060e001612560565b600e602052816000526040600020818154811061340b57600080fd5b90600052602060002001600091509150505481565b613428613d92565b6001811080613438575060035481115b156134645760035460405163b0f9d8f160e01b8152611012918391600401918252602082015260400190565b6000818152600a602052604090819020600301805461ff001916610100179055517f53fda342a2eee565fc39b0e068489e494662382f8c5a3542c9ecba67a3588bb1906128e890839033904290615253565b60006006547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fe70078b846040518263ffffffff1660e01b81526004016110b69190614bbb565b60606001821080613519575060035482115b156135455760035460405163b0f9d8f160e01b8152611012918491600401918252602082015260400190565b60008281526011602052604081205490816001600160401b0381111561356d5761356d614942565b604051908082528060200260200182016040528015613596578160200160208202803683370190505b50905060005b8281101561159f576000858152601360205260408120906135be836001614e7f565b8152602001908152602001600020548282815181106135df576135df614ec6565b6020908102919091010152806135f481614edc565b91505061359c565b606060006003546001600160401b0381111561361a5761361a614942565b60405190808252806020026020018201604052801561365357816020015b61364061448d565b8152602001906001900390816136385790505b50905060005b600354811015611c5857600a6000613672836001614e7f565b81526020019081526020016000206040518060e001604052908160008201805461369b90614e92565b80601f01602080910402602001604051908101604052809291908181526020018280546136c790614e92565b80156137145780601f106136e957610100808354040283529160200191613714565b820191906000526020600020905b8154815290600101906020018083116136f757829003601f168201915b505050918352505060018201546020808301919091526002830154604080840191909152600384015460ff80821615156060860152610100820416151560808501526201000090046001600160a01b031660a084015260048401805482518185028101850190935280835260c090940193919290919060009084015b8282101561383c5783829060005260206000200180546137af90614e92565b80601f01602080910402602001604051908101604052809291908181526020018280546137db90614e92565b80156138285780601f106137fd57610100808354040283529160200191613828565b820191906000526020600020905b81548152906001019060200180831161380b57829003601f168201915b505050505081526020019060010190613790565b505050508152505082828151811061385657613856614ec6565b6020026020010181905250808061386c90614edc565b915050613659565b606060006003546001600160401b0381111561389257613892614942565b6040519080825280602002602001820160405280156138bb578160200160208202803683370190505b50905060005b600354811015610fdb57601460006138da836001614e7f565b81526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000205482828151811061391e5761391e614ec6565b60209081029190910101528061393381614edc565b9150506138c1565b6000818152600f6020526040812054606091906001600160401b0381111561396557613965614942565b60405190808252806020026020018201604052801561398e578160200160208202803683370190505b50905060005b6000848152600f6020526040902054811015610fdb57600084815260106020908152604080832084845290915290205482516001600160a01b03909116908390839081106139e4576139e4614ec6565b6001600160a01b039092166020928302919091019091015280613a0681614edc565b915050613994565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663842e2981856040518263ffffffff1660e01b8152600401613a5d9190614bbb565b600060405180830381865afa158015613a7a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613aa29190810190615346565b90506000805b8251811015612678576000838281518110613ac557613ac5614ec6565b6020026020010151905080600001518015613af557506000868152600a6020526040902060020154606082015110155b15613b1d5760a081015160c0820151613b0e818361542f565b613b189086614e7f565b945050505b5080613b2881614edc565b915050613aa8565b606060006003546001600160401b03811115613b4e57613b4e614942565b604051908082528060200260200182016040528015613b8157816020015b6060815260200190600190039081613b6c5790505b50905060005b600354811015610fdb576000613b9e826001614e7f565b600081815260116020526040812054919250816001600160401b03811115613bc857613bc8614942565b604051908082528060200260200182016040528015613bf1578160200160208202803683370190505b50905060005b82811015613c6b5760008481526016602090815260408083206001600160a01b038c168452909152812090613c2d836001614e7f565b815260200190815260200160002054828281518110613c4e57613c4e614ec6565b602090810291909101015280613c6381614edc565b915050613bf7565b5080858581518110613c7f57613c7f614ec6565b60200260200101819052505050508080613c9890614edc565b915050613b87565b613ca8613f59565b6001600160a01b0381161580613cc857506001600160a01b03811661dead145b15613ce85780604051635077b8ed60e11b81526004016110129190614bbb565b613215813360006141a7565b613cfc613f59565b6000546001600160a01b03166001600160a01b0316816001600160a01b031603613d3b578060405163a936636960e01b81526004016110129190614bbb565b61deac196001600160a01b03821601613d695780604051634726455360e11b81526004016110129190614bbb565b60028054610100600160a81b0319166101006001600160a01b0384160217905561321581614269565b3360009081526001602052604090205460ff16611c76573360405163118cdaa760e01b81526004016110129190614bbb565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112499084906142a4565b600083815260126020908152604080832085845290915281208054613e3a90614e92565b80601f0160208091040260200160405190810160405280929190818152602001828054613e6690614e92565b8015613eb35780601f10613e8857610100808354040283529160200191613eb3565b820191906000526020600020905b815481529060010190602001808311613e9657829003601f168201915b50505060008781526012602090815260408083208984529091529020929350613ee0915084905082615108565b507f6b6b151397d3af48b4d75c1b259595ec1c3938d912d82a9edd9f8a54d5d484d28482843342604051613f18959493929190615228565b60405180910390a150505050565b60025460ff16611c7657604051638dfc202b60e01b815260040160405180910390fd5b613f51613f26565b611c766142fe565b33613f6c6000546001600160a01b031690565b6001600160a01b031614611c76573360405163118cdaa760e01b81526004016110129190614bbb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60025460ff1615611c765760405163d93c066560e01b815260040160405180910390fd5b614011613fe5565b611c7661434a565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663842e2981856040518263ffffffff1660e01b81526004016140689190614bbb565b600060405180830381865afa158015614085573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140ad9190810190615346565b90506000805b82518110156126785760008382815181106140d0576140d0614ec6565b60200260200101519050806000015180156140ee5750858160600151105b15614194576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166389aca5758861412e856001614e7f565b6040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101899052606401600060405180830381600087803b15801561417b57600080fd5b505af115801561418f573d6000803e3d6000fd5b505050505b508061419f81614edc565b9150506140b3565b6001600160a01b03831660009081526001602052604090205481151560ff9091161515036141fb57604051635ce75a3b60e01b81526001600160a01b03841660048201528115156024820152604401611012565b6001600160a01b03838116600081815260016020908152604091829020805460ff19168615159081179091558251938452938616908301528101919091524260608201527fff1d0a27274ca0cc8403b0e8f4a70b968164366f4856d18f7569eba542e9aae490608001612847565b614271613f59565b6001600160a01b03811661429b576000604051631e4fbdf760e01b81526004016110129190614bbb565b61321581613f95565b60006142b96001600160a01b0384168361438f565b905080516000141580156142de5750808060200190518101906142dc9190615446565b155b156112495782604051635274afe760e01b81526004016110129190614bbb565b614306613f26565b6002805460ff191690556040517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa90614340903390614bbb565b60405180910390a1565b614352613fe5565b6002805460ff191660011790556040517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890614340903390614bbb565b6060611ba18383600084600080856001600160a01b031684866040516143b59190615461565b60006040518083038185875af1925050503d80600081146143f2576040519150601f19603f3d011682016040523d82523d6000602084013e6143f7565b606091505b5091509150614407868383614411565b9695505050505050565b6060826144265761442182614464565b611ba1565b815115801561443d57506001600160a01b0384163b155b1561445d5783604051639996b31560e01b81526004016110129190614bbb565b5080611ba1565b8051156144745780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6040518060e0016040528060608152602001600081526020016000815260200160001515815260200160001515815260200160006001600160a01b03168152602001606081525090565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b828054828255906000526020600020908101928215614555579160200282015b8281111561455557825182906145459082615108565b509160200191906001019061452f565b50614561929150614565565b5090565b808211156145615760006145798282614582565b50600101614565565b50805461458e90614e92565b6000825580601f1061459e575050565b601f01602090049060005260206000209081019061321591905b8082111561456157600081556001016145b8565b600080604083850312156145df57600080fd5b50508035926020909101359150565b60005b838110156146095781810151838201526020016145f1565b50506000910152565b6000815180845261462a8160208601602086016145ee565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b8481101561468957601f19868403018952614677838351614612565b9884019892509083019060010161465b565b5090979650505050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561475057603f19898403018552815160e081518186526146e382870182614612565b838b0151878c0152898401518a88015260608085015115159088015260808085015115159088015260a0808501516001600160a01b03169088015260c09384015187820394880194909452915061473c9050818361463e565b9689019694505050908601906001016146bd565b509098975050505050505050565b60006020828403121561477057600080fd5b5035919050565b6001600160a01b038116811461321557600080fd5b6000806000606084860312156147a157600080fd5b8335925060208401356147b381614777565b929592945050506040919091013590565b6000602082840312156147d657600080fd5b8135611ba181614777565b600080604083850312156147f457600080fd5b82356147ff81614777565b946020939093013593505050565b6000806040838503121561482057600080fd5b82359150602083013561483281614777565b809150509250929050565b60c08152600061485060c0830189614612565b60208301979097525060408101949094529115156060840152151560808301526001600160a01b031660a090910152919050565b600081518084526020808501945080840160005b838110156148b457815187529582019590820190600101614898565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561475057603f1989840301855281516060815181865261490c82870182614612565b91505088820151898601528782015191508481038886015261492e8183614884565b9689019694505050908601906001016148e6565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b038111828210171561497a5761497a614942565b60405290565b60405160e081016001600160401b038111828210171561497a5761497a614942565b604051601f8201601f191681016001600160401b03811182821017156149ca576149ca614942565b604052919050565b60006001600160401b038211156149eb576149eb614942565b5060051b60200190565b600082601f830112614a0657600080fd5b81356001600160401b03811115614a1f57614a1f614942565b614a32601f8201601f19166020016149a2565b818152846020838601011115614a4757600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112614a7557600080fd5b81356020614a8a614a85836149d2565b6149a2565b82815260059290921b84018101918181019086841115614aa957600080fd5b8286015b84811015614ae85780356001600160401b03811115614acc5760008081fd5b614ada8986838b01016149f5565b845250918301918301614aad565b509695505050505050565b60008060408385031215614b0657600080fd5b8235915060208301356001600160401b03811115614b2357600080fd5b614b2f85828601614a64565b9150509250929050565b600080600060608486031215614b4e57600080fd5b8335614b5981614777565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b81811015614baf5783516001600160a01b031683529284019291840191600101614b8a565b50909695505050505050565b6001600160a01b0391909116815260200190565b602080825282518282018190526000919060409081850190868401855b82811015614c395781518051855286810151878601528581015186860152606080820151908601526080908101516001600160a01b03169085015260a09093019290850190600101614bec565b5091979650505050505050565b600080600060608486031215614c5b57600080fd5b833592506020840135915060408401356001600160401b03811115614c7f57600080fd5b614c8b868287016149f5565b9150509250925092565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015614cea57603f19888603018452614cd8858351614884565b94509285019290850190600101614cbc565b5092979650505050505050565b60008060008060808587031215614d0d57600080fd5b843593506020850135925060408501356001600160401b0380821115614d3257600080fd5b614d3e888389016149f5565b93506060870135915080821115614d5457600080fd5b50614d6187828801614a64565b91505092959194509250565b602081526000611ba16020830184614884565b60008060408385031215614d9357600080fd5b8235915060208301356001600160401b03811115614db057600080fd5b614b2f858286016149f5565b602081526000611ba16020830184614612565b600081518084526020808501808196508360051b8101915082860160005b85811015614c39578284038952614e05848351614612565b98850198935090840190600101614ded565b602081526000611ba16020830184614dcf565b600080600060608486031215614e3f57600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610ef757610ef7614e56565b80820180821115610ef757610ef7614e56565b600181811c90821680614ea657607f821691505b602082108103611c5857634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060018201614eee57614eee614e56565b5060010190565b60006020808385031215614f0857600080fd5b82516001600160401b03811115614f1e57600080fd5b8301601f81018513614f2f57600080fd5b8051614f3d614a85826149d2565b81815260a09182028301840191848201919088841115614f5c57600080fd5b938501935b83851015614fc35780858a031215614f795760008081fd5b614f81614958565b8551815286860151878201526040808701519082015260608087015190820152608080870151614fb081614777565b9082015283529384019391850191614f61565b50979650505050505050565b93845260208401929092526001600160a01b03166040830152606082015260800190565b60006080828403121561500557600080fd5b604051608081018181106001600160401b038211171561502757615027614942565b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b60006020828403121561506a57600080fd5b5051919050565b85815260a06020820152600061508a60a0830187614dcf565b828103604084015261509c8187614dcf565b6001600160a01b039590951660608401525050608001529392505050565b601f82111561124957600081815260208120601f850160051c810160208610156150e15750805b601f850160051c820191505b81811015615100578281556001016150ed565b505050505050565b81516001600160401b0381111561512157615121614942565b6151358161512f8454614e92565b846150ba565b602080601f83116001811461516a57600084156151525750858301515b600019600386901b1c1916600185901b178555615100565b600085815260208120601f198616915b828110156151995788860151825594840194600190910190840161517a565b50858210156151b75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006101008a83528960208401528860408401528760608401528060808401526151f381840188614dcf565b905082810360a08401526152078187614612565b6001600160a01b039590951660c0840152505060e001529695505050505050565b85815260a06020820152600061524160a0830187614612565b828103604084015261509c8187614612565b9283526001600160a01b03919091166020830152604082015260600190565b86815260006020878184015260c060408401526000875461529281614e92565b8060c087015260e06001808416600081146152b457600181146152ce576152fc565b60ff1985168984015283151560051b8901830195506152fc565b8c6000528660002060005b858110156152f45781548b82018601529083019088016152d9565b8a0184019650505b5050505050606084018790526001600160a01b038616608085015291506153209050565b8260a0830152979650505050505050565b8051801515811461534157600080fd5b919050565b6000602080838503121561535957600080fd5b82516001600160401b0381111561536f57600080fd5b8301601f8101851361538057600080fd5b805161538e614a85826149d2565b81815260e091820283018401918482019190888411156153ad57600080fd5b938501935b83851015614fc35780858a0312156153ca5760008081fd5b6153d2614980565b6153db86615331565b8152868601516153ea81614777565b8188015260408681015190820152606080870151908201526080808701519082015260a0808701519082015260c08087015190820152835293840193918501916153b2565b8082028115828204841417610ef757610ef7614e56565b60006020828403121561545857600080fd5b611ba182615331565b600082516154738184602087016145ee565b919091019291505056fea2646970667358221220e5b04ff06521c1c20e81f22f28cc0aebadfc80808e75d82233c5a41c6e140f9264736f6c63430008120033000000000000000000000000e3d99e7782df62cc207f896a0ce27fad1a58234e