0 txs
0 calls
constructor
constructor((address veFxs, address[] safeAllowlist, uint256 initialVotingDelay, uint256 initialVotingPeriod, uint256 initialQuorum, uint256 initialShortCircuitThreshold, uint256 initialMinimumVeFxsForGovernance) params)
functions
_VE_FXS
viewfunction _VE_FXS() view returns (address)
BALLOT_TYPEHASH
viewfunction BALLOT_TYPEHASH() view returns (bytes32)
checkpoints
viewfunction checkpoints(address, uint256) view returns (uint128 normalizedBias, uint128 totalFxs, uint128 normalizedSlope, uint128 timestamp)
CLOCK_MODE
purefunction CLOCK_MODE() pure returns (string)
clock
viewfunction clock() view returns (uint48)
COUNTING_MODE
purefunction COUNTING_MODE() pure returns (string)
delegatedTo
viewfunction delegatedTo(address account) view returns (address)
delegates
viewfunction delegates(address) view returns (uint256 bias, uint128 fxs, uint128 slope, address delegate, uint48 timestamp, uint48 expiry)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
expirations
viewfunction expirations(address, uint256) view returns (uint256 bias, uint128 fxs, uint128 slope)
EXTENDED_BALLOT_TYPEHASH
viewfunction EXTENDED_BALLOT_TYPEHASH() view returns (bytes32)
getCheckpoint
viewfunction getCheckpoint(address account, uint32 pos) view returns (tuple)
getVotes
viewfunction getVotes(address account, uint256 timepoint) view returns (uint256)
getVotesWithParams
viewfunction getVotesWithParams(address account, uint256 timepoint, bytes params) view returns (uint256)
gnosisSafeAllowlist
viewfunction gnosisSafeAllowlist(address) view returns (uint256)
hashProposal
purefunction hashProposal(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) pure returns (uint256)
hasVoted
viewfunction hasVoted(uint256 proposalId, address account) view returns (bool)
lastExpirations
viewfunction lastExpirations(address) view returns (uint256)
minimumVeFxsForGovernance
viewfunction minimumVeFxsForGovernance() view returns (uint256)
name
viewfunction name() view returns (string)
proposalDeadline
viewfunction proposalDeadline(uint256 proposalId) view returns (uint256)
proposals
viewfunction proposals(uint256) view returns (uint64 voteStart, address proposer, bytes4 __gap_unused0, uint64 voteEnd, bytes24 __gap_unused1, bool executed, bool canceled)
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)
QUORUM_DENOMINATOR
viewfunction QUORUM_DENOMINATOR() view returns (uint256)
quorum
viewfunction quorum(uint256 timepoint) view returns (uint256)
quorumNumerator
viewfunction quorumNumerator() view returns (uint256)
setProposalThreshold
purefunction setProposalThreshold(uint256) pure
shortCircuitThreshold
viewfunction shortCircuitThreshold() view returns (uint256)
state
viewfunction state(uint256 proposalId) view returns (uint8)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
VE_FXS
viewfunction VE_FXS() view returns (address)
version
viewfunction version() view returns (string)
VOTE_WEIGHT_MULTIPLIER
viewfunction VOTE_WEIGHT_MULTIPLIER() view returns (uint256)
voteWeightCast
viewfunction voteWeightCast(uint256 proposalId, address account) view returns (uint128)
votingDelay
viewfunction votingDelay() view returns (uint256)
votingPeriod
viewfunction votingPeriod() view returns (uint256)
WEEK
viewfunction WEEK() view returns (uint256)
addSafesToAllowlist
nonpayablefunction addSafesToAllowlist(address[] safes)
cancel
nonpayablefunction cancel(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) returns (uint256)
castVote
nonpayablefunction castVote(uint256 proposalId, uint8 support) returns (uint256)
castVoteBySig
nonpayablefunction castVoteBySig(uint256 proposalId, uint8 support, uint8 v, bytes32 r, bytes32 s) returns (uint256)
castVoteWithReason
nonpayablefunction castVoteWithReason(uint256 proposalId, uint8 support, string reason) returns (uint256)
castVoteWithReasonAndParams
nonpayablefunction castVoteWithReasonAndParams(uint256 proposalId, uint8 support, string reason, bytes params) returns (uint256)
castVoteWithReasonAndParamsBySig
nonpayablefunction castVoteWithReasonAndParamsBySig(uint256 proposalId, uint8 support, string reason, bytes params, uint8 v, bytes32 r, bytes32 s) returns (uint256)
delegate
nonpayablefunction delegate(address delegatee)
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(address[] targets, uint256[] values, bytes[] calldatas, string description) returns (uint256)
relay
payablefunction relay(address target, uint256 value, bytes data) payable
removeSafesFromAllowlist
nonpayablefunction removeSafesFromAllowlist(address[] safes)
setMinimumVeFxsForGovernance
nonpayablefunction setMinimumVeFxsForGovernance(uint256 _minimumVeFxsForGovernance)
setShortCircuitThreshold
nonpayablefunction setShortCircuitThreshold(uint256 _shortCircuitThreshold)
setVotingDelay
nonpayablefunction setVotingDelay(uint256 newVotingDelay)
setVotingPeriod
nonpayablefunction setVotingPeriod(uint256 newVotingPeriod)
setVotingQuorum
nonpayablefunction setVotingQuorum(uint256 _votingQuorum)
events
DelegateChanged
event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate)
EIP712DomainChanged
event EIP712DomainChanged()
MinimumVeFxsForGovernanceSet
event MinimumVeFxsForGovernanceSet(uint256 oldMinimumVeFxsForGovernance, uint256 newMinimumVeFxsForGovernance)
ProposalCanceled
event ProposalCanceled(uint256 proposalId)
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)
ProposalThresholdSet
event ProposalThresholdSet(uint256 oldProposalThreshold, uint256 newProposalThreshold)
QuorumSet
event QuorumSet(uint256 oldQuorum, uint256 newQuorum)
SafeRegistered
event SafeRegistered(address safe)
SafeUnregistered
event SafeUnregistered(address safe)
ShortCircuitThresholdSet
event ShortCircuitThresholdSet(uint256 oldShortCircuitThreshold, uint256 newShortCircuitThreshold)
TransactionAborted
event TransactionAborted(uint256 proposalId, bytes32 rejectedHash)
TransactionApproved
event TransactionApproved(address indexed safe, bytes32 approvedTxHash)
TransactionProposed
event TransactionProposed(uint256 proposalId, address indexed proposer, bytes32 txHash)
VoteCast
event VoteCast(address indexed voter, uint256 proposalId, uint8 support, uint256 weight, string reason)
VoteCastWithParams
event VoteCastWithParams(address indexed voter, uint256 proposalId, uint8 support, uint256 weight, string reason, bytes params)
VotingDelaySet
event VotingDelaySet(uint256 oldVotingDelay, uint256 newVotingDelay)
VotingPeriodSet
event VotingPeriodSet(uint256 oldVotingPeriod, uint256 newVotingPeriod)
errors
CantDelegateLockExpired
error CantDelegateLockExpired()
CantDelegateToSelf
error CantDelegateToSelf()
DisallowedTarget
error DisallowedTarget(address target)
Empty
error Empty()
InvalidShortString
error InvalidShortString()
NonceReserved
error NonceReserved()
NotGovernorAlpha
error NotGovernorAlpha()
OnlyVeFxs
error OnlyVeFxs()
StringTooLong
error StringTooLong(string str)
TimestampInFuture
error TimestampInFuture()
TransactionAlreadyApproved
error TransactionAlreadyApproved(bytes32 txHash)
Unauthorized
error Unauthorized()
WrongNonce
error WrongNonce()
WrongProposalState
error WrongProposalState()
creation bytecode
0x6101a06040523480156200001257600080fd5b5060405162005c8038038062005c80833981016040819052620000359162000582565b6040805160c08101825282516001600160a01b0316815281518083018352601181527046726178476f7665726e6f72416c70686160781b6020828101919091528201819052838301519282018390526060808501519083018190526080808601519084015260a08086015190840152919290916000838383838380620000cf6040805180820190915260018152603160f81b602082015290565b8c516001600160a01b0316608052620000ea826005620002d2565b61010052620000fb816006620002d2565b61012052815160208084019190912061014052815190820120610160524660c0526200018b6101405161016051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60a05250503060e0526007620001a28282620006cd565b50620001b09050836200030b565b620001bb826200034c565b620001c681620003f3565b505086516001600160a01b031661018052505050608084015160105550505060a0015160115560c081015160009081555b816020015151811015620002ca576001601260008460200151848151811062000224576200022462000799565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055507f95ee12812e6c4ddff4e0164f2749c0c72a49d773323b7cbf1db96067d1087732826020015182815181106200028a576200028a62000799565b6020026020010151604051620002af91906001600160a01b0391909116815260200190565b60405180910390a1620002c281620007af565b9050620001f7565b50506200084c565b6000602083511015620002f257620002ea8362000434565b905062000305565b81620002ff8482620006cd565b5060ff90505b92915050565b600b5460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a1600b55565b60008111620003b25760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b60648201526084015b60405180910390fd5b600c5460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a1600c55565b600d5460408051918252602082018390527fccb45da8d5717e6c4544694297c4ba5cf151d455c9bb0ed4fc7a38411bc05461910160405180910390a1600d55565b600080829050601f8151111562000462578260405163305a27a960e01b8152600401620003a99190620007d7565b80516200046f8262000827565b179392505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715620004b257620004b262000477565b60405290565b80516001600160a01b0381168114620004d057600080fd5b919050565b600082601f830112620004e757600080fd5b815160206001600160401b038083111562000506576200050662000477565b8260051b604051601f19603f830116810181811084821117156200052e576200052e62000477565b6040529384528581018301938381019250878511156200054d57600080fd5b83870191505b8482101562000577576200056782620004b8565b8352918301919083019062000553565b979650505050505050565b6000602082840312156200059557600080fd5b81516001600160401b0380821115620005ad57600080fd5b9083019060e08286031215620005c257600080fd5b620005cc6200048d565b620005d783620004b8565b8152602083015182811115620005ec57600080fd5b620005fa87828601620004d5565b60208301525060408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015280935050505092915050565b600181811c908216806200065357607f821691505b6020821081036200067457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006c857600081815260208120601f850160051c81016020861015620006a35750805b601f850160051c820191505b81811015620006c457828155600101620006af565b5050505b505050565b81516001600160401b03811115620006e957620006e962000477565b6200070181620006fa84546200063e565b846200067a565b602080601f831160018114620007395760008415620007205750858301515b600019600386901b1c1916600185901b178555620006c4565b600085815260208120601f198616915b828110156200076a5788860151825594840194600190910190840162000749565b5085821015620007895787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b600060018201620007d057634e487b7160e01b600052601160045260246000fd5b5060010190565b600060208083528351808285015260005b818110156200080657858101830151858201604001528201620007e8565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620006745760001960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051610160516101805161537d62000903600039600081816108cb01528181611c89015281816120c401526121a101526000612d0501526000612cdd015260006118a40152600061187901526000612c3801526000612c6201526000612c8c01526000818161078d015281816126e9015281816130ce015281816131980152818161323e015281816132f901528181613f4c01526140bd015261537d6000f3fe6080604052600436106103905760003560e01c806365da1264116101dc578063b52ef0e711610102578063dd4e2ba5116100a0578063ece40cc11161006f578063ece40cc114610e16578063f23a6e6114610e36578063f4359ce514610e62578063f8ce560a14610e7957600080fd5b8063dd4e2ba514610d8d578063deaaa7cc14610da2578063ea0217cf14610dd6578063eb9019d414610df657600080fd5b8063c01f9e37116100dc578063c01f9e3714610d01578063c28bc2fa14610d3a578063c59057e414610d4d578063c617c20c14610d6d57600080fd5b8063b52ef0e714610c93578063b58131b014610cc0578063bc197c8114610cd557600080fd5b80638d124e471161017a578063974f426f11610149578063974f426f14610c2757806399da1f9514610c3d5780639a802a6d14610c5d578063a7713a7014610c7d57600080fd5b80638d124e4714610bb957806391ddadf414610bd9578063944c393014610bfc57806395e02d7314610c1157600080fd5b80637b3c71d3116101b65780637b3c71d314610b315780637d5e81e214610b5157806382d304ab14610b7157806384b0196e14610b9157600080fd5b806365da126414610ac05780636fef541a14610afc57806370b0f66014610b1157600080fd5b806339bf8809116102c1578063544ffc9c1161025f5780635ab691ab1161022e5780635ab691ab14610a335780635c19a95c14610a535780635f398a1414610a7357806365b9e03c14610a9357600080fd5b8063544ffc9c146108ed57806354fd4d50146109285780635678138814610952578063587cde1e1461097257600080fd5b8063438596321161029b5780634385963214610814578063452115d6146108625780634bf5d7e914610882578063506d1f81146108b957600080fd5b806339bf88091461077b5780633bccf4fd146107c75780633e4f49e6146107e757600080fd5b80632656227d1161032e5780632fe3e261116103085780632fe3e2611461066b578063342cfab61461069f57806334940fa8146107035780633932abb11461076657600080fd5b80632656227d146105aa5780632c0e5242146105bd5780632d63f6931461063557600080fd5b8063034201811161036a57806303420181146104d157806306fdde03146104f15780630cdfebfa14610513578063150b7a021461056657600080fd5b8063013cf08b1461039e57806301ffc9a71461048257806302a251a3146104b257600080fd5b3661039957005b005b600080fd5b3480156103aa57600080fd5b506104186103b9366004614367565b60086020526000908152604090819020805460018201546002909201546001600160401b0380831694600160401b8085046001600160a01b031695600160e01b90950460e01b94928316939204901b9060ff8082169161010090041687565b604080516001600160401b0398891681526001600160a01b0390971660208801526001600160e01b03199095169486019490945294909116606084015267ffffffffffffffff1916608083015291151560a082015290151560c082015260e0015b60405180910390f35b34801561048e57600080fd5b506104a261049d366004614380565b610e99565b6040519015158152602001610479565b3480156104be57600080fd5b50600c545b604051908152602001610479565b3480156104dd57600080fd5b506104c36104ec3660046144c5565b610f06565b3480156104fd57600080fd5b50610506610ffe565b60405161047991906145bb565b34801561051f57600080fd5b5061053361052e3660046145e5565b611090565b604080516001600160801b0395861681529385166020850152918416918301919091529091166060820152608001610479565b34801561057257600080fd5b5061059161058136600461460f565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610479565b6104c36105b83660046147e5565b6110e9565b3480156105c957600080fd5b506106106105d83660046145e5565b6003602090815260009283526040808420909152908252902080546001909101546001600160801b0380821691600160801b90041683565b604080519384526001600160801b039283166020850152911690820152606001610479565b34801561064157600080fd5b506104c3610650366004614367565b6000908152600860205260409020546001600160401b031690565b34801561067757600080fd5b506104c37fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b3480156106ab57600080fd5b506106eb6106ba366004614874565b6000918252600f602090815260408084206001600160a01b039390931684529190529020546001600160801b031690565b6040516001600160801b039091168152602001610479565b34801561070f57600080fd5b5061072361071e3660046148a0565b61121a565b604051610479919081516001600160801b039081168252602080840151821690830152604080840151821690830152606092830151169181019190915260800190565b34801561077257600080fd5b50600b546104c3565b34801561078757600080fd5b506107af7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610479565b3480156107d357600080fd5b506104c36107e23660046148e0565b6112ca565b3480156107f357600080fd5b50610807610802366004614367565b611340565b6040516104799190614944565b34801561082057600080fd5b506104a261082f366004614874565b6000918252600f602090815260408084206001600160a01b039390931684529190529020546001600160801b0316151590565b34801561086e57600080fd5b506104c361087d3660046147e5565b6114c2565b34801561088e57600080fd5b5060408051808201909152600e81526d06d6f64653d74696d657374616d760941b6020820152610506565b3480156108c557600080fd5b506107af7f000000000000000000000000000000000000000000000000000000000000000081565b3480156108f957600080fd5b5061090d610908366004614367565b6115d3565b60408051938452602084019290925290820152606001610479565b34801561093457600080fd5b506040805180820190915260018152603160f81b6020820152610506565b34801561095e57600080fd5b506104c361096d36600461496c565b611605565b34801561097e57600080fd5b506109e661098d36600461498f565b60016020819052600091825260409091208054918101546002909101546001600160801b0380831692600160801b900416906001600160a01b0381169065ffffffffffff600160a01b8204811691600160d01b90041686565b604080519687526001600160801b03958616602088015294909316938501939093526001600160a01b0316606084015265ffffffffffff91821660808401521660a082015260c001610479565b348015610a3f57600080fd5b50610397610a4e366004614367565b61162e565b348015610a5f57600080fd5b50610397610a6e36600461498f565b611670565b348015610a7f57600080fd5b506104c3610a8e3660046149aa565b61167a565b348015610a9f57600080fd5b506104c3610aae36600461498f565b60046020526000908152604090205481565b348015610acc57600080fd5b506107af610adb36600461498f565b6001600160a01b039081166000908152600160205260409020600201541690565b348015610b0857600080fd5b506104c3606481565b348015610b1d57600080fd5b50610397610b2c366004614367565b6116c4565b348015610b3d57600080fd5b506104c3610b4c366004614a2d565b611703565b348015610b5d57600080fd5b506104c3610b6c366004614a86565b61174b565b348015610b7d57600080fd5b50610397610b8c366004614b3a565b61176b565b348015610b9d57600080fd5b50610ba661186b565b6040516104799796959493929190614be9565b348015610bc557600080fd5b50610397610bd4366004614b3a565b6118f4565b348015610be557600080fd5b5060405165ffffffffffff42168152602001610479565b348015610c0857600080fd5b506104c3600381565b348015610c1d57600080fd5b506104c360005481565b348015610c3357600080fd5b506104c360115481565b348015610c4957600080fd5b50610397610c58366004614367565b6119f7565b348015610c6957600080fd5b506104c3610c78366004614c4b565b611a73565b348015610c8957600080fd5b506104c360105481565b348015610c9f57600080fd5b506104c3610cae36600461498f565b60126020526000908152604090205481565b348015610ccc57600080fd5b50600d546104c3565b348015610ce157600080fd5b50610591610cf0366004614ca1565b63bc197c8160e01b95945050505050565b348015610d0d57600080fd5b506104c3610d1c366004614367565b6000908152600860205260409020600101546001600160401b031690565b610397610d48366004614d30565b611a8a565b348015610d5957600080fd5b506104c3610d683660046147e5565b611b51565b348015610d7957600080fd5b50610397610d88366004614367565b611b8b565b348015610d9957600080fd5b50610506611bca565b348015610dae57600080fd5b506104c37f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610de257600080fd5b50610397610df1366004614367565b611bea565b348015610e0257600080fd5b506104c3610e113660046145e5565b611c29565b348015610e2257600080fd5b50610397610e31366004614367565b611c4a565b348015610e4257600080fd5b50610591610e51366004614d71565b63f23a6e6160e01b95945050505050565b348015610e6e57600080fd5b506104c362093a8081565b348015610e8557600080fd5b506104c3610e94366004614367565b611c62565b60006001600160e01b0319821663bf26d89760e01b1480610eca57506001600160e01b031982166379dd796f60e01b145b80610ee557506001600160e01b03198216630271189760e51b145b80610f0057506301ffc9a760e01b6001600160e01b03198316145b92915050565b600080610faa610fa27fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888c8c8c8c604051610f42929190614dd5565b60405180910390208b80519060200120604051602001610f87959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b60405160208183030381529060405280519060200120611d08565b868686611d35565b9050610ff08a828b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250611d53915050565b9a9950505050505050505050565b60606007805461100d90614de5565b80601f016020809104026020016040519081016040528092919081815260200182805461103990614de5565b80156110865780601f1061105b57610100808354040283529160200191611086565b820191906000526020600020905b81548152906001019060200180831161106957829003601f168201915b5050505050905090565b600260205281600052604060002081815481106110ac57600080fd5b6000918252602090912060029091020180546001909101546001600160801b038083169450600160801b9283900481169350818116929091041684565b6000806110f886868686611b51565b9050600061110582611340565b9050600481600781111561111b5761111b61492e565b1480611138575060058160078111156111365761113661492e565b145b6111935760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756044820152601b60fa1b60648201526084015b60405180910390fd5b60008281526008602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906111e19084815260200190565b60405180910390a16111f68288888888611ea8565b6112038288888888611f35565b6112108288888888611ea8565b5095945050505050565b6040805160808101825260008082526020808301829052828401829052606083018290526001600160a01b03861682526002905291909120805463ffffffff841690811061126a5761126a614e1f565b600091825260209182902060408051608081018252600290930290910180546001600160801b038082168552600160801b918290048116958501959095526001909101548085169284019290925290049091166060820152905092915050565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810186905260ff85166060820152600090819061131890610fa290608001610f87565b90506113358782886040518060200160405280600081525061202b565b979650505050505050565b6000818152600860205260408120600281015460ff16156113645750600792915050565b6002810154610100900460ff161561137f5750600292915050565b6000838152600860205260408120546001600160401b0316908190036113e75760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c206964000000604482015260640161118a565b65ffffffffffff421680821061140257506000949350505050565b61140b8561204e565b1561144257611419856120ad565b1561142957506004949350505050565b6114328561218a565b1561144257506003949350505050565b6000858152600860205260409020600101546001600160401b03168181106114705750600195945050505050565b6114798661204e565b80156114a557506000868152600e60205260409020546001600160801b03808216600160801b90920416115b156114b65750600495945050505050565b50600395945050505050565b6000806114d186868686611b51565b905060006114de82611340565b60078111156114ef576114ef61492e565b1461153c5760405162461bcd60e51b815260206004820152601c60248201527f476f7665726e6f723a20746f6f206c61746520746f2063616e63656c00000000604482015260640161118a565b600081815260086020526040902054600160401b90046001600160a01b0316336001600160a01b0316146115bd5760405162461bcd60e51b815260206004820152602260248201527f476f7665726e6f723a206f6e6c792070726f706f7365722063616e2063616e63604482015261195b60f21b606482015260840161118a565b6115c9868686866121ed565b9695505050505050565b6000908152600e6020526040902080546001909101546001600160801b0380831693600160801b909304811692911690565b6000803390506116268482856040518060200160405280600081525061202b565b949350505050565b33301461164d5760405162461bcd60e51b815260040161118a90614e35565b611664565b8061165d600961230b565b0361165257505b61166d81612381565b50565b61166d33826123bf565b60008033905061133587828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611d53915050565b3330146116e35760405162461bcd60e51b815260040161118a90614e35565b6116fa565b806116f3600961230b565b036116e857505b61166d81612686565b6000803390506115c986828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061202b92505050565b6000611756336126c7565b61176285858585612773565b95945050505050565b33301461178a5760405162461bcd60e51b815260040161118a90614e35565b6117a1565b8061179a600961230b565b0361178f57505b60005b81811015611866576001601260008585858181106117c4576117c4614e1f565b90506020020160208101906117d9919061498f565b6001600160a01b031681526020810191909152604001600020557f95ee12812e6c4ddff4e0164f2749c0c72a49d773323b7cbf1db96067d108773283838381811061182657611826614e1f565b905060200201602081019061183b919061498f565b6040516001600160a01b03909116815260200160405180910390a161185f81614e82565b90506117a4565b505050565b60006060808280808361189f7f00000000000000000000000000000000000000000000000000000000000000006005612a7c565b6118ca7f00000000000000000000000000000000000000000000000000000000000000006006612a7c565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b3330146119135760405162461bcd60e51b815260040161118a90614e35565b61192a565b80611923600961230b565b0361191857505b60005b81811015611866576012600084848481811061194b5761194b614e1f565b9050602002016020810190611960919061498f565b6001600160a01b03166001600160a01b03168152602001908152602001600020600090557f9bb34c6be7f4f64fe4bbcebee1c8b87ea0096af8958eccf5062de868431a5bbd8383838181106119b7576119b7614e1f565b90506020020160208101906119cc919061498f565b6040516001600160a01b03909116815260200160405180910390a16119f081614e82565b905061192d565b333014611a165760405162461bcd60e51b815260040161118a90614e35565b611a2d565b80611a26600961230b565b03611a1b57505b600080549082905560408051828152602081018490527fa0c1eacaa4eb23dd8b08156b5891869e9bfff1f28f75845872949236f8a3ddd091015b60405180910390a15050565b6000611a80848484612b27565b90505b9392505050565b333014611aa95760405162461bcd60e51b815260040161118a90614e35565b611ac0565b80611ab9600961230b565b03611aae57505b600080856001600160a01b0316858585604051611ade929190614dd5565b60006040518083038185875af1925050503d8060008114611b1b576040519150601f19603f3d011682016040523d82523d6000602084013e611b20565b606091505b5091509150611b4882826040518060600160405280602881526020016152b060289139612b33565b50505050505050565b600084848484604051602001611b6a9493929190614f29565b60408051601f19818403018152919052805160209091012095945050505050565b333014611baa5760405162461bcd60e51b815260040161118a90614e35565b611bc1565b80611bba600961230b565b03611baf57505b61166d81612b4c565b60606040518060800160405280604981526020016152ff60499139905090565b333014611c095760405162461bcd60e51b815260040161118a90614e35565b611c20565b80611c19600961230b565b03611c0e57505b61166d81612b8a565b6000611a838383611c4560408051602081019091526000815290565b612b27565b6040516282b42960e81b815260040160405180910390fd5b60105460405163bd85b03960e01b8152600481018390526000916064916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bd85b03990602401602060405180830381865afa158015611cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf49190614f74565b611cfe9190614f8d565b610f009190614fa4565b6000610f00611d15612c2b565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000611d4687878787612d5b565b9150915061121081612e1f565b60008581526008602052604081206001611d6c88611340565b6007811115611d7d57611d7d61492e565b14611dd65760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b606482015260840161118a565b8054600090611df09088906001600160401b031686612b27565b9050611dff8888888488612f69565b8351600003611e5457866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda489888489604051611e479493929190614fc6565b60405180910390a2611335565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb87128988848989604051611e95959493929190614fee565b60405180910390a2979650505050505050565b611f2e565b8451811015611f2c57306001600160a01b0316858281518110611ed257611ed2614e1f565b60200260200101516001600160a01b031603611f1c57611f1c838281518110611efd57611efd614e1f565b602002602001015180519060200120600961308890919063ffffffff16565b611f2581614e82565b9050611ead565b505b5050505050565b60006040518060600160405280602781526020016152d860279139905060005b8551811015611b4857600080878381518110611f7357611f73614e1f565b60200260200101516001600160a01b0316878481518110611f9657611f96614e1f565b6020026020010151878581518110611fb057611fb0614e1f565b6020026020010151604051611fc59190615034565b60006040518083038185875af1925050503d8060008114612002576040519150601f19603f3d011682016040523d82523d6000602084013e612007565b606091505b5091509150612017828286612b33565b5050508061202490614e82565b9050611f55565b60006117628585858561204960408051602081019091526000815290565b611d53565b60008060008061205d856115d3565b92509250925060008284116120725782612074565b835b90506120808282615050565b6000878152600860205260409020546120a1906001600160401b0316611c62565b11159695505050505050565b6000806120b9836115d3565b5091505060646011547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bd85b039612110876000908152600860205260409020546001600160401b031690565b6040518263ffffffff1660e01b815260040161212e91815260200190565b602060405180830381865afa15801561214b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216f9190614f74565b6121799190614f8d565b6121839190614fa4565b1092915050565b600080612196836115d3565b5050905060646011547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bd85b039612110876000908152600860205260409020546001600160401b031690565b6000806121fc86868686611b51565b9050600061220982611340565b9050600281600781111561221f5761221f61492e565b1415801561223f5750600681600781111561223c5761223c61492e565b14155b801561225d5750600781600781111561225a5761225a61492e565b14155b6122a95760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f7420616374697665000000604482015260640161118a565b60008281526008602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c906122f99084815260200190565b60405180910390a15095945050505050565b60006123268254600f81810b600160801b909204900b131590565b1561234457604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546001600160801b03191692016001600160801b03169190911790915590565b601080549082905560408051828152602081018490527fefd756ffab26c83a9c410308c3bce2daf19f87e2dfd240775beafe2d2be6bc0b9101611a67565b806001600160a01b0316826001600160a01b0316036123f157604051635e3dd73b60e11b815260040160405180910390fd5b6123fa826126c7565b6001600160a01b038083166000908152600160208181526040808420815160c08101835281548152938101546001600160801b0380821694860194909452600160801b90049092169083015260020154928316606082015265ffffffffffff600160a01b840481166080830152600160d01b90930490921660a0830152808080612483876130c4565b93509350935093506000620151804261249c9190614fa4565b6124a99062015180614f8d565b6124b69062015180615050565b90506124c786888787878787613396565b6040518060c00160405280868152602001846001600160801b03168152602001856001600160801b03168152602001886001600160a01b031681526020018265ffffffffffff1681526020018365ffffffffffff16815250600160008a6001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160801b0302191690836001600160801b0316021790555060408201518160010160106101000a8154816001600160801b0302191690836001600160801b0316021790555060608201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060808201518160020160146101000a81548165ffffffffffff021916908365ffffffffffff16021790555060a082015181600201601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550905050866001600160a01b031686606001516001600160a01b0316896001600160a01b03167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a45050505050505050565b600b5460408051918252602082018390527fc565b045403dc03c2eea82b81a0465edad9e2e7fc4d97e11421c209da93d7a93910160405180910390a1600b55565b6000546040516370a0823160e01b81526001600160a01b0383811660048301527f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015612730573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127549190614f74565b101561166d57604051630dd7804560e21b815260040160405180910390fd5b60008033905060004265ffffffffffff169050600061279b8888888880519060200120611b51565b905086518851146127be5760405162461bcd60e51b815260040161118a90615063565b85518851146127df5760405162461bcd60e51b815260040161118a90615063565b60008851116128305760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c0000000000000000604482015260640161118a565b600081815260086020526040902054600160401b90046001600160a01b0316156128a65760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b606482015260840161118a565b60006128b1600b5490565b6128bb9084615050565b905060006128c8600c5490565b6128d29083615050565b90506040518060e001604052806128e88461344e565b6001600160401b031681526001600160a01b0387166020820152600060408201526060016129158361344e565b6001600160401b039081168252600060208084018290526040808501839052606094850183905288835260088252918290208551815492870151878501519186166001600160e01b031990941693909317600160401b6001600160a01b039094168402176001600160e01b0316600160e01b60e09290921c91909102178155938501516080860151908416921c0217600183015560a08301516002909201805460c09094015161ffff1990941692151561ff00191692909217610100931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e91811115612a1957612a19614408565b604051908082528060200260200182016040528015612a4c57816020015b6060815260200190600190039081612a375790505b508d88888f604051612a66999897969594939291906150a4565b60405180910390a1509098975050505050505050565b606060ff8314612a9657612a8f836134ba565b9050610f00565b818054612aa290614de5565b80601f0160208091040260200160405190810160405280929190818152602001828054612ace90614de5565b8015612b1b5780601f10612af057610100808354040283529160200191612b1b565b820191906000526020600020905b815481529060010190602001808311612afe57829003601f168201915b50505050509050610f00565b6000611a8084846134f9565b60608315612b42575081611a83565b611a83838361353a565b601180549082905560408051828152602081018490527fc62358b0cdb315368e8a69b3a40e91d435d64202cd88a0e9224ce40740cf74189101611a67565b60008111612bea5760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f7253657474696e67733a20766f74696e6720706572696f6420604482015266746f6f206c6f7760c81b606482015260840161118a565b600c5460408051918252602082018390527f7e3f7f0708a84de9203036abaa450dccc85ad5ff52f78c170f3edb55cf5e8828910160405180910390a1600c55565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015612c8457507f000000000000000000000000000000000000000000000000000000000000000046145b15612cae57507f000000000000000000000000000000000000000000000000000000000000000090565b612d56604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b905090565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612d925750600090506003612e16565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612de6573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612e0f57600060019250925050612e16565b9150600090505b94509492505050565b6000816004811115612e3357612e3361492e565b03612e3b5750565b6001816004811115612e4f57612e4f61492e565b03612e9c5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161118a565b6002816004811115612eb057612eb061492e565b03612efd5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161118a565b6003816004811115612f1157612f1161492e565b0361166d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161118a565b60008211612fc75760405162461bcd60e51b815260206004820152602560248201527f476f7665726e6f72436f756e74696e674672616374696f6e616c3a206e6f2077604482015264195a59da1d60da1b606482015260840161118a565b6000858152600f602090815260408083206001600160a01b03881684529091529020546001600160801b031682116130555760405162461bcd60e51b815260206004820152602b60248201527f476f7665726e6f72436f756e74696e674672616374696f6e616c3a20616c6c2060448201526a1dd95a59da1d0818d85cdd60aa1b606482015260840161118a565b600061306083613564565b9050815160000361307c57613077868683876135cd565b611f2c565b611f2c868683856137ad565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b60008060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663010ae757876040518263ffffffff1660e01b815260040161312791906001600160a01b0391909116815260200190565b602060405180830381865afa158015613144573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131689190614f74565b6040516328d09d4760e01b81526001600160a01b03888116600483015260248201839052919250600091829182917f000000000000000000000000000000000000000000000000000000000000000016906328d09d479060440160a060405180830381865afa1580156131df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613203919061517d565b945050509250925061321782600f0b6139d1565b60405163cbf9fe5f60e01b81526001600160a01b038b8116600483015291985091965086917f00000000000000000000000000000000000000000000000000000000000000009091169063cbf9fe5f906024016040805180830381865afa158015613286573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132aa91906151cb565b6020015194504285116132d057604051630142711160e41b815260040160405180910390fd5b604051631b40414360e31b81526001600160a01b038a81166004830152602482018690526000917f00000000000000000000000000000000000000000000000000000000000000009091169063da020a1890604401602060405180830381865afa158015613342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133669190614f74565b90506133728189614f8d565b61337e85600f0b6139d1565b6133889190615050565b985050505050509193509193565b60608701516001600160a01b03161561341c576133db8760600151613a2389600001518a604001516001600160801b03168b602001516001600160801b031686613a28565b50505061341c8760600151613a2389600001518a604001516001600160801b03168b60a0015165ffffffffffff168c602001516001600160801b0316613cf7565b6001600160a01b03861615611b485761343b86613dee87878786613a28565b505050611b4886613dee87878688613cf7565b60006001600160401b038211156134b65760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b606482015260840161118a565b5090565b606060006134c783613df2565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b60004282111561351c576040516347860b9760e01b815260040160405180910390fd5b6135268383613e1a565b6135308484613f28565b611a839190615050565b81511561354a5781518083602001fd5b8060405162461bcd60e51b815260040161118a91906145bb565b60006001600160801b038211156134b65760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b606482015260840161118a565b6000848152600f602090815260408083206001600160a01b03871684529091529020546001600160801b0316156136165760405162461bcd60e51b815260040161118a90615221565b6000848152600f602090815260408083206001600160a01b0387168452909152902080546001600160801b0319166001600160801b03841617905560ff81166136a9576000848152600e6020526040812080548492906136809084906001600160801b0316615275565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506137a7565b60001960ff8216016136e6576000848152600e602052604090208054839190601090613680908490600160801b90046001600160801b0316615275565b60011960ff82160161371c576000848152600e6020526040812060010180548492906136809084906001600160801b0316615275565b60405162461bcd60e51b815260206004820152605460248201527f476f7665726e6f72436f756e74696e674672616374696f6e616c3a20696e766160448201527f6c696420737570706f72742076616c75652c206d75737420626520696e636c7560648201527364656420696e20566f74655479706520656e756d60601b608482015260a40161118a565b50505050565b80516030146138135760405162461bcd60e51b815260206004820152602c60248201527f476f7665726e6f72436f756e74696e674672616374696f6e616c3a20696e766160448201526b6c696420766f74654461746160a01b606482015260840161118a565b6020818101516040808401516000888152600f85528281206001600160a01b038916825290945290832054608083811c946001600160801b03948516949390911c929091169081836138658688615050565b61386f9190615050565b6138799190615050565b9050866001600160801b03168111156138a45760405162461bcd60e51b815260040161118a90615221565b6000898152600f602090815260408083206001600160a01b038c168452825280832080546001600160801b0319166001600160801b03868116919091179091558c8452600e83529281902081516060808201845282548087168352600160801b900486169482019490945260019190910154909316838201528051918201905281518190613933908990615275565b6001600160801b031681526020018683602001516139519190615275565b6001600160801b0316815260200185836040015161396f9190615275565b6001600160801b0390811690915260009b8c52600e602090815260409c8d90208351918401518316600160801b0291831691909117815591909b01516001909101805491909b166001600160801b031990911617909955505050505050505050565b6000808212156134b65760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015260640161118a565b900390565b6001600160a01b0386166000908152600260205260408120805482918291828115613abf57826001830381548110613a6257613a62614e1f565b600091825260209182902060408051608081018252600290930290910180546001600160801b038082168552600160801b918290048116958501959095526001909101548085169284019290925290049091166060820152613ae4565b6040805160808101825260008082526020820181905291810182905260608101919091525b9050613b0181600001516001600160801b03168b8d63ffffffff16565b9550613b1e81604001516001600160801b03168a8d63ffffffff16565b9450613b3b81602001516001600160801b0316898d63ffffffff16565b9350600082118015613b5957508681606001516001600160801b0316145b15613c3a5785836001840381548110613b7457613b74614e1f565b906000526020600020906002020160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555084836001840381548110613bbf57613bbf614e1f565b906000526020600020906002020160010160006101000a8154816001600160801b0302191690836001600160801b0316021790555083836001840381548110613c0a57613c0a614e1f565b6000918252602090912060029091020180546001600160801b03928316600160801b029216919091179055613ce8565b6000806000613c578f85606001516001600160801b03168c614139565b604080516080810182526001600160801b0394909d038481168e5291909a038381166020808f0191825293909c038481169b8e019b8c528e851660608f019081528b5460018181018e5560008e8152969096209f519e518716600160801b9081029f88169f909f176002909102909f019e8f559b519b518516909c029a909316999099179a01999099555094969450505b50505096509650969350505050565b6001600160a01b038616600090815260036020908152604080832085845290915290208054613d2a908663ffffffff8916565b81556001810154613d4f90600160801b90046001600160801b03168563ffffffff8916565b6001820180546001600160801b03928316600160801b02908316818117909255613d7f9216178363ffffffff8916565b6001820180546001600160801b0319166001600160801b0392909216918217905515801590613dc557506001600160a01b03871660009081526004602052604090205483115b15611b48576001600160a01b038716600090815260046020526040902083905550505050505050565b0190565b600060ff8216601f811115610f0057604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b03821660009081526002602052604081208190613e3e9084614211565b905080606001516001600160801b0316600003613e5f576000915050610f00565b6000806000613e7c8785606001516001600160801b031688614139565b92509250925060008385600001516001600160801b0316613e9d919061529c565b905060008386604001516001600160801b0316613eba919061529c565b905060008387602001516001600160801b0316613ed7919061529c565b90506000613ee58a84614f8d565b90506000818511613ef7576000613f01565b613f01828661529c565b9050613f0e816003614f8d565b613f189084615050565b9c9b505050505050505050505050565b60405163cbf9fe5f60e01b81526001600160a01b03838116600483015260009183917f0000000000000000000000000000000000000000000000000000000000000000169063cbf9fe5f906024016040805180830381865afa158015613f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fb691906151cb565b6020015111613fc757506000610f00565b6001600160a01b03808416600090815260016020818152604092839020835160c08101855281548152928101546001600160801b0380821693850193909352600160801b9004909116928201929092526002909101549182166060820181905265ffffffffffff600160a01b840481166080840152600160d01b90930490921660a0820152901580156140665750806080015165ffffffffffff168310155b80614093575060608101516001600160a01b0316158015906140935750806080015165ffffffffffff1683105b1561412f57604051627eeac760e11b81526001600160a01b038581166004830152602482018590527f0000000000000000000000000000000000000000000000000000000000000000169062fdd58e90604401602060405180830381865afa158015614103573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141279190614f74565b915050610f00565b5060009392505050565b6001600160a01b0383166000908152600460205260408120548190819062093a80808704810201908510614185576001600160a01b038716600090815260046020526040902054614187565b845b6001600160a01b03881660009081526003602052604090209095505b8582116142065760008281526020828152604091829020825160608101845281548082526001909201546001600160801b03808216948301859052600160801b9091041693018390529690960195940193929092019162093a80909101906141a3565b505093509350939050565b604080516080810182526000808252602082018190529181018290526060810191909152825460005b818110156142a957600061424e828461434c565b90508486828154811061426357614263614e1f565b6000918252602090912060029091020160010154600160801b90046001600160801b03161115614295578092506142a3565b6142a0816001615050565b91505b5061423a565b604080516080810182526000808252602082018190529181018290526060810191909152821561176257856142df60018561529c565b815481106142ef576142ef614e1f565b600091825260209182902060408051608081018252600290930290910180546001600160801b038082168552600160801b9182900481169585019590955260019091015480851692840192909252900490911660608201526115c9565b600061435b6002848418614fa4565b611a8390848416615050565b60006020828403121561437957600080fd5b5035919050565b60006020828403121561439257600080fd5b81356001600160e01b031981168114611a8357600080fd5b803560ff811681146143bb57600080fd5b919050565b60008083601f8401126143d257600080fd5b5081356001600160401b038111156143e957600080fd5b60208301915083602082850101111561440157600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561444657614446614408565b604052919050565b60006001600160401b0383111561446757614467614408565b61447a601f8401601f191660200161441e565b905082815283838301111561448e57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126144b657600080fd5b611a838383356020850161444e565b60008060008060008060008060e0898b0312156144e157600080fd5b883597506144f160208a016143aa565b965060408901356001600160401b038082111561450d57600080fd5b6145198c838d016143c0565b909850965060608b013591508082111561453257600080fd5b5061453f8b828c016144a5565b94505061454e60808a016143aa565b925060a0890135915060c089013590509295985092959890939650565b60005b8381101561458657818101518382015260200161456e565b50506000910152565b600081518084526145a781602086016020860161456b565b601f01601f19169290920160200192915050565b602081526000611a83602083018461458f565b80356001600160a01b03811681146143bb57600080fd5b600080604083850312156145f857600080fd5b614601836145ce565b946020939093013593505050565b6000806000806080858703121561462557600080fd5b61462e856145ce565b935061463c602086016145ce565b92506040850135915060608501356001600160401b0381111561465e57600080fd5b61466a878288016144a5565b91505092959194509250565b60006001600160401b0382111561468f5761468f614408565b5060051b60200190565b600082601f8301126146aa57600080fd5b813560206146bf6146ba83614676565b61441e565b82815260059290921b840181019181810190868411156146de57600080fd5b8286015b84811015614700576146f3816145ce565b83529183019183016146e2565b509695505050505050565b600082601f83011261471c57600080fd5b8135602061472c6146ba83614676565b82815260059290921b8401810191818101908684111561474b57600080fd5b8286015b84811015614700578035835291830191830161474f565b600082601f83011261477757600080fd5b813560206147876146ba83614676565b82815260059290921b840181019181810190868411156147a657600080fd5b8286015b848110156147005780356001600160401b038111156147c95760008081fd5b6147d78986838b01016144a5565b8452509183019183016147aa565b600080600080608085870312156147fb57600080fd5b84356001600160401b038082111561481257600080fd5b61481e88838901614699565b9550602087013591508082111561483457600080fd5b6148408883890161470b565b9450604087013591508082111561485657600080fd5b5061486387828801614766565b949793965093946060013593505050565b6000806040838503121561488757600080fd5b82359150614897602084016145ce565b90509250929050565b600080604083850312156148b357600080fd5b6148bc836145ce565b9150602083013563ffffffff811681146148d557600080fd5b809150509250929050565b600080600080600060a086880312156148f857600080fd5b85359450614908602087016143aa565b9350614916604087016143aa565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b602081016008831061496657634e487b7160e01b600052602160045260246000fd5b91905290565b6000806040838503121561497f57600080fd5b82359150614897602084016143aa565b6000602082840312156149a157600080fd5b611a83826145ce565b6000806000806000608086880312156149c257600080fd5b853594506149d2602087016143aa565b935060408601356001600160401b03808211156149ee57600080fd5b6149fa89838a016143c0565b90955093506060880135915080821115614a1357600080fd5b50614a20888289016144a5565b9150509295509295909350565b60008060008060608587031215614a4357600080fd5b84359350614a53602086016143aa565b925060408501356001600160401b03811115614a6e57600080fd5b614a7a878288016143c0565b95989497509550505050565b60008060008060808587031215614a9c57600080fd5b84356001600160401b0380821115614ab357600080fd5b614abf88838901614699565b95506020870135915080821115614ad557600080fd5b614ae18883890161470b565b94506040870135915080821115614af757600080fd5b614b0388838901614766565b93506060870135915080821115614b1957600080fd5b508501601f81018713614b2b57600080fd5b61466a8782356020840161444e565b60008060208385031215614b4d57600080fd5b82356001600160401b0380821115614b6457600080fd5b818501915085601f830112614b7857600080fd5b813581811115614b8757600080fd5b8660208260051b8501011115614b9c57600080fd5b60209290920196919550909350505050565b600081518084526020808501945080840160005b83811015614bde57815187529582019590820190600101614bc2565b509495945050505050565b60ff60f81b8816815260e060208201526000614c0860e083018961458f565b8281036040840152614c1a818961458f565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501529050610ff08185614bae565b600080600060608486031215614c6057600080fd5b614c69846145ce565b92506020840135915060408401356001600160401b03811115614c8b57600080fd5b614c97868287016144a5565b9150509250925092565b600080600080600060a08688031215614cb957600080fd5b614cc2866145ce565b9450614cd0602087016145ce565b935060408601356001600160401b0380821115614cec57600080fd5b614cf889838a0161470b565b94506060880135915080821115614d0e57600080fd5b614d1a89838a0161470b565b93506080880135915080821115614a1357600080fd5b60008060008060608587031215614d4657600080fd5b614d4f856145ce565b93506020850135925060408501356001600160401b03811115614a6e57600080fd5b600080600080600060a08688031215614d8957600080fd5b614d92866145ce565b9450614da0602087016145ce565b9350604086013592506060860135915060808601356001600160401b03811115614dc957600080fd5b614a20888289016144a5565b8183823760009101908152919050565b600181811c90821680614df957607f821691505b602082108103614e1957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b60208082526018908201527f476f7665726e6f723a206f6e6c79476f7665726e616e63650000000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600060018201614e9457614e94614e6c565b5060010190565b600081518084526020808501945080840160005b83811015614bde5781516001600160a01b031687529582019590820190600101614eaf565b600081518084526020808501808196508360051b8101915082860160005b85811015614f1c578284038952614f0a84835161458f565b98850198935090840190600101614ef2565b5091979650505050505050565b608081526000614f3c6080830187614e9b565b8281036020840152614f4e8187614bae565b90508281036040840152614f628186614ed4565b91505082606083015295945050505050565b600060208284031215614f8657600080fd5b5051919050565b8082028115828204841417610f0057610f00614e6c565b600082614fc157634e487b7160e01b600052601260045260246000fd5b500490565b84815260ff841660208201528260408201526080606082015260006115c9608083018461458f565b85815260ff8516602082015283604082015260a06060820152600061501660a083018561458f565b8281036080840152615028818561458f565b98975050505050505050565b6000825161504681846020870161456b565b9190910192915050565b80820180821115610f0057610f00614e6c565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b60006101208b8352602060018060a01b038c16818501528160408501526150cd8285018c614e9b565b915083820360608501526150e1828b614bae565b915083820360808501528189518084528284019150828160051b850101838c0160005b8381101561513257601f1987840301855261512083835161458f565b94860194925090850190600101615104565b505086810360a0880152615146818c614ed4565b9450505050508560c08401528460e0840152828103610100840152613f18818561458f565b8051600f81900b81146143bb57600080fd5b600080600080600060a0868803121561519557600080fd5b61519e8661516b565b94506151ac6020870161516b565b6040870151606088015160809098015196999198509695945092505050565b6000604082840312156151dd57600080fd5b604051604081018181106001600160401b03821117156151ff576151ff614408565b60405261520b8361516b565b8152602083015160208201528091505092915050565b60208082526034908201527f476f7665726e6f72436f756e74696e674672616374696f6e616c3a20766f7465604082015273081ddbdd5b1908195e18d95959081dd95a59da1d60621b606082015260800190565b6001600160801b0381811683821601908082111561529557615295614e6c565b5092915050565b81810381811115610f0057610f00614e6c56fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765476f7665726e6f723a2063616c6c20726576657274656420776974686f7574206d657373616765737570706f72743d627261766f2671756f72756d3d616761696e73742c6162737461696e2671756f72756d3d666f722c6162737461696e26706172616d733d6672616374696f6e616ca2646970667358221220f51a9b13b809d3371d7dea582f1beef8acb13b3a07d5e3baa879b8b0dcf3f35364736f6c634300081300330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000c8418af6358ffdda74e09ca9cc3fe03ca6adc5b000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000002a300000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000330000000000000000000000000000000000000000000000056bc75e2d631000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000e5ac1f0ba849c6d4e63c38db63abb0094e235823