4 txs
5 calls
constructor
constructor(address _ve, address _minter, address _owner)
functions
BALLOT_TYPEHASH
viewfunction BALLOT_TYPEHASH() view returns (bytes32)
CLOCK_MODE
viewfunction CLOCK_MODE() view returns (string)
clock
viewfunction clock() view returns (uint48)
COMMENT_DENOMINATOR
viewfunction COMMENT_DENOMINATOR() view returns (uint256)
commentWeighting
viewfunction commentWeighting() view returns (uint256)
COUNTING_MODE
purefunction COUNTING_MODE() pure returns (string)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
EXTENDED_BALLOT_TYPEHASH
viewfunction EXTENDED_BALLOT_TYPEHASH() view returns (bytes32)
getVotes
viewfunction getVotes(address _account, uint256 _tokenId, uint256 _timepoint) view returns (uint256)
getVotes
viewfunction getVotes(uint256 _tokenId, uint256 _timepoint) view returns (uint256)
getVotesWithParams
viewfunction getVotesWithParams(address _account, uint256 _tokenId, uint256 _timepoint, bytes _params) view returns (uint256)
hashProposal
purefunction hashProposal(address[] _targets, uint256[] _values, bytes[] _calldatas, bytes32 _descriptionHash) pure returns (uint256)
hasVoted
viewfunction hasVoted(uint256 _proposalId, uint256 _tokenId) view returns (bool)
minter
viewfunction minter() view returns (address)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(address owner) view returns (uint256)
owner
viewfunction owner() view returns (address)
proposalDeadline
viewfunction proposalDeadline(uint256 _proposalId) view returns (uint256)
proposalEta
viewfunction proposalEta(uint256 _proposalId) view returns (uint256)
proposalNeedsQueuing
viewfunction proposalNeedsQueuing(uint256) view returns (bool)
proposalProposer
viewfunction proposalProposer(uint256 _proposalId) view returns (address)
proposalSnapshot
viewfunction proposalSnapshot(uint256 _proposalId) view returns (uint256)
proposalThreshold
viewfunction proposalThreshold() view returns (uint256)
proposalVotes
viewfunction proposalVotes(uint256 _proposalId) view returns (uint256 _againstVotes, uint256 _forVotes, uint256 _abstainVotes)
proposalWindow
viewfunction proposalWindow() view returns (uint256)
quorum
viewfunction quorum(uint256 _timepoint) view returns (uint256)
result
viewfunction result() view returns (uint8)
state
viewfunction state(uint256 _proposalId) view returns (uint8)
supportsInterface
viewfunction supportsInterface(bytes4 _interfaceId) view returns (bool)
usedVotes
viewfunction usedVotes(uint256 _proposalId, uint256 _tokenId) view returns (uint256)
ve
viewfunction ve() view returns (address)
version
viewfunction version() view returns (string)
votingDelay
purefunction votingDelay() pure returns (uint256)
votingPeriod
purefunction votingPeriod() pure returns (uint256)
castVote
nonpayablefunction castVote(uint256 _proposalId, uint256 _tokenId, uint8 _support) returns (uint256)
castVoteBySig
nonpayablefunction castVoteBySig(uint256 _proposalId, uint256 _tokenId, uint8 _support, address _voter, bytes _signature) returns (uint256)
castVoteWithReason
nonpayablefunction castVoteWithReason(uint256 _proposalId, uint256 _tokenId, uint8 _support, string _reason) returns (uint256)
castVoteWithReasonAndParams
nonpayablefunction castVoteWithReasonAndParams(uint256 _proposalId, uint256 _tokenId, uint8 _support, string _reason, bytes _params) returns (uint256)
castVoteWithReasonAndParamsBySig
nonpayablefunction castVoteWithReasonAndParamsBySig(uint256 _proposalId, uint256 _tokenId, uint8 _support, address _voter, string _reason, bytes _params, bytes _signature) returns (uint256)
comment
nonpayablefunction comment(uint256 _proposalId, uint256 _tokenId, string _message)
execute
payablefunction execute(address[] _targets, uint256[] _values, bytes[] _calldatas, bytes32 _descriptionHash) payable returns (uint256)
onERC1155BatchReceived
nonpayablefunction onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) returns (bytes4)
onERC1155Received
nonpayablefunction onERC1155Received(address, address, uint256, uint256, bytes) returns (bytes4)
onERC721Received
nonpayablefunction onERC721Received(address, address, uint256, bytes) returns (bytes4)
propose
nonpayablefunction propose(uint256 _tokenId, address[] _targets, uint256[] _values, bytes[] _calldatas, string _description) returns (uint256)
queue
nonpayablefunction queue(address[] _targets, uint256[] _values, bytes[] _calldatas, bytes32 _descriptionHash) returns (uint256)
relay
payablefunction relay(address, uint256, bytes) payable
renounceOwnership
nonpayablefunction renounceOwnership()
setCommentWeighting
nonpayablefunction setCommentWeighting(uint256 _commentWeighting)
setProposalWindow
nonpayablefunction setProposalWindow(uint256 _proposalWindow)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
Comment
event Comment(uint256 indexed _proposalId, address indexed _account, uint256 indexed _tokenId, string _comment)
CommentWeightingSet
event CommentWeightingSet(uint256 _commentWeighting)
EIP712DomainChanged
event EIP712DomainChanged()
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
ProposalCreated
event ProposalCreated(uint256 _proposalId, address _proposer, address[] _targets, uint256[] _values, string[] _signatures, bytes[] _calldatas, uint256 _voteStart, uint256 _voteEnd, string _description)
ProposalExecuted
event ProposalExecuted(uint256 _proposalId)
ProposalQueued
event ProposalQueued(uint256 _proposalId, uint256 _etaSeconds)
ProposalWindowSet
event ProposalWindowSet(uint256 indexed _oldProposalWindow, uint256 indexed _newProposalWindow)
VoteCast
event VoteCast(address indexed _voter, uint256 indexed _tokenId, uint256 _proposalId, uint8 _support, uint256 _weight, string _reason)
VoteCastWithParams
event VoteCastWithParams(address indexed _voter, uint256 indexed _tokenId, uint256 _proposalId, uint8 _support, uint256 _weight, string _reason, bytes _params)
errors
CommentWeightingTooHigh
error CommentWeightingTooHigh()
FailedCall
error FailedCall()
GovernorAlreadyCastVote
error GovernorAlreadyCastVote(uint256 _tokenId)
GovernorDisabledDeposit
error GovernorDisabledDeposit()
GovernorExceedRemainingWeight
error GovernorExceedRemainingWeight(uint256 _tokenId, uint256 _usedVotes, uint256 _remainingWeight)
GovernorInsufficientProposerVotes
error GovernorInsufficientProposerVotes(address _proposer, uint256 _votes, uint256 _threshold)
GovernorInsufficientVotingPower
error GovernorInsufficientVotingPower(uint256 _weight, uint256 _minimumWeight)
GovernorInvalidProposalLength
error GovernorInvalidProposalLength(uint256 _targets, uint256 _calldatas, uint256 _values)
GovernorInvalidSignature
error GovernorInvalidSignature(address _voter)
GovernorInvalidTargetOrValueOrCalldata
error GovernorInvalidTargetOrValueOrCalldata(address _target, uint256 _value, bytes4 _callData)
GovernorInvalidVoteParams
error GovernorInvalidVoteParams()
GovernorInvalidVoteType
error GovernorInvalidVoteType()
GovernorInvalidVotingPeriod
error GovernorInvalidVotingPeriod(uint256 _votingPeriod)
GovernorNonexistentProposal
error GovernorNonexistentProposal(uint256 _proposalId)
GovernorOnlyExecutor
error GovernorOnlyExecutor(address _account)
GovernorOnlyProposer
error GovernorOnlyProposer(address _account)
GovernorQueueNotImplemented
error GovernorQueueNotImplemented()
GovernorRelayNotSupported
error GovernorRelayNotSupported()
GovernorRestrictedProposer
error GovernorRestrictedProposer(address _proposer)
GovernorUnexpectedProposalState
error GovernorUnexpectedProposalState(uint256 _proposalId, uint8 _current, bytes32 _expectedStates)
GovernorZeroVotingPower
error GovernorZeroVotingPower(address _account, uint256 _tokenId)
InvalidAccountNonce
error InvalidAccountNonce(address account, uint256 currentNonce)
InvalidProposalWindow
error InvalidProposalWindow()
InvalidShortString
error InvalidShortString()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
StringTooLong
error StringTooLong(string str)
creation bytecode
0x6101a0604052610fa060095562015180600a5534801561001d575f80fd5b50604051613df2380380613df283398101604081905261003c916102d3565b60408051808201909152600e81526d22b837b1b41023b7bb32b93737b960911b6020820152818481836100836040805180820190915260018152603160f81b602082015290565b61008d825f6101fc565b6101205261009c8160016101fc565b61014052815160208084019190912060e052815190820120610100524660a05261012860e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526001600160a01b03811661015f57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101688161022e565b50600461017584826103b5565b506001600160a01b03166101605250506009546040519081527f4fe76db01910ae2daf2c64f22731de2fa7e1d3be37cd93a9721774a8de91aec99060200160405180910390a1600a546040515f907f75c7fd22a32a5a19be4fd641cdf01a75c15a685476e360d8c33c064886650032908290a3506001600160a01b031661018052506104cc565b5f602083511015610217576102108361027f565b9050610228565b8161022284826103b5565b5060ff90505b92915050565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f80829050601f815111156102a9578260405163305a27a960e01b81526004016101569190610474565b80516102b4826104a9565b179392505050565b6001600160a01b03811681146102d0575f80fd5b50565b5f805f606084860312156102e5575f80fd5b83516102f0816102bc565b6020850151909350610301816102bc565b6040850151909250610312816102bc565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061034557607f821691505b60208210810361036357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156103b057805f5260205f20601f840160051c8101602085101561038e5750805b601f840160051c820191505b818110156103ad575f815560010161039a565b50505b505050565b81516001600160401b038111156103ce576103ce61031d565b6103e2816103dc8454610331565b84610369565b602080601f831160018114610415575f84156103fe5750858301515b5f19600386901b1c1916600185901b17855561046c565b5f85815260208120601f198616915b8281101561044357888601518255948401946001909101908401610424565b508582101561046057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610363575f1960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051610160516101805161389761055b5f395f818161036e015261238901525f818161048d01528181610d4901528181610fa50152818161121f015281816112ca01526116c901525f6119dd01525f6119b101525f611e0501525f611ddd01525f611d3801525f611d6201525f611d8c01526138975ff3fe6080604052600436106102dc575f3560e01c80636537214711610189578063be443ad0116100d8578063cf781d4511610092578063deaaa7cc1161006d578063deaaa7cc14610997578063f23a6e61146109ca578063f2fde38b146109f5578063f8ce560a14610a14575f80fd5b8063cf781d4514610945578063dd4e2ba514610964578063dea112a614610978575f80fd5b8063be443ad014610897578063bfbbd4c4146108b6578063c01f9e37146108d5578063c28bc2fa146108f4578063c2e863e414610907578063c59057e414610926575f80fd5b806391ddadf411610143578063a9a952941161011e578063a9a9529414610805578063ab58fb8e14610824578063b58131b01461085a578063bc197c811461086c575f80fd5b806391ddadf41461079c57806391f36633146107c757806395f32a8a146107e6575f80fd5b806365372147146106d8578063715018a6146106f15780637ecebe001461070557806384b0196e1461073957806386964304146107605780638da5cb5b1461077f575f80fd5b80632656227d116102455780633e4f49e6116101ff578063525f9c3e116101da578063525f9c3e1461060b578063544ffc9c1461062057806354fd4d501461067357806364390ff11461069c575f80fd5b80633e4f49e6146105ac57806349758df2146105d85780634bf5d7e9146105f7575f80fd5b80632656227d146104db5780632d63f693146104ee5780632fe3e2611461050d578063336d455d14610540578063380a243a1461057a5780633932abb114610599575f80fd5b8063143489d011610296578063143489d0146103e6578063150b7a021461041a578063160cbed71461045d5780631f8507161461047c5780632114d5a0146104af57806322b36ac6146104c4575f80fd5b806301ffc9a7146102e957806302a251a31461031d57806306fdde031461033c578063075461721461035d5780630f8a8836146103a857806311fd26f4146103c7575f80fd5b366102e557005b005b5f80fd5b3480156102f4575f80fd5b506103086103033660046129a7565b610a2e565b60405190151581526020015b60405180910390f35b348015610328575f80fd5b5062091e5e5b604051908152602001610314565b348015610347575f80fd5b50610350610a7f565b60405161031491906129fc565b348015610368575f80fd5b506103907f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610314565b3480156103b3575f80fd5b5061032e6103c2366004612c4d565b610b0f565b3480156103d2575f80fd5b5061032e6103e1366004612d0e565b610b27565b3480156103f1575f80fd5b50610390610400366004612d40565b5f908152600560205260409020546001600160a01b031690565b348015610425575f80fd5b50610444610434366004612d57565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610314565b348015610468575f80fd5b5061032e610477366004612dbe565b610b51565b348015610487575f80fd5b506103907f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ba575f80fd5b5061032e600a5481565b3480156104cf575f80fd5b5061032e633b9aca0081565b61032e6104e9366004612dbe565b610b8f565b3480156104f9575f80fd5b5061032e610508366004612d40565b610ce3565b348015610518575f80fd5b5061032e7fb9482a86bd984d091f7fadf2aa85730f0686379e5e88a429f13c8e63c2de320d81565b34801561054b575f80fd5b5061032e61055a366004612e47565b5f9182526008602090815260408084209284526003909201905290205490565b348015610585575f80fd5b506102e3610594366004612ea4565b610d03565b3480156105a4575f80fd5b50600261032e565b3480156105b7575f80fd5b506105cb6105c6366004612d40565b610e69565b6040516103149190612f26565b3480156105e3575f80fd5b506102e36105f2366004612d40565b610f39565b348015610602575f80fd5b50610350610fa1565b348015610616575f80fd5b5061032e60095481565b34801561062b575f80fd5b5061065861063a366004612d40565b5f908152600860205260409020805460018201546002909201549092565b60408051938452602084019290925290820152606001610314565b34801561067e575f80fd5b506040805180820190915260018152603160f81b6020820152610350565b3480156106a7575f80fd5b506103086106b6366004612e47565b5f91825260086020908152604080842092845260039092019052902054151590565b3480156106e3575f80fd5b50600b546105cb9060ff1681565b3480156106fc575f80fd5b506102e3611061565b348015610710575f80fd5b5061032e61071f366004612f34565b6001600160a01b03165f9081526002602052604090205490565b348015610744575f80fd5b5061074d611074565b6040516103149796959493929190612f89565b34801561076b575f80fd5b5061032e61077a366004612ffa565b6110b6565b34801561078a575f80fd5b506003546001600160a01b0316610390565b3480156107a7575f80fd5b506107b061121c565b60405165ffffffffffff9091168152602001610314565b3480156107d2575f80fd5b5061032e6107e1366004612e47565b6112a8565b3480156107f1575f80fd5b506102e3610800366004612d40565b611357565b348015610810575f80fd5b5061030861081f366004612d40565b505f90565b34801561082f575f80fd5b5061032e61083e366004612d40565b5f9081526005602052604090206001015465ffffffffffff1690565b348015610865575f80fd5b505f61032e565b348015610877575f80fd5b506104446108863660046130b5565b63bc197c8160e01b95945050505050565b3480156108a2575f80fd5b5061032e6108b136600461314e565b6113cc565b3480156108c1575f80fd5b5061032e6108d03660046131d3565b61141c565b3480156108e0575f80fd5b5061032e6108ef366004612d40565b6114f3565b6102e3610902366004613234565b611535565b348015610912575f80fd5b5061032e610921366004613273565b611556565b348015610931575f80fd5b5061032e610940366004612dbe565b611599565b348015610950575f80fd5b5061032e61095f3660046132d5565b6115d2565b34801561096f575f80fd5b506103506115e8565b348015610983575f80fd5b5061032e61099236600461331b565b611608565b3480156109a2575f80fd5b5061032e7fb629c440c748a5e1a0d965402cd62c778ce1fbecc87c2d9b2b5dbf1ee847037d81565b3480156109d5575f80fd5b506104446109e436600461334d565b63f23a6e6160e01b95945050505050565b348015610a00575f80fd5b506102e3610a0f366004612f34565b611624565b348015610a1f575f80fd5b5061032e61081f366004612d40565b5f6001600160e01b0319821663ecc39f6760e01b1480610a5e57506001600160e01b03198216630271189760e51b145b80610a7957506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060048054610a8e906133a4565b80601f0160208091040260200160405190810160405280929190818152602001828054610aba906133a4565b8015610b055780601f10610adc57610100808354040283529160200191610b05565b820191905f5260205f20905b815481529060010190602001808311610ae857829003601f168201915b5050505050905090565b5f610b1d8686868686611661565b9695505050505050565b5f610b47848484610b4260408051602081019091525f815290565b61169a565b90505b9392505050565b5f80610b5f86868686611599565b9050610b7481610b6f6004611734565b611756565b505f604051634844252360e11b815260040160405180910390fd5b5f80610bab86868662093a8042908106900362092c7001611599565b90505f610bd782610bbc6006611734565b610bc66003611734565b610bd06004611734565b1717611756565b5f838152600560205260409020805460ff60f01b1916600160f01b179055600b8054919250829160ff19166001836007811115610c1657610c16612ef2565b0217905550610c99565b8751811015610c9757306001600160a01b0316888281518110610c4557610c456133dc565b60200260200101516001600160a01b031603610c8f57610c8f868281518110610c7057610c706133dc565b602002602001015180519060200120600661179390919063ffffffff16565b600101610c20565b505b610ca682888888886117f4565b6040518281527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9060200160405180910390a15095945050505050565b5f90815260056020526040902054600160a01b900465ffffffffffff1690565b6060610d2285610d125f611734565b610d1c6001611734565b17611756565b505f610d2d86610ce3565b90505f610d3c3387848661169a565b90505f633b9aca006009547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638e539e8c866040518263ffffffff1660e01b8152600401610d9591815260200190565b602060405180830381865afa158015610db0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd491906133f0565b610dde919061341b565b610de89190613432565b905080821015610e1a5760405163a954816560e01b815260048101839052602481018290526044015b60405180910390fd5b86336001600160a01b0316897fdb700dee4c69422ecdfd4ad68ffe25aa39c6ddffef4657f727571e095b642cc58989604051610e57929190613451565b60405180910390a45050505050505050565b5f818152600560205260408120805460ff600160f01b8204811691600160f81b9004168115610e9d57506007949350505050565b8015610eae57506002949350505050565b5f610eb886610ce3565b9050805f03610edd57604051636ad0607560e01b815260048101879052602401610e11565b5f610ee661121c565b65ffffffffffff169050808210610f0357505f9695505050505050565b5f610f0d886114f3565b9050818110610f2457506001979650505050505050565b610f2d886118c9565b98975050505050505050565b610f4161192c565b633b9aca00811115610f6657604051634fa0e5e360e01b815260040160405180910390fd5b60098190556040518181527f4fe76db01910ae2daf2c64f22731de2fa7e1d3be37cd93a9721774a8de91aec99060200160405180910390a150565b60607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634bf5d7e96040518163ffffffff1660e01b81526004015f60405180830381865afa92505050801561102057506040513d5f823e601f3d908101601f1916820160405261101d919081019061347f565b60015b61105c575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b61106961192c565b6110725f611959565b565b5f6060805f805f60606110856119aa565b61108d6119d6565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b5f8061119f876111997fb9482a86bd984d091f7fadf2aa85730f0686379e5e88a429f13c8e63c2de320d8d8d8d8d61110a8f6001600160a01b03165f90815260026020526040902080546001810190915590565b8e8e60405161111a9291906134f3565b60405180910390208d8051906020012060405160200161117e9897969594939291909788526020880196909652604087019490945260ff9290921660608601526001600160a01b0316608085015260a084015260c083015260e08201526101000190565b60405160208183030381529060405280519060200120611a03565b85611a2f565b9050806111ca576040516394ab6c0760e01b81526001600160a01b0388166004820152602401610e11565b61120e8a888b8b8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508c9250611a9f915050565b9a9950505050505050505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611297575060408051601f3d908101601f1916820190925261129491810190613502565b60015b61105c576112a3611bb3565b905090565b6040516331a9108f60e11b8152600481018390525f9081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa15801561130f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113339190613527565b905061134f81858560405180602001604052805f81525061169a565b949350505050565b61135f61192c565b60188111156113815760405163f7f11acb60e01b815260040160405180910390fd5b600a5461139082610e1061341b565b600a55816113a0610e1083613432565b6040517f75c7fd22a32a5a19be4fd641cdf01a75c15a685476e360d8c33c064886650032905f90a35050565b5f6114118733888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a9250611a9f915050565b979650505050505050565b5f806114ad846111997fb629c440c748a5e1a0d965402cd62c778ce1fbecc87c2d9b2b5dbf1ee847037d8a8a8a8a6114708c6001600160a01b03165f90815260026020526040902080546001810190915590565b604080516020810197909752860194909452606085019290925260ff1660808401526001600160a01b031660a083015260c082015260e00161117e565b9050806114d8576040516394ab6c0760e01b81526001600160a01b0385166004820152602401610e11565b6114118785888860405180602001604052805f815250611bbd565b5f8181526005602052604081205461152790600160d01b810463ffffffff1690600160a01b900465ffffffffffff16613542565b65ffffffffffff1692915050565b61153d611bdf565b604051637034f55360e11b815260040160405180910390fd5b5f610b1d8633878787878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611bbd92505050565b5f848484846040516020016115b194939291906135f8565b60408051601f19818403018152919052805160209091012095945050505050565b5f6115df8585858561169a565b95945050505050565b60606040518060600160405280603d8152602001613825603d9139905090565b5f610b478433858560405180602001604052805f815250611bbd565b61162c61192c565b6001600160a01b03811661165557604051631e4fbdf760e01b81525f6004820152602401610e11565b61165e81611959565b50565b5f600a546116744262093a808106900390565b61167e9190613642565b42101561168d5761168d61192c565b610b1d8686868686611c14565b604051634d6fb77560e01b81526001600160a01b03858116600483015260248201859052604482018490525f917f000000000000000000000000000000000000000000000000000000000000000090911690634d6fb77590606401602060405180830381865afa158015611710573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115df91906133f0565b5f81600781111561174757611747612ef2565b600160ff919091161b92915050565b5f8061176184610e69565b90505f8361176e83611734565b1603610b4a578381846040516331b75e4d60e01b8152600401610e1193929190613655565b81546001600160801b03600160801b8204811691811660018301909116036117bf576117bf6041611c56565b6001600160801b038082165f90815260018086016020526040909120939093558354919092018216600160801b029116179055565b5f5b84518110156118c1575f80868381518110611813576118136133dc565b60200260200101516001600160a01b0316868481518110611836576118366133dc565b6020026020010151868581518110611850576118506133dc565b60200260200101516040516118659190613677565b5f6040518083038185875af1925050503d805f811461189f576040519150601f19603f3d011682016040523d82523d5f602084013e6118a4565b606091505b50915091506118b38282611c67565b5050508060010190506117f6565b505050505050565b5f81815260086020526040812080546001820154600283015481831180156118f057508083115b156119015750600395945050505050565b828211801561190f57508082115b156119205750600495945050505050565b50600695945050505050565b6003546001600160a01b031633146110725760405163118cdaa760e01b8152336004820152602401610e11565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60606112a37f00000000000000000000000000000000000000000000000000000000000000005f611c83565b60606112a37f00000000000000000000000000000000000000000000000000000000000000006001611c83565b5f610a79611a0f611d2c565b8360405161190160f01b8152600281019290925260228201526042902090565b5f836001600160a01b03163b5f03611a8d575f80611a4d8585611e55565b5090925090505f816003811115611a6657611a66612ef2565b148015611a845750856001600160a01b0316826001600160a01b0316145b92505050610b4a565b611a98848484611e9e565b9050610b4a565b5f611aae87610b6f6001611734565b505f611ac48787611abe8b610ce3565b8661169a565b9050805f03611af85760405163dd534f1160e01b81526001600160a01b038816600482015260248101879052604401610e11565b5f611b068988888588611f74565b905083515f03611b5d5786886001600160a01b03167f02ecdb7f59712b7ae7cb6851cce1c64e98f94e5b51ec63809112c054622b25548b89858a604051611b50949392919061368d565b60405180910390a3610f2d565b86886001600160a01b03167f7dcdc52e34b09364e599a32b0e3ccb5b730a7b952ddbdf4f237ea785da228ce78b89858a8a604051611b9f9594939291906136b4565b60405180910390a398975050505050505050565b5f6112a3436121a4565b5f610b1d8686868686611bda60408051602081019091525f815290565b611a9f565b303314611072576040516347096e4760e01b8152336004820152602401610e11565b80611c0c60066121da565b03611c015750565b5f33611c208184612247565b611c485760405163d9b3955760e01b81526001600160a01b0382166004820152602401610e11565b5f610f2d87878787866122cb565b634e487b715f52806020526024601cfd5b606082611c7c57611c7782612654565b610a79565b5080610a79565b606060ff8314611c9d57611c968361267d565b9050610a79565b818054611ca9906133a4565b80601f0160208091040260200160405190810160405280929190818152602001828054611cd5906133a4565b8015611d205780601f10611cf757610100808354040283529160200191611d20565b820191905f5260205f20905b815481529060010190602001808311611d0357829003601f168201915b50505050509050610a79565b5f306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015611d8457507f000000000000000000000000000000000000000000000000000000000000000046145b15611dae57507f000000000000000000000000000000000000000000000000000000000000000090565b6112a3604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b5f805f8351604103611e8c576020840151604085015160608601515f1a611e7e888285856126ba565b955095509550505050611e97565b505081515f91506002905b9250925092565b5f805f856001600160a01b03168585604051602401611ebe9291906136ed565b60408051601f198184030181529181526020820180516001600160e01b0316630b135d3f60e11b17905251611ef39190613677565b5f60405180830381855afa9150503d805f8114611f2b576040519150601f19603f3d011682016040523d82523d5f602084013e611f30565b606091505b5091509150818015611f4457506020815110155b8015610b1d57508051630b135d3f60e11b90611f6990830160209081019084016133f0565b149695505050505050565b5f8581526008602090815260408083208784526003019091528120548190611f9d908590612782565b915050805f03611fc357604051630715719360e31b815260048101879052602401610e11565b5f80808060ff8916611ff957865115611fef5760405163867db77160e01b815260040160405180910390fd5b5083925082612107565b5f1960ff8a160161202e578651156120245760405163867db77160e01b815260040160405180910390fd5b5083915081612107565b60011960ff8a16016120645786511561205a5760405163867db77160e01b815260040160405180910390fd5b5083905080612107565b60fe1960ff8a16016120ee5786516030146120925760405163867db77160e01b815260040160405180910390fd5b602087015160801c9350603087015160801c9250604087015160801c915081838501019050848111156120e9576040516357a6246b60e11b8152600481018b90526024810182905260448101869052606401610e11565b612107565b6040516303599be160e11b815260040160405180910390fd5b5f8b815260086020526040902084156121325784815f015f82825461212c9190613642565b90915550505b83156121515783816001015f82825461214b9190613642565b90915550505b82156121705782816002015f82825461216a9190613642565b90915550505b5f8b81526003820160205260408120805484929061218f908490613642565b90915550919c9b505050505050505050505050565b5f65ffffffffffff8211156121d6576040516306dfcc6560e41b81526030600482015260248101839052604401610e11565b5090565b80545f906001600160801b0380821691600160801b9004168103612202576122026031611c56565b6001600160801b038181165f908152600185810160205260408220805492905585546fffffffffffffffffffffffffffffffff19169301909116919091179092555090565b80515f90603481101561225e576001915050610a79565b60131981840101516001600160b01b03198116692370726f706f7365723d60b01b1461228f57600192505050610a79565b5f8061229f86602a8603866127a6565b915091508115806114115750866001600160a01b0316816001600160a01b031614979650505050505050565b5f62092c7062093a80429081069003016122e787878784611599565b9150855187511415806122fc57508451875114155b8061230957508651600114155b1561233e57865185518751604051630447b05d60e41b8152600481019390935260248301919091526044820152606401610e11565b5f82815260056020526040902054600160a01b900465ffffffffffff1615612387578161236a83610e69565b6040516331b75e4d60e01b8152610e119291905f90600401613655565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316875f815181106123c3576123c36133dc565b60200260200101516001600160a01b03161415806123fa5750855f815181106123ee576123ee6133dc565b60200260200101515f14155b806124205750845f81518110612412576124126133dc565b602002602001015151600414155b8061245f57508451634804532160e11b9086905f90612441576124416133dc565b602002602001015161245290613705565b6001600160e01b03191614155b156124f657865f81518110612476576124766133dc565b6020026020010151865f81518110612490576124906133dc565b6020026020010151865f815181106124aa576124aa6133dc565b60200260200101516124bb90613705565b6040516223aa0560e11b81526001600160a01b03909316600484015260248301919091526001600160e01b0319166044820152606401610e11565b5f82815260056020526040812080546001600160a01b0319166001600160a01b03861617815590600261254561252a61121c565b65ffffffffffff1662093a80429081069003610e100161281f565b61254f9190613642565b905061255a816121a4565b825465ffffffffffff91909116600160a01b0265ffffffffffff60a01b1990911617825561259061258b828561373c565b61282e565b825463ffffffff91909116600160d01b0263ffffffff60d01b1990911617825588517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e090859087908c908c906001600160401b038111156125f3576125f3612a0e565b60405190808252806020026020018201604052801561262657816020015b60608152602001906001900390816126115790505b508c878a8e6040516126409998979695949392919061374f565b60405180910390a150505095945050505050565b8051156126645780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b60605f6126898361285e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156126f357505f91506003905082612778565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612744573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661276f57505f925060019150829050612778565b92505f91508190505b9450945094915050565b5f808383111561279657505f90508061279f565b50600190508183035b9250929050565b5f808061060f60f31b6127bc8787016020015190565b6001600160f01b0319161490505f6127d582600261341b565b6127e0906028613642565b9050806127ed878761373c565b0361280e575f806127ff898989612885565b90965094506128179350505050565b5f809350935050505b935093915050565b5f828218828411028218610b4a565b5f63ffffffff8211156121d6576040516306dfcc6560e41b81526020600482015260248101839052604401610e11565b5f60ff8216601f811115610a7957604051632cd44ac360e21b815260040160405180910390fd5b5f80848161060f60f31b61289c8388016020015190565b6001600160f01b0319161490505f6128b582600261341b565b90505f806128c3838a613642565b90505b8781101561291e575f6128e46128df8784016020015190565b61292f565b9050600f8160ff161115612903575f8097509750505050505050612817565b61290e60108461341b565b60ff9091160191506001016128c6565b506001999098509650505050505050565b5f60f882901c602f811180156129485750603a8160ff16105b1561295657602f1901610a79565b60608160ff1611801561296c575060678160ff16105b1561297a5760561901610a79565b60408160ff16118015612990575060478160ff16105b1561299e5760361901610a79565b5060ff92915050565b5f602082840312156129b7575f80fd5b81356001600160e01b031981168114610b4a575f80fd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610b4a60208301846129ce565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715612a4a57612a4a612a0e565b604052919050565b5f6001600160401b03821115612a6a57612a6a612a0e565b5060051b60200190565b6001600160a01b038116811461165e575f80fd5b5f82601f830112612a97575f80fd5b81356020612aac612aa783612a52565b612a22565b8083825260208201915060208460051b870101935086841115612acd575f80fd5b602086015b84811015612af2578035612ae581612a74565b8352918301918301612ad2565b509695505050505050565b5f82601f830112612b0c575f80fd5b81356020612b1c612aa783612a52565b8083825260208201915060208460051b870101935086841115612b3d575f80fd5b602086015b84811015612af25780358352918301918301612b42565b5f6001600160401b03821115612b7157612b71612a0e565b50601f01601f191660200190565b5f612b8c612aa784612b59565b9050828152838383011115612b9f575f80fd5b828260208301375f602084830101529392505050565b5f82601f830112612bc4575f80fd5b610b4a83833560208501612b7f565b5f82601f830112612be2575f80fd5b81356020612bf2612aa783612a52565b82815260059290921b84018101918181019086841115612c10575f80fd5b8286015b84811015612af25780356001600160401b03811115612c31575f80fd5b612c3f8986838b0101612bb5565b845250918301918301612c14565b5f805f805f60a08688031215612c61575f80fd5b8535945060208601356001600160401b0380821115612c7e575f80fd5b612c8a89838a01612a88565b95506040880135915080821115612c9f575f80fd5b612cab89838a01612afd565b94506060880135915080821115612cc0575f80fd5b612ccc89838a01612bd3565b93506080880135915080821115612ce1575f80fd5b508601601f81018813612cf2575f80fd5b612d0188823560208401612b7f565b9150509295509295909350565b5f805f60608486031215612d20575f80fd5b8335612d2b81612a74565b95602085013595506040909401359392505050565b5f60208284031215612d50575f80fd5b5035919050565b5f805f8060808587031215612d6a575f80fd5b8435612d7581612a74565b93506020850135612d8581612a74565b92506040850135915060608501356001600160401b03811115612da6575f80fd5b612db287828801612bb5565b91505092959194509250565b5f805f8060808587031215612dd1575f80fd5b84356001600160401b0380821115612de7575f80fd5b612df388838901612a88565b95506020870135915080821115612e08575f80fd5b612e1488838901612afd565b94506040870135915080821115612e29575f80fd5b50612e3687828801612bd3565b949793965093946060013593505050565b5f8060408385031215612e58575f80fd5b50508035926020909101359150565b5f8083601f840112612e77575f80fd5b5081356001600160401b03811115612e8d575f80fd5b60208301915083602082850101111561279f575f80fd5b5f805f8060608587031215612eb7575f80fd5b843593506020850135925060408501356001600160401b03811115612eda575f80fd5b612ee687828801612e67565b95989497509550505050565b634e487b7160e01b5f52602160045260245ffd5b60088110612f2257634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610a798284612f06565b5f60208284031215612f44575f80fd5b8135610b4a81612a74565b5f815180845260208085019450602084015f5b83811015612f7e57815187529582019590820190600101612f62565b509495945050505050565b60ff60f81b8816815260e060208201525f612fa760e08301896129ce565b8281036040840152612fb981896129ce565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152905061120e8185612f4f565b803560ff8116811461105c575f80fd5b5f805f805f805f8060e0898b031215613011575f80fd5b883597506020890135965061302860408a01612fea565b9550606089013561303881612a74565b945060808901356001600160401b0380821115613053575f80fd5b61305f8c838d01612e67565b909650945060a08b0135915080821115613077575f80fd5b6130838c838d01612bb5565b935060c08b0135915080821115613098575f80fd5b506130a58b828c01612bb5565b9150509295985092959890939650565b5f805f805f60a086880312156130c9575f80fd5b85356130d481612a74565b945060208601356130e481612a74565b935060408601356001600160401b03808211156130ff575f80fd5b61310b89838a01612afd565b94506060880135915080821115613120575f80fd5b61312c89838a01612afd565b93506080880135915080821115613141575f80fd5b50612d0188828901612bb5565b5f805f805f8060a08789031215613163575f80fd5b863595506020870135945061317a60408801612fea565b935060608701356001600160401b0380821115613195575f80fd5b6131a18a838b01612e67565b909550935060808901359150808211156131b9575f80fd5b506131c689828a01612bb5565b9150509295509295509295565b5f805f805f60a086880312156131e7575f80fd5b85359450602086013593506131fe60408701612fea565b9250606086013561320e81612a74565b915060808601356001600160401b03811115613228575f80fd5b612d0188828901612bb5565b5f805f8060608587031215613247575f80fd5b843561325281612a74565b93506020850135925060408501356001600160401b03811115612eda575f80fd5b5f805f805f60808688031215613287575f80fd5b853594506020860135935061329e60408701612fea565b925060608601356001600160401b038111156132b8575f80fd5b6132c488828901612e67565b969995985093965092949392505050565b5f805f80608085870312156132e8575f80fd5b84356132f381612a74565b9350602085013592506040850135915060608501356001600160401b03811115612da6575f80fd5b5f805f6060848603121561332d575f80fd5b833592506020840135915061334460408501612fea565b90509250925092565b5f805f805f60a08688031215613361575f80fd5b853561336c81612a74565b9450602086013561337c81612a74565b9350604086013592506060860135915060808601356001600160401b03811115613228575f80fd5b600181811c908216806133b857607f821691505b6020821081036133d657634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613400575f80fd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610a7957610a79613407565b5f8261344c57634e487b7160e01b5f52601260045260245ffd5b500490565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f6020828403121561348f575f80fd5b81516001600160401b038111156134a4575f80fd5b8201601f810184136134b4575f80fd5b80516134c2612aa782612b59565b8181528560208385010111156134d6575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b818382375f9101908152919050565b5f60208284031215613512575f80fd5b815165ffffffffffff81168114610b4a575f80fd5b5f60208284031215613537575f80fd5b8151610b4a81612a74565b65ffffffffffff81811683821601908082111561356157613561613407565b5092915050565b5f815180845260208085019450602084015f5b83811015612f7e5781516001600160a01b03168752958201959082019060010161357b565b5f8282518085526020808601955060208260051b840101602086015f5b848110156135eb57601f198684030189526135d98383516129ce565b988401989250908301906001016135bd565b5090979650505050505050565b608081525f61360a6080830187613568565b828103602084015261361c8187612f4f565b9050828103604084015261363081866135a0565b91505082606083015295945050505050565b80820180821115610a7957610a79613407565b838152606081016136696020830185612f06565b826040830152949350505050565b5f82518060208501845e5f920191825250919050565b84815260ff84166020820152826040820152608060608201525f610b1d60808301846129ce565b85815260ff8516602082015283604082015260a060608201525f6136db60a08301856129ce565b8281036080840152610f2d81856129ce565b828152604060208201525f610b4760408301846129ce565b805160208201516001600160e01b031980821692919060048310156137345780818460040360031b1b83161693505b505050919050565b81810381811115610a7957610a79613407565b5f6101208b8352602060018060a01b038c16818501528160408501526137778285018c613568565b9150838203606085015261378b828b612f4f565b915083820360808501528189518084528284019150828160051b850101838c015f5b838110156137db57601f198784030185526137c98383516129ce565b948601949250908501906001016137ad565b505086810360a08801526137ef818c6135a0565b9450505050508560c08401528460e084015282810361010084015261381481856129ce565b9c9b50505050505050505050505056fe737570706f72743d627261766f2c6672616374696f6e616c2671756f72756d3d666f722c6162737461696e26706172616d733d6672616374696f6e616ca2646970667358221220f8b0e98c647efc309c374ed0bb3147cefb685bd2707cd22c656ddb6bbfbb28af64736f6c63430008190033000000000000000000000000faf8fd17d9840595845582fcb047df13f006787d0000000000000000000000006dc9e1c04ee59ed3531d73a72256c0da46d10982000000000000000000000000d42c7914cf8dc24a1075e29c283c581bd1b0d3d3