0 txs
587 calls
constructor
constructor(address _serviceManager, address _stakeRegistry, address _blsApkRegistry, address _indexRegistry)
functions
blsApkRegistry
viewfunction blsApkRegistry() view returns (address)
calculateOperatorChurnApprovalDigestHash
viewfunction calculateOperatorChurnApprovalDigestHash(address registeringOperator, bytes32 registeringOperatorId, tuple[] operatorKickParams, bytes32 salt, uint256 expiry) view returns (bytes32)
churnApprover
viewfunction churnApprover() view returns (address)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
ejector
viewfunction ejector() view returns (address)
getCurrentQuorumBitmap
viewfunction getCurrentQuorumBitmap(bytes32 operatorId) view returns (uint192)
getOperator
viewfunction getOperator(address operator) view returns (tuple)
getOperatorFromId
viewfunction getOperatorFromId(bytes32 operatorId) view returns (address)
getOperatorId
viewfunction getOperatorId(address operator) view returns (bytes32)
getOperatorSetParams
viewfunction getOperatorSetParams(uint8 quorumNumber) view returns (tuple)
getOperatorStatus
viewfunction getOperatorStatus(address operator) view returns (uint8)
getQuorumBitmapAtBlockNumberByIndex
viewfunction getQuorumBitmapAtBlockNumberByIndex(bytes32 operatorId, uint32 blockNumber, uint256 index) view returns (uint192)
getQuorumBitmapHistoryLength
viewfunction getQuorumBitmapHistoryLength(bytes32 operatorId) view returns (uint256)
getQuorumBitmapIndicesAtBlockNumber
viewfunction getQuorumBitmapIndicesAtBlockNumber(uint32 blockNumber, bytes32[] operatorIds) view returns (uint32[])
getQuorumBitmapUpdateByIndex
viewfunction getQuorumBitmapUpdateByIndex(bytes32 operatorId, uint256 index) view returns (tuple)
indexRegistry
viewfunction indexRegistry() view returns (address)
isChurnApproverSaltUsed
viewfunction isChurnApproverSaltUsed(bytes32) view returns (bool)
numRegistries
viewfunction numRegistries() view returns (uint256)
OPERATOR_CHURN_APPROVAL_TYPEHASH
viewfunction OPERATOR_CHURN_APPROVAL_TYPEHASH() view returns (bytes32)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (uint256)
paused
viewfunction paused(uint8 index) view returns (bool)
pauserRegistry
viewfunction pauserRegistry() view returns (address)
PUBKEY_REGISTRATION_TYPEHASH
viewfunction PUBKEY_REGISTRATION_TYPEHASH() view returns (bytes32)
pubkeyRegistrationMessageHash
viewfunction pubkeyRegistrationMessageHash(address operator) view returns (tuple)
quorumCount
viewfunction quorumCount() view returns (uint8)
quorumUpdateBlockNumber
viewfunction quorumUpdateBlockNumber(uint8) view returns (uint256)
registries
viewfunction registries(uint256) view returns (address)
serviceManager
viewfunction serviceManager() view returns (address)
stakeRegistry
viewfunction stakeRegistry() view returns (address)
createQuorum
nonpayablefunction createQuorum(tuple operatorSetParams, uint96 minimumStake, tuple[] strategyParams)
deregisterOperator
nonpayablefunction deregisterOperator(bytes quorumNumbers)
ejectOperator
nonpayablefunction ejectOperator(address operator, bytes quorumNumbers)
initialize
nonpayablefunction initialize(address _initialOwner, address _churnApprover, address _ejector, address _pauserRegistry, uint256 _initialPausedStatus, tuple[] _operatorSetParams, uint96[] _minimumStakes, tuple[][] _strategyParams)
pause
nonpayablefunction pause(uint256 newPausedStatus)
pauseAll
nonpayablefunction pauseAll()
registerOperator
nonpayablefunction registerOperator(bytes quorumNumbers, string socket, tuple params, tuple operatorSignature)
registerOperatorWithChurn
nonpayablefunction registerOperatorWithChurn(bytes quorumNumbers, string socket, tuple params, tuple[] operatorKickParams, tuple churnApproverSignature, tuple operatorSignature)
renounceOwnership
nonpayablefunction renounceOwnership()
setChurnApprover
nonpayablefunction setChurnApprover(address _churnApprover)
setEjector
nonpayablefunction setEjector(address _ejector)
setOperatorSetParams
nonpayablefunction setOperatorSetParams(uint8 quorumNumber, tuple operatorSetParams)
setPauserRegistry
nonpayablefunction setPauserRegistry(address newPauserRegistry)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause(uint256 newPausedStatus)
updateOperators
nonpayablefunction updateOperators(address[] operators)
updateOperatorsForQuorum
nonpayablefunction updateOperatorsForQuorum(address[][] operatorsPerQuorum, bytes quorumNumbers)
updateSocket
nonpayablefunction updateSocket(string socket)
events
ChurnApproverUpdated
event ChurnApproverUpdated(address prevChurnApprover, address newChurnApprover)
EIP712DomainChanged
event EIP712DomainChanged()
EjectorUpdated
event EjectorUpdated(address prevEjector, address newEjector)
Initialized
event Initialized(uint8 version)
OperatorDeregistered
event OperatorDeregistered(address indexed operator, bytes32 indexed operatorId)
OperatorRegistered
event OperatorRegistered(address indexed operator, bytes32 indexed operatorId)
OperatorSetParamsUpdated
event OperatorSetParamsUpdated(uint8 indexed quorumNumber, (uint32 maxOperatorCount, uint16 kickBIPsOfOperatorStake, uint16 kickBIPsOfTotalStake) operatorSetParams)
OperatorSocketUpdate
event OperatorSocketUpdate(bytes32 indexed operatorId, string socket)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address indexed account, uint256 newPausedStatus)
PauserRegistrySet
event PauserRegistrySet(address pauserRegistry, address newPauserRegistry)
QuorumBlockNumberUpdated
event QuorumBlockNumberUpdated(uint8 indexed quorumNumber, uint256 blocknumber)
Unpaused
event Unpaused(address indexed account, uint256 newPausedStatus)
errors
InvalidShortString
error InvalidShortString()
StringTooLong
error StringTooLong(string str)
creation bytecode
0x6101e06040523480156200001257600080fd5b506040516200650a3803806200650a8339810160408190526200003591620002d9565b838383836040518060400160405280601681526020017f4156535265676973747279436f6f7264696e61746f72000000000000000000008152506040518060400160405280600681526020016576302e302e3160d01b815250620000a46000836200018160201b90919060201c565b61012052620000b581600162000181565b61014052815160208084019190912060e052815190820120610100524660a0526200014360e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526001600160a01b03938416610160529183166101a052821661018052166101c05262000177620001ba565b505050506200052a565b6000602083511015620001a15762000199836200027d565b9050620001b4565b81620001ae8482620003e8565b5060ff90505b92915050565b600254610100900460ff1615620002285760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084015b60405180910390fd5b60025460ff90811610156200027b576002805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b600080829050601f81511115620002ab578260405163305a27a960e01b81526004016200021f9190620004b4565b8051620002b88262000505565b179392505050565b6001600160a01b0381168114620002d657600080fd5b50565b60008060008060808587031215620002f057600080fd5b8451620002fd81620002c0565b60208601519094506200031081620002c0565b60408601519093506200032381620002c0565b60608601519092506200033681620002c0565b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200036c57607f821691505b6020821081036200038d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003e3576000816000526020600020601f850160051c81016020861015620003be5750805b601f850160051c820191505b81811015620003df57828155600101620003ca565b5050505b505050565b81516001600160401b0381111562000404576200040462000341565b6200041c8162000415845462000357565b8462000393565b602080601f8311600181146200045457600084156200043b5750858301515b600019600386901b1c1916600185901b178555620003df565b600085815260208120601f198616915b82811015620004855788860151825594840194600190910190840162000464565b5085821015620004a45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808352835180602085015260005b81811015620004e457858101830151858201604001528201620004c6565b506000604082860101526040601f19601f8301168501019250505092915050565b805160208083015191908110156200038d5760001960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c051615ecd6200063d60003960008181610661015281816111320152818161209601528181612da20152818161365e0152613c2b01526000818161058b01528181612021015281816124c501528181612d22015281816135b50152818161380a0152613baa01526000818161055101528181610ece0152818161205f01528181612ca401528181612f3501528181612faf015281816135350152613ca701526000818161049101528181612bfa015261347d015260006117f0015260006117c601526000613efe01526000613ed601526000613e3101526000613e5b01526000613e850152615ecd6000f3fe608060405234801561001057600080fd5b506004361061029f5760003560e01c80636347c900116101675780639feab859116100ce578063d75b4c8811610087578063d75b4c881461071f578063dd8283f314610732578063e65797ad14610745578063f2fde38b146107e8578063fabc1cbc146107fb578063fd39105a1461080e57600080fd5b80639feab85914610683578063a50857bf146106aa578063c391425e146106bd578063ca0de882146106dd578063ca4f2d9714610704578063d72d8dd61461071757600080fd5b8063871ef04911610120578063871ef049146105f6578063886f1195146106095780638da5cb5b146106225780639aa1653d1461062a5780639b5d177b146106495780639e9923c21461065c57600080fd5b80636347c9001461057357806368304835146105865780636e3b17db146105ad578063715018a6146105c057806384b0196e146105c857806384ca5213146105e357600080fd5b8063296bb0641161020b5780635865c60c116101c45780635865c60c146104e6578063595c6a67146105065780635ac86ab71461050e5780635b0b829f146105315780635c975abb146105445780635df459461461054c57600080fd5b8063296bb0641461045357806329d1e0c3146104665780632cdd1e86146104795780633998fdd31461048c5780633c2a7f4c146104b35780635140a548146104d357600080fd5b806313542a4e1161025d57806313542a4e14610368578063136439dd146103915780631478851f146103a45780631eb812da146103d7578063249a0c421461042057806328f61b311461044057600080fd5b8062cf2ab5146102a457806303fd3492146102b957806304ec6351146102ec578063054310e6146103175780630cf4b7671461034257806310d67a2f14610355575b600080fd5b6102b76102b2366004614911565b61084a565b005b6102d96102c7366004614952565b6000908152609a602052604090205490565b6040519081526020015b60405180910390f35b6102ff6102fa36600461497d565b610958565b6040516001600160c01b0390911681526020016102e3565b609f5461032a906001600160a01b031681565b6040516001600160a01b0390911681526020016102e3565b6102b7610350366004614a9c565b610b4e565b6102b7610363366004614b11565b610c36565b6102d9610376366004614b11565b6001600160a01b03166000908152609b602052604090205490565b6102b761039f366004614952565b610ce7565b6103c76103b2366004614952565b609c6020526000908152604090205460ff1681565b60405190151581526020016102e3565b6103ea6103e5366004614b2e565b610e24565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016102e3565b6102d961042e366004614b61565b609d6020526000908152604090205481565b60a05461032a906001600160a01b031681565b61032a610461366004614952565b610eb5565b6102b7610474366004614b11565b610f41565b6102b7610487366004614b11565b610f52565b61032a7f000000000000000000000000000000000000000000000000000000000000000081565b6104c66104c1366004614b11565b610f63565b6040516102e39190614b7c565b6102b76104e1366004614bd4565b610fe2565b6104f96104f4366004614b11565b6114e3565b6040516102e39190614c77565b6102b7611557565b6103c761051c366004614b61565b600354600160ff9092169190911b9081161490565b6102b761053f366004614cfc565b611623565b6003546102d9565b61032a7f000000000000000000000000000000000000000000000000000000000000000081565b61032a610581366004614952565b6116ba565b61032a7f000000000000000000000000000000000000000000000000000000000000000081565b6102b76105bb366004614d30565b6116e4565b6102b76117a4565b6105d06117b8565b6040516102e39796959493929190614dca565b6102d96105f1366004614ec6565b611840565b6102ff610604366004614952565b61188a565b60025461032a906201000090046001600160a01b031681565b61032a611895565b6098546106379060ff1681565b60405160ff90911681526020016102e3565b6102b761065736600461505e565b6118ae565b61032a7f000000000000000000000000000000000000000000000000000000000000000081565b6102d97f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102b76106b8366004615157565b611bdc565b6106d06106cb3660046151ff565b611d56565b6040516102e391906152a4565b6102d97f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102b76107123660046152ee565b611e05565b609e546102d9565b6102b761072d3660046153d4565b611e6d565b6102b7610740366004615591565b611e80565b6107b4610753366004614b61565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526099825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016102e3565b6102b76107f6366004614b11565b61217a565b6102b7610809366004614952565b6121f0565b61083d61081c366004614b11565b6001600160a01b03166000908152609b602052604090206001015460ff1690565b6040516102e39190615665565b60035460029060049081160361087b5760405162461bcd60e51b815260040161087290615673565b60405180910390fd5b60005b8281101561095257600084848381811061089a5761089a6156aa565b90506020020160208101906108af9190614b11565b6001600160a01b0381166000908152609b602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156108fa576108fa614c3f565b600281111561090b5761090b614c3f565b9052508051909150600061091e8261234a565b90506000610934826001600160c01b03166123bb565b9050610941858583612487565b50506001909301925061087e915050565b50505050565b6000838152609a6020526040812080548291908490811061097b5761097b6156aa565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b03169183019190915290925085161015610a755760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c401610872565b602081015163ffffffff161580610a9b5750806020015163ffffffff168463ffffffff16105b610b425760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c401610872565b60400151949350505050565b6001336000908152609b602052604090206001015460ff166002811115610b7757610b77614c3f565b14610bea5760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f742072656769737465726564000000006064820152608401610872565b336000908152609b6020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610c2b9084906156c0565b60405180910390a250565b60028054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cab91906156d3565b6001600160a01b0316336001600160a01b031614610cdb5760405162461bcd60e51b8152600401610872906156f0565b610ce481612574565b50565b60025460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610d34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d58919061573a565b610d745760405162461bcd60e51b81526004016108729061575c565b60035481811614610ded5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610872565b600381905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610c2b565b60408051606081018252600080825260208201819052918101919091526000838152609a60205260409020805483908110610e6157610e616156aa565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610f1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eaf91906156d3565b610f49612679565b610ce4816126d8565b610f5a612679565b610ce481612741565b6040805180820190915260008082526020820152610eaf610fdd7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de684604051602001610fc29291909182526001600160a01b0316602082015260400190565b604051602081830303815290604052805190602001206127aa565b6127d7565b60035460029060049081160361100a5760405162461bcd60e51b815260040161087290615673565b600061105284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060985460ff1691506128669050565b90508483146110c35760405162461bcd60e51b81526020600482015260436024820152600080516020615e3883398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610872565b60005b838110156114da5760008585838181106110e2576110e26156aa565b919091013560f81c91503690506000898985818110611103576111036156aa565b905060200281019061111591906157a4565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa158015611181573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a591906157ed565b63ffffffff1681146112415760405162461bcd60e51b81526020600482015260656024820152600080516020615e3883398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c401610872565b6000805b8281101561147f576000848483818110611261576112616156aa565b90506020020160208101906112769190614b11565b6001600160a01b0381166000908152609b602090815260408083208151808301909252805482526001810154949550929390929183019060ff1660028111156112c1576112c1614c3f565b60028111156112d2576112d2614c3f565b905250805190915060006112e58261234a565b905060016001600160c01b03821660ff8b161c8116146113695760405162461bcd60e51b815260206004820152604460248201819052600080516020615e38833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a401610872565b856001600160a01b0316846001600160a01b0316116114145760405162461bcd60e51b81526020600482015260676024820152600080516020615e3883398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c401610872565b5061147283838f8f8d908e600161142b9190615820565b9261143893929190615833565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061248792505050565b5090925050600101611245565b5060ff84166000818152609d6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a2505050508060010190506110c6565b50505050505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609b60209081526040918290208251808401909352805483526001810154909183019060ff16600281111561153d5761153d614c3f565b600281111561154e5761154e614c3f565b90525092915050565b60025460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa1580156115a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c8919061573a565b6115e45760405162461bcd60e51b81526004016108729061575c565b600019600381905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61162b612679565b609854829060ff908116908216106116ab5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610872565b6116b583836128f7565b505050565b609e81815481106116ca57600080fd5b6000918252602090912001546001600160a01b0316905081565b60a0546001600160a01b031633146117645760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f720000000000006064820152608401610872565b6116b58383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129a492505050565b6117ac612679565b6117b66000612e16565b565b6000606080828080836117eb7f000000000000000000000000000000000000000000000000000000000000000083612e68565b6118167f00000000000000000000000000000000000000000000000000000000000000006001612e68565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b60006118807f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a8787878787604051602001610fc29695949392919061585d565b9695505050505050565b6000610eaf8261234a565b60006118a96066546001600160a01b031690565b905090565b6003546000906001908116036118d65760405162461bcd60e51b815260040161087290615673565b8389146119595760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610872565b60006119653388612f13565b90506119c533828888808060200260200160405190810160405280939291908181526020016000905b828210156119ba576119ab604083028601368190038101906158e5565b8152602001906001019061198e565b505050505087613048565b6000611a0c33838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506131d5915050565b905060005b8b811015611bcd576000609960008f8f85818110611a3157611a316156aa565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110611a9e57611a9e6156aa565b602002602001015163ffffffff161115611bc457611b3f8e8e84818110611ac757611ac76156aa565b9050013560f81c60f81b60f81c84604001518481518110611aea57611aea6156aa565b60200260200101513386602001518681518110611b0957611b096156aa565b60200260200101518d8d88818110611b2357611b236156aa565b905060400201803603810190611b3991906158e5565b866136ec565b611bc4898984818110611b5457611b546156aa565b9050604002016020016020810190611b6c9190614b11565b8f8f8590866001611b7d9190615820565b92611b8a93929190615833565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129a492505050565b50600101611a11565b50505050505050505050505050565b600354600090600190811603611c045760405162461bcd60e51b815260040161087290615673565b6000611c103385612f13565b90506000611c5933838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506131d5915050565b51905060005b88811015611d4a5760008a8a83818110611c7b57611c7b6156aa565b919091013560f81c600081815260996020526040902054855191935063ffffffff169150849084908110611cb157611cb16156aa565b602002602001015163ffffffff161115611d415760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a401610872565b50600101611c5f565b50505050505050505050565b6060600082516001600160401b03811115611d7357611d736149b5565b604051908082528060200260200182016040528015611d9c578160200160208202803683370190505b50905060005b8351811015611dfd57611dce85858381518110611dc157611dc16156aa565b60200260200101516139c0565b828281518110611de057611de06156aa565b63ffffffff90921660209283029190910190910152600101611da2565b509392505050565b600354600190600290811603611e2d5760405162461bcd60e51b815260040161087290615673565b6116b53384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129a492505050565b611e75612679565b6116b5838383613af2565b600254610100900460ff1615808015611ea05750600254600160ff909116105b80611eba5750303b158015611eba575060025460ff166001145b611f1d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610872565b6002805460ff191660011790558015611f40576002805461ff0019166101001790555b82518451148015611f52575081518351145b611fbc5760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b6064820152608401610872565b611fc589612e16565b611fcf8686613d09565b611fd8886126d8565b611fe187612741565b609e80546001818101835560008381527fcfe2a20ff701a1f3e14f63bd70d6c6bc6fba8172ec6d5a505cdab3927c0a9de692830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b8451811015612128576121208582815181106120df576120df6156aa565b60200260200101518583815181106120f9576120f96156aa565b6020026020010151858481518110612113576121136156aa565b6020026020010151613af2565b6001016120c1565b50801561216f576002805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b612182612679565b6001600160a01b0381166121e75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610872565b610ce481612e16565b60028054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612241573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226591906156d3565b6001600160a01b0316336001600160a01b0316146122955760405162461bcd60e51b8152600401610872906156f0565b6003541981196003541916146123135760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610872565b600381905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610c2b565b6000818152609a60205260408120548082036123695750600092915050565b6000838152609a60205260409020612382600183615901565b81548110612392576123926156aa565b600091825260209091200154600160401b90046001600160c01b03169392505050565b50919050565b60606000806123c984613df9565b61ffff166001600160401b038111156123e4576123e46149b5565b6040519080825280601f01601f19166020018201604052801561240e576020820181803683370190505b5090506000805b825182108015612426575061010081105b1561247d576001811b93508584161561246d578060f81b83838151811061244f5761244f6156aa565b60200101906001600160f81b031916908160001a9053508160010191505b61247681615914565b9050612415565b5090949350505050565b60018260200151600281111561249f5761249f614c3f565b146124a957505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe906124fe9088908690889060040161592d565b6020604051808303816000875af115801561251d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612541919061595d565b90506001600160c01b0381161561256d5761256d85612568836001600160c01b03166123bb565b6129a4565b5050505050565b6001600160a01b0381166126025760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610872565b600254604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600280546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b33612682611895565b6001600160a01b0316146117b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610872565b609f54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609f80546001600160a01b0319166001600160a01b0392909216919091179055565b60a054604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a160a080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610eaf6127b7613e24565b8360405161190160f01b8152600281019290925260228201526042902090565b604080518082019091526000808252602082015260008080612807600080516020615e788339815191528661599c565b90505b61281381613f4f565b9093509150600080516020615e78833981519152828309830361284c576040805180820190915290815260208101919091529392505050565b600080516020615e7883398151915260018208905061280a565b60008061287284613fd1565b9050808360ff166001901b116128f05760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610872565b9392505050565b60ff8216600081815260996020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b6001600160a01b0382166000908152609b60205260409020805460018083015460ff1660028111156129d8576129d8614c3f565b14612a575760405162461bcd60e51b815260206004820152604360248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a401610872565b609854600090612a6b90859060ff16612866565b90506000612a788361234a565b90506001600160c01b038216612af65760405162461bcd60e51b815260206004820152603b60248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206269746d61702063616e6e6f74206265203000000000006064820152608401610872565b612b0d6001600160c01b0383811690831681161490565b612ba55760405162461bcd60e51b815260206004820152605960248201527f5265676973747279436f6f7264696e61746f722e5f646572656769737465724f60448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a401610872565b6001600160c01b0382811619821616612bbe8482614159565b6001600160c01b038116612c8d5760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b158015612c3e57600080fd5b505af1158015612c52573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe590612cdb908a908a906004016159b0565b600060405180830381600087803b158015612cf557600080fd5b505af1158015612d09573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612d5b9087908a906004016159d4565b600060405180830381600087803b158015612d7557600080fd5b505af1158015612d89573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd9150612ddb9087908a906004016159d4565b600060405180830381600087803b158015612df557600080fd5b505af1158015612e09573d6000803e3d6000fd5b5050505050505050505050565b606680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606060ff8314612e8257612e7b8361431a565b9050610eaf565b818054612e8e906159ed565b80601f0160208091040260200160405190810160405280929190818152602001828054612eba906159ed565b8015612f075780601f10612edc57610100808354040283529160200191612f07565b820191906000526020600020905b815481529060010190602001808311612eea57829003601f168201915b50505050509050610eaf565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015612f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fa29190615a21565b90506000819003610eaf577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce588484612fe787610f63565b6040518463ffffffff1660e01b815260040161300593929190615a3a565b6020604051808303816000875af1158015613024573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f09190615a21565b6020808201516000908152609c909152604090205460ff16156130ee5760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a401610872565b42816040015110156131835760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a401610872565b602080820180516000908152609c909252604091829020805460ff19166001179055609f54905191830151610952926001600160a01b03909216916131ce9188918891889190611840565b8351614359565b6131f960405180606001604052806060815260200160608152602001606081525090565b600061324186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060985460ff1691506128669050565b9050600061324e8861234a565b90506001600160c01b0382166132cc5760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f742062652030000000000000006064820152608401610872565b8082166001600160c01b0316156133825760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c401610872565b6001600160c01b038181169083161761339b8982614159565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa876040516133cb91906156c0565b60405180910390a260016001600160a01b038b166000908152609b602052604090206001015460ff16600281111561340557613405614c3f565b1461351e576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609b90925293902082518155925183820180549394939192909160ff19169083600281111561346057613460614c3f565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d906134b5908d908990600401615aaa565b600060405180830381600087803b1580156134cf57600080fd5b505af11580156134e3573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb279529061356e908d908c908c90600401615b1e565b600060405180830381600087803b15801561358857600080fd5b505af115801561359c573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169250632550477791506135f2908d908d908d908d90600401615b43565b6000604051808303816000875af1158015613611573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526136399190810190615bd3565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d90613696908c908c908c90600401615c36565b6000604051808303816000875af11580156136b5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526136dd9190810190615c50565b84525050509695505050505050565b6020808301516001600160a01b038082166000818152609b90945260409093205491929087160361376b5760405162461bcd60e51b81526020600482015260356024820152600080516020615e5883398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b6064820152608401610872565b8760ff16846000015160ff16146137e85760405162461bcd60e51b81526020600482015260476024820152600080516020615e5883398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a401610872565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613859573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061387d9190615ce9565b90506138898185614513565b6001600160601b0316866001600160601b03161161391c5760405162461bcd60e51b81526020600482015260566024820152600080516020615e5883398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a401610872565b6139268885614537565b6001600160601b0316816001600160601b03161061216f5760405162461bcd60e51b815260206004820152605c6024820152600080516020615e5883398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a401610872565b6000818152609a6020526040812054815b81811015613a485760016139e58284615901565b6139ef9190615901565b92508463ffffffff16609a60008681526020019081526020016000208463ffffffff1681548110613a2257613a226156aa565b60009182526020909120015463ffffffff1611613a40575050610eaf565b6001016139d1565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c401610872565b60985460ff1660c08110613b665760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b6064820152608401610872565b613b71816001615d06565b6098805460ff191660ff9290921691909117905580613b9081866128f7565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a7790613be390849088908890600401615d1f565b600060405180830381600087803b158015613bfd57600080fd5b505af1158015613c11573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613c7957600080fd5b505af1158015613c8d573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015613cf557600080fd5b505af115801561216f573d6000803e3d6000fd5b6002546201000090046001600160a01b0316158015613d3057506001600160a01b03821615155b613db25760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610872565b600381905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2613df582612574565b5050565b6000805b8215610eaf57613e0e600184615901565b9092169180613e1c81615d9b565b915050613dfd565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015613e7d57507f000000000000000000000000000000000000000000000000000000000000000046145b15613ea757507f000000000000000000000000000000000000000000000000000000000000000090565b6118a9604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60008080600080516020615e788339815191526003600080516020615e7883398151915286600080516020615e78833981519152888909090890506000613fc5827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615e78833981519152614551565b91959194509092505050565b60006101008251111561405a5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610872565b815160000361406b57506000919050565b60008083600081518110614081576140816156aa565b0160200151600160f89190911c81901b92505b8451811015614150578481815181106140af576140af6156aa565b0160200151600160f89190911c1b91508282116141445760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610872565b91811791600101614094565b50909392505050565b6000828152609a602052604081205490819003614201576000838152609a60209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b6000838152609a6020526040812061421a600184615901565b8154811061422a5761422a6156aa565b6000918252602090912001805490915063ffffffff43811691160361426c5780546001600160401b0316600160401b6001600160c01b03851602178155610952565b805463ffffffff438116600160201b81810267ffffffff00000000199094169390931784556000878152609a6020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b60606000614327836145fa565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b0383163b1561447357604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e9061439990869086906004016159d4565b602060405180830381865afa1580156143b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143da9190615dbc565b6001600160e01b031916146116b55760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610872565b826001600160a01b03166144878383614622565b6001600160a01b0316146116b55760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610872565b60208101516000906127109061452d9061ffff1685615de6565b6128f09190615e11565b60408101516000906127109061452d9061ffff1685615de6565b60008061455c614891565b6145646148af565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082806145a157fe5b50826145ef5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610872565b505195945050505050565b600060ff8216601f811115610eaf57604051632cd44ac360e21b815260040160405180910390fd5b6000806000614631858561463e565b91509150611dfd81614683565b60008082516041036146745760208301516040840151606085015160001a614668878285856147cd565b9450945050505061467c565b506000905060025b9250929050565b600081600481111561469757614697614c3f565b0361469f5750565b60018160048111156146b3576146b3614c3f565b036147005760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610872565b600281600481111561471457614714614c3f565b036147615760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610872565b600381600481111561477557614775614c3f565b03610ce45760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610872565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156148045750600090506003614888565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614858573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661488157600060019250925050614888565b9150600090505b94509492505050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f8401126148df57600080fd5b5081356001600160401b038111156148f657600080fd5b6020830191508360208260051b850101111561467c57600080fd5b6000806020838503121561492457600080fd5b82356001600160401b0381111561493a57600080fd5b614946858286016148cd565b90969095509350505050565b60006020828403121561496457600080fd5b5035919050565b63ffffffff81168114610ce457600080fd5b60008060006060848603121561499257600080fd5b8335925060208401356149a48161496b565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156149ed576149ed6149b5565b60405290565b604080519081016001600160401b03811182821017156149ed576149ed6149b5565b604051601f8201601f191681016001600160401b0381118282101715614a3d57614a3d6149b5565b604052919050565b60006001600160401b03831115614a5e57614a5e6149b5565b614a71601f8401601f1916602001614a15565b9050828152838383011115614a8557600080fd5b828260208301376000602084830101529392505050565b600060208284031215614aae57600080fd5b81356001600160401b03811115614ac457600080fd5b8201601f81018413614ad557600080fd5b614ae484823560208401614a45565b949350505050565b6001600160a01b0381168114610ce457600080fd5b8035614b0c81614aec565b919050565b600060208284031215614b2357600080fd5b81356128f081614aec565b60008060408385031215614b4157600080fd5b50508035926020909101359150565b803560ff81168114614b0c57600080fd5b600060208284031215614b7357600080fd5b6128f082614b50565b815181526020808301519082015260408101610eaf565b60008083601f840112614ba557600080fd5b5081356001600160401b03811115614bbc57600080fd5b60208301915083602082850101111561467c57600080fd5b60008060008060408587031215614bea57600080fd5b84356001600160401b0380821115614c0157600080fd5b614c0d888389016148cd565b90965094506020870135915080821115614c2657600080fd5b50614c3387828801614b93565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614c7357634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614c9290840182614c55565b5092915050565b803561ffff81168114614b0c57600080fd5b600060608284031215614cbd57600080fd5b614cc56149cb565b90508135614cd28161496b565b8152614ce060208301614c99565b6020820152614cf160408301614c99565b604082015292915050565b60008060808385031215614d0f57600080fd5b614d1883614b50565b9150614d278460208501614cab565b90509250929050565b600080600060408486031215614d4557600080fd5b8335614d5081614aec565b925060208401356001600160401b03811115614d6b57600080fd5b614d7786828701614b93565b9497909650939450505050565b6000815180845260005b81811015614daa57602081850181015186830182015201614d8e565b506000602082860101526020601f19601f83011685010191505092915050565b60ff60f81b881681526000602060e06020840152614deb60e084018a614d84565b8381036040850152614dfd818a614d84565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015614e5157835183529284019291840191600101614e35565b50909c9b505050505050505050505050565b60006001600160401b03821115614e7c57614e7c6149b5565b5060051b60200190565b600060408284031215614e9857600080fd5b614ea06149f3565b9050614eab82614b50565b81526020820135614ebb81614aec565b602082015292915050565b600080600080600060a08688031215614ede57600080fd5b8535614ee981614aec565b945060208681013594506040808801356001600160401b03811115614f0d57600080fd5b8801601f81018a13614f1e57600080fd5b8035614f31614f2c82614e63565b614a15565b8082825260208201915060208360061b85010192508c831115614f5357600080fd5b6020840193505b82841015614f7b57614f6c8d85614e86565b82529284019290850190614f5a565b999c989b5098996060810135995060800135979650505050505050565b600061010082840312156123b557600080fd5b60008083601f840112614fbd57600080fd5b5081356001600160401b03811115614fd457600080fd5b6020830191508360208260061b850101111561467c57600080fd5b60006060828403121561500157600080fd5b6150096149cb565b905081356001600160401b0381111561502157600080fd5b8201601f8101841361503257600080fd5b61504184823560208401614a45565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c03121561507d57600080fd5b89356001600160401b038082111561509457600080fd5b6150a08d838e01614b93565b909b50995060208c01359150808211156150b957600080fd5b6150c58d838e01614b93565b90995097508791506150da8d60408e01614f98565b96506101408c01359150808211156150f157600080fd5b6150fd8d838e01614fab565b90965094506101608c013591508082111561511757600080fd5b6151238d838e01614fef565b93506101808c013591508082111561513a57600080fd5b506151478c828d01614fef565b9150509295985092959850929598565b600080600080600080610160878903121561517157600080fd5b86356001600160401b038082111561518857600080fd5b6151948a838b01614b93565b909850965060208901359150808211156151ad57600080fd5b6151b98a838b01614b93565b90965094508491506151ce8a60408b01614f98565b93506101408901359150808211156151e557600080fd5b506151f289828a01614fef565b9150509295509295509295565b6000806040838503121561521257600080fd5b823561521d8161496b565b91506020838101356001600160401b0381111561523957600080fd5b8401601f8101861361524a57600080fd5b8035615258614f2c82614e63565b81815260059190911b8201830190838101908883111561527757600080fd5b928401925b828410156152955783358252928401929084019061527c565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156152e257835163ffffffff16835292840192918401916001016152c0565b50909695505050505050565b6000806020838503121561530157600080fd5b82356001600160401b0381111561531757600080fd5b61494685828601614b93565b6001600160601b0381168114610ce457600080fd5b600082601f83011261534957600080fd5b81356020615359614f2c83614e63565b82815260069290921b8401810191818101908684111561537857600080fd5b8286015b848110156153c957604081890312156153955760008081fd5b61539d6149f3565b81356153a881614aec565b8152818501356153b781615323565b8186015283529183019160400161537c565b509695505050505050565b600080600060a084860312156153e957600080fd5b6153f38585614cab565b9250606084013561540381615323565b915060808401356001600160401b0381111561541e57600080fd5b61542a86828701615338565b9150509250925092565b600082601f83011261544557600080fd5b81356020615455614f2c83614e63565b80838252602082019150606060206060860288010194508785111561547957600080fd5b602087015b8581101561549d576154908982614cab565b845292840192810161547e565b5090979650505050505050565b600082601f8301126154bb57600080fd5b813560206154cb614f2c83614e63565b8083825260208201915060208460051b8701019350868411156154ed57600080fd5b602086015b848110156153c957803561550581615323565b83529183019183016154f2565b600082601f83011261552357600080fd5b81356020615533614f2c83614e63565b82815260059290921b8401810191818101908684111561555257600080fd5b8286015b848110156153c95780356001600160401b038111156155755760008081fd5b6155838986838b0101615338565b845250918301918301615556565b600080600080600080600080610100898b0312156155ae57600080fd5b6155b789614b01565b97506155c560208a01614b01565b96506155d360408a01614b01565b95506155e160608a01614b01565b94506080890135935060a08901356001600160401b038082111561560457600080fd5b6156108c838d01615434565b945060c08b013591508082111561562657600080fd5b6156328c838d016154aa565b935060e08b013591508082111561564857600080fd5b506156558b828c01615512565b9150509295985092959890939650565b60208101610eaf8284614c55565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6020815260006128f06020830184614d84565b6000602082840312156156e557600080fd5b81516128f081614aec565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561574c57600080fd5b815180151581146128f057600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000808335601e198436030181126157bb57600080fd5b8301803591506001600160401b038211156157d557600080fd5b6020019150600581901b360382131561467c57600080fd5b6000602082840312156157ff57600080fd5b81516128f08161496b565b634e487b7160e01b600052601160045260246000fd5b80820180821115610eaf57610eaf61580a565b6000808585111561584357600080fd5b8386111561585057600080fd5b5050820193919092039150565b600060c08201888352602060018060a01b03808a166020860152604089604087015260c0606087015283895180865260e08801915060208b01955060005b818110156158c5578651805160ff168452860151851686840152958501959183019160010161589b565b505060808701989098525050505060a09091019190915250949350505050565b6000604082840312156158f757600080fd5b6128f08383614e86565b81810381811115610eaf57610eaf61580a565b6000600182016159265761592661580a565b5060010190565b60018060a01b03841681528260208201526060604082015260006159546060830184614d84565b95945050505050565b60006020828403121561596f57600080fd5b81516001600160c01b03811681146128f057600080fd5b634e487b7160e01b600052601260045260246000fd5b6000826159ab576159ab615986565b500690565b6001600160a01b0383168152604060208201819052600090614ae490830184614d84565b828152604060208201526000614ae46040830184614d84565b600181811c90821680615a0157607f821691505b6020821081036123b557634e487b7160e01b600052602260045260246000fd5b600060208284031215615a3357600080fd5b5051919050565b6001600160a01b03841681526101608101615a62602083018580358252602090810135910152565b615a7c606083016040860180358252602090810135910152565b60406080850160a0840137604060c0850160e084013782516101208301526020830151610140830152614ae4565b60018060a01b0383168152604060208201526000825160606040840152615ad460a0840182614d84565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b03841681526040602082018190526000906159549083018486615af5565b60018060a01b0385168152836020820152606060408201526000611880606083018486615af5565b600082601f830112615b7c57600080fd5b81516020615b8c614f2c83614e63565b8083825260208201915060208460051b870101935086841115615bae57600080fd5b602086015b848110156153c9578051615bc681615323565b8352918301918301615bb3565b60008060408385031215615be657600080fd5b82516001600160401b0380821115615bfd57600080fd5b615c0986838701615b6b565b93506020850151915080821115615c1f57600080fd5b50615c2c85828601615b6b565b9150509250929050565b838152604060208201526000615954604083018486615af5565b60006020808385031215615c6357600080fd5b82516001600160401b03811115615c7957600080fd5b8301601f81018513615c8a57600080fd5b8051615c98614f2c82614e63565b81815260059190911b82018301908381019087831115615cb757600080fd5b928401925b82841015615cde578351615ccf8161496b565b82529284019290840190615cbc565b979650505050505050565b600060208284031215615cfb57600080fd5b81516128f081615323565b60ff8181168382160190811115610eaf57610eaf61580a565b60006060820160ff8616835260206001600160601b03808716602086015260406060604087015283875180865260808801915060208901955060005b81811015615d8b57865180516001600160a01b031684528601518516868401529585019591830191600101615d5b565b50909a9950505050505050505050565b600061ffff808316818103615db257615db261580a565b6001019392505050565b600060208284031215615dce57600080fd5b81516001600160e01b0319811681146128f057600080fd5b6001600160601b03818116838216028082169190828114615e0957615e0961580a565b505092915050565b60006001600160601b0380841680615e2b57615e2b615986565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220183ea0eae69e0dec3f2d404dcb8ad82ffce5c43e1478ae9d27c1f1ba9da29fd664736f6c63430008180033000000000000000000000000b73a87e8f7f9129816d40940ca19dfa396944c71000000000000000000000000f139a704063f85c91089face6eeaa13a78f46d1b000000000000000000000000cd249106362a33cea6eb7f3372986c4e7514c419000000000000000000000000557a3f35515b524db03cfd063904818aa994511b