0 txs
2.09m calls
constructor
constructor()
functions
chainId
viewfunction chainId() view returns (uint16)
getEmaPrice
viewfunction getEmaPrice(bytes32 id) view returns (tuple price)
getEmaPriceNoOlderThan
viewfunction getEmaPriceNoOlderThan(bytes32 id, uint256 age) view returns (tuple price)
getEmaPriceUnsafe
viewfunction getEmaPriceUnsafe(bytes32 id) view returns (tuple price)
getPrice
viewfunction getPrice(bytes32 id) view returns (tuple price)
getPriceNoOlderThan
viewfunction getPriceNoOlderThan(bytes32 id, uint256 age) view returns (tuple price)
getPriceUnsafe
viewfunction getPriceUnsafe(bytes32 id) view returns (tuple price)
getUpdateFee
viewfunction getUpdateFee(bytes[] updateData) view returns (uint256 feeAmount)
getUpdateFee
viewfunction getUpdateFee(uint256 updateDataSize) view returns (uint256 feeAmount)
getValidTimePeriod
viewfunction getValidTimePeriod() view returns (uint256)
governanceDataSource
viewfunction governanceDataSource() view returns (tuple)
governanceDataSourceIndex
viewfunction governanceDataSourceIndex() view returns (uint32)
hashDataSource
purefunction hashDataSource(tuple ds) pure returns (bytes32)
isValidDataSource
viewfunction isValidDataSource(uint16 dataSourceChainId, bytes32 dataSourceEmitterAddress) view returns (bool)
isValidGovernanceDataSource
viewfunction isValidGovernanceDataSource(uint16 governanceChainId, bytes32 governanceEmitterAddress) view returns (bool)
lastExecutedGovernanceSequence
viewfunction lastExecutedGovernanceSequence() view returns (uint64)
latestPriceInfoPublishTime
viewfunction latestPriceInfoPublishTime(bytes32 priceId) view returns (uint64)
owner
viewfunction owner() view returns (address)
parseAuthorizeGovernanceDataSourceTransferPayload
purefunction parseAuthorizeGovernanceDataSourceTransferPayload(bytes encodedPayload) pure returns (tuple sgds)
parseGovernanceInstruction
purefunction parseGovernanceInstruction(bytes encodedInstruction) pure returns (tuple gi)
parseRequestGovernanceDataSourceTransferPayload
purefunction parseRequestGovernanceDataSourceTransferPayload(bytes encodedPayload) pure returns (tuple sgdsClaim)
parseSetDataSourcesPayload
purefunction parseSetDataSourcesPayload(bytes encodedPayload) pure returns (tuple sds)
parseSetFeePayload
purefunction parseSetFeePayload(bytes encodedPayload) pure returns (tuple sf)
parseSetValidPeriodPayload
purefunction parseSetValidPeriodPayload(bytes encodedPayload) pure returns (tuple svp)
parseSetWormholeAddressPayload
purefunction parseSetWormholeAddressPayload(bytes encodedPayload) pure returns (tuple sw)
parseUpgradeContractPayload
purefunction parseUpgradeContractPayload(bytes encodedPayload) pure returns (tuple uc)
priceFeedExists
viewfunction priceFeedExists(bytes32 id) view returns (bool)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
pythUpgradableMagic
purefunction pythUpgradableMagic() pure returns (uint32)
queryPriceFeed
viewfunction queryPriceFeed(bytes32 id) view returns (tuple priceFeed)
singleUpdateFeeInWei
viewfunction singleUpdateFeeInWei() view returns (uint256)
validDataSources
viewfunction validDataSources() view returns (tuple[])
validTimePeriodSeconds
viewfunction validTimePeriodSeconds() view returns (uint256)
version
purefunction version() pure returns (string)
wormhole
viewfunction wormhole() view returns (address)
configureClaimableGas
nonpayablefunction configureClaimableGas()
executeGovernanceInstruction
nonpayablefunction executeGovernanceInstruction(bytes encodedVM)
initialize
nonpayablefunction initialize(address wormhole, uint16[] dataSourceEmitterChainIds, bytes32[] dataSourceEmitterAddresses, uint16 governanceEmitterChainId, bytes32 governanceEmitterAddress, uint64 governanceInitialSequence, uint256 validTimePeriodSeconds, uint256 singleUpdateFeeInWei)
parsePriceFeedUpdates
payablefunction parsePriceFeedUpdates(bytes[] updateData, bytes32[] priceIds, uint64 minPublishTime, uint64 maxPublishTime) payable returns (tuple[] priceFeeds)
parsePriceFeedUpdatesUnique
payablefunction parsePriceFeedUpdatesUnique(bytes[] updateData, bytes32[] priceIds, uint64 minPublishTime, uint64 maxPublishTime) payable returns (tuple[] priceFeeds)
renounceOwnership
nonpayablefunction renounceOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updatePriceFeeds
payablefunction updatePriceFeeds(bytes[] updateData) payable
updatePriceFeedsIfNecessary
payablefunction updatePriceFeedsIfNecessary(bytes[] updateData, bytes32[] priceIds, uint64[] publishTimes) payable
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
BatchPriceFeedUpdate
event BatchPriceFeedUpdate(uint16 chainId, uint64 sequenceNumber)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
ContractUpgraded
event ContractUpgraded(address oldImplementation, address newImplementation)
DataSourcesSet
event DataSourcesSet((uint16 chainId, bytes32 emitterAddress)[] oldDataSources, (uint16 chainId, bytes32 emitterAddress)[] newDataSources)
FeeSet
event FeeSet(uint256 oldFee, uint256 newFee)
GovernanceDataSourceSet
event GovernanceDataSourceSet((uint16 chainId, bytes32 emitterAddress) oldDataSource, (uint16 chainId, bytes32 emitterAddress) newDataSource, uint64 initialSequence)
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PriceFeedUpdate
event PriceFeedUpdate(bytes32 indexed id, uint64 publishTime, int64 price, uint64 conf)
Upgraded
event Upgraded(address indexed implementation)
ValidPeriodSet
event ValidPeriodSet(uint256 oldValidPeriod, uint256 newValidPeriod)
WormholeAddressSet
event WormholeAddressSet(address oldWormholeAddress, address newWormholeAddress)
errors
InsufficientFee
error InsufficientFee()
InvalidArgument
error InvalidArgument()
InvalidGovernanceDataSource
error InvalidGovernanceDataSource()
InvalidGovernanceMessage
error InvalidGovernanceMessage()
InvalidGovernanceTarget
error InvalidGovernanceTarget()
InvalidUpdateData
error InvalidUpdateData()
InvalidUpdateDataSource
error InvalidUpdateDataSource()
InvalidWormholeAddressToSet
error InvalidWormholeAddressToSet()
InvalidWormholeVaa
error InvalidWormholeVaa()
NoFreshUpdate
error NoFreshUpdate()
OldGovernanceMessage
error OldGovernanceMessage()
PriceFeedNotFound
error PriceFeedNotFound()
PriceFeedNotFoundWithinRange
error PriceFeedNotFoundWithinRange()
StalePrice
error StalePrice()
creation bytecode
0x60a06040523060601b6080523480156200001857600080fd5b50600054610100900460ff16158080156200003a5750600054600160ff909116105b806200006a575062000057306200014460201b62001dfa1760201c565b1580156200006a575060005460ff166001145b620000d25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000f6576000805461ff0019166101001790555b80156200013d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5062000153565b6001600160a01b03163b151590565b60805160601c6156a36200018e60003960008181610ab201528181610af201528181610d2801528181610d680152610de401526156a36000f3fe60806040526004361061027d5760003560e01c80638881016f1161014f578063b5ec0261116100c1578063d82d58a51161007a578063d82d58a514610839578063e17efd4814610872578063e18910a314610892578063e3795cc1146108a7578063ef9e5e28146108be578063f2fde38b146108d157600080fd5b8063b5ec02611461076c578063b6ed701e146107a4578063b9256d28146107c4578063caaf43f1146107d7578063cb718a9b14610804578063d47eed451461081957600080fd5b80639a8a0592116101135780639a8a0592146106cf578063a38d81c6146106f7578063a4ae35e014610719578063aac4129214610619578063accca7f914610739578063b5dcc9111461074c57600080fd5b80638881016f1461061957806389a5bb4d146106515780638da5cb5b146106715780639474f45b1461068f57806396834ad3146106af57600080fd5b80634f1ef286116101f35780636c72f51b116101ac5780636c72f51b14610524578063711a2e2814610550578063715018a6146105705780637b72bcae1461058557806384acd1bb146105ba57806387c5bd1b146105ec57600080fd5b80634f1ef2861461045d57806352d1902d1461047057806354fd4d5014610485578063586d3cf8146104b957806358c67635146104d75780636b7f53ca146104f757600080fd5b8063437209a711610245578063437209a71461036b5780634716e9c51461039b57806348b6404d146103bb5780634c469d8c146103da5780634d7a734e146104285780634e606c471461044857600080fd5b8063146faf771461028257806314dd317f146102a457806331d98b3f146102d85780633659cfe614610305578063426234e414610325575b600080fd5b34801561028e57600080fd5b506102a261029d36600461499c565b6108f1565b005b3480156102b057600080fd5b506102c46102bf366004614cc9565b610a33565b604051905181526020015b60405180910390f35b3480156102e457600080fd5b506102f86102f3366004614c0c565b610a8d565b6040516102cf91906152dc565b34801561031157600080fd5b506102a2610320366004614982565b610aa7565b34801561033157600080fd5b506040805180820182526000808252602091820152815180830190925260d05461ffff16825260d154908201526040516102cf9190615251565b34801561037757600080fd5b5061038b610386366004614eda565b610b8d565b60405190151581526020016102cf565b6103ae6103a9366004614b7b565b610be0565b6040516102cf91906150c2565b3480156103c757600080fd5b5060ce545b6040519081526020016102cf565b3480156103e657600080fd5b506104106103f5366004614c0c565b600090815260d560205260409020546001600160401b031690565b6040516001600160401b0390911681526020016102cf565b34801561043457600080fd5b506102c4610443366004614cc9565b610c29565b34801561045457600080fd5b506102a2610cc1565b6102a261046b366004614a5c565b610d1d565b34801561047c57600080fd5b506103cc610dd7565b34801561049157600080fd5b506040805180820182526005815264312e342e3360d81b602082015290516102cf9190615140565b3480156104c557600080fd5b5060d2546001600160401b0316610410565b3480156104e357600080fd5b5061038b6104f2366004614eda565b610e8a565b34801561050357600080fd5b50610517610512366004614cc9565b610ead565b6040516102cf919061526c565b34801561053057600080fd5b5060d45463ffffffff165b60405163ffffffff90911681526020016102cf565b34801561055c57600080fd5b506102f861056b366004614c3c565b6110b1565b34801561057c57600080fd5b506102a26110f2565b34801561059157600080fd5b506105a56105a0366004614cc9565b611106565b604051905163ffffffff1681526020016102cf565b3480156105c657600080fd5b5060c9546001600160a01b03165b6040516001600160a01b0390911681526020016102cf565b3480156105f857600080fd5b5061060c610607366004614cc9565b611134565b6040516102cf9190615316565b34801561062557600080fd5b50610639610634366004614cc9565b6112b0565b60405190516001600160a01b031681526020016102cf565b34801561065d57600080fd5b506103cc61066c366004614cfb565b6112e1565b34801561067d57600080fd5b506033546001600160a01b03166105d4565b34801561069b57600080fd5b506102f86106aa366004614c0c565b611333565b3480156106bb57600080fd5b506102f86106ca366004614c0c565b6113b4565b3480156106db57600080fd5b506106e4611439565b60405161ffff90911681526020016102cf565b34801561070357600080fd5b5061070c6114c2565b6040516102cf919061508a565b34801561072557600080fd5b506102f8610734366004614c3c565b611535565b6103ae610747366004614b7b565b611546565b34801561075857600080fd5b506102f8610767366004614c0c565b611584565b34801561077857600080fd5b5061038b610787366004614c0c565b600090815260d560205260409020546001600160401b0316151590565b3480156107b057600080fd5b506102a26107bf366004614c5d565b611598565b6102a26107d2366004614ae6565b6118ac565b3480156107e357600080fd5b506107f76107f2366004614c0c565b6119a3565b6040516102cf91906152cd565b34801561081057600080fd5b5060cf546103cc565b34801561082557600080fd5b506103cc610834366004614aa7565b611a71565b34801561084557600080fd5b50610865610854366004614cc9565b604080516020810190915290815290565b6040516102cf9190615236565b34801561087e57600080fd5b506103cc61088d366004614c0c565b611c0d565b34801561089e57600080fd5b506103cc611c2e565b3480156108b357600080fd5b506397a6f30461053b565b6102a26108cc366004614aa7565b611c39565b3480156108dd57600080fd5b506102a26108ec366004614982565b611d84565b600054610100900460ff16158080156109115750600054600160ff909116105b8061092b5750303b15801561092b575060005460ff166001145b6109935760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156109b6576000805461ff0019166101001790555b6109be611e09565b6109c6611e38565b6109d88b8b8b8b8b8b8b8b8b8b611e5f565b6109e06110f2565b8015610a26576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b6040805160208101909152600081526000610a4e8382612047565b6001600160401b03168252610a6460088261543f565b905080835114610a87576040516397363b3560e01b815260040160405180910390fd5b50919050565b610a95614658565b610aa182610734611c2e565b92915050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610af05760405162461bcd60e51b815260040161098a90615153565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b226120a4565b6001600160a01b031614610b485760405162461bcd60e51b815260040161098a9061519f565b610b51816120c0565b610b8a8160005b6040519080825280601f01601f191660200182016040528015610b82576020820181803683370190505b5060006120c8565b50565b6040805160f09390931b6001600160f01b0319166020808501919091526022808501939093528151808503909301835260429093018152815191830191909120600090815260cd90925290205460ff1690565b6060610c1e878787876040518060600160405280896001600160401b03168152602001886001600160401b0316815260200160001515815250612247565b979650505050505050565b604080516020810190915260008152600080610c458482612047565b9050610c5260088361543f565b91506000610c608584612047565b9050610c6d60088461543f565b9250610c836001600160401b038216600a61549a565b610c96906001600160401b038416615542565b845284518314610cb9576040516397363b3560e01b815260040160405180910390fd5b505050919050565b6002604360981b016001600160a01b0316634e606c476040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610d0357600080fd5b505af1158015610d17573d6000803e3d6000fd5b50505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610d665760405162461bcd60e51b815260040161098a90615153565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610d986120a4565b6001600160a01b031614610dbe5760405162461bcd60e51b815260040161098a9061519f565b610dc7826120c0565b610dd3828260016120c8565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e775760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161098a565b5060008051602061562783398151915290565b60d05460009061ffff8481169116148015610ea6575060d15482145b9392505050565b610ed9604080516080810190915280600081526020016000815260006020820152606060409091015290565b600080610ee684826126ec565b905063ffffffff8116635054474d14610f12576040516397363b3560e01b815260040160405180910390fd5b610f1d60048361543f565b91506000610f2b8584612749565b90508060ff166003811115610f5057634e487b7160e01b600052602160045260246000fd5b84906003811115610f7157634e487b7160e01b600052602160045260246000fd5b90816003811115610f9257634e487b7160e01b600052602160045260246000fd5b905250610fa060018461543f565b9250600184516003811115610fc557634e487b7160e01b600052602160045260246000fd5b14610fe3576040516363daeb7760e01b815260040160405180910390fd5b6000610fef8685612749565b90508060ff16600681111561101457634e487b7160e01b600052602160045260246000fd5b8560200190600681111561103857634e487b7160e01b600052602160045260246000fd5b9081600681111561105957634e487b7160e01b600052602160045260246000fd5b90525061106760018561543f565b935061107386856127a5565b61ffff16604086015261108760028561543f565b93506110a28485885161109a9190615561565b889190612802565b60608601525092949350505050565b6110b9614658565b6110c283611333565b9050816110d342836060015161290f565b1115610aa157604051630cd5fa0760e11b815260040160405180910390fd5b6110fa612934565b611104600061298e565b565b604080516020810190915260008152600061112183826126ec565b63ffffffff168252610a6460048261543f565b6040805160208101909152606081526000806111508482612749565b905061115d60018361543f565b91508060ff166001600160401b0381111561118857634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156111cd57816020015b60408051808201909152600080825260208201528152602001906001900390816111a65790505b50835260005b8160ff16811015611287576111e885846127a5565b845180518390811061120a57634e487b7160e01b600052603260045260246000fd5b602090810291909101015161ffff909116905261122860028461543f565b925061123485846129e0565b845180518390811061125657634e487b7160e01b600052603260045260246000fd5b60200260200101516020018181525050602083611273919061543f565b92508061127f816155a4565b9150506111d3565b50818451146112a9576040516397363b3560e01b815260040160405180910390fd5b5050919050565b60408051602081019091526000815260006112cb8382612a3e565b6001600160a01b03168252610a6460148261543f565b60008160000151826020015160405160200161131692919060f09290921b6001600160f01b0319168252600282015260220190565b604051602081830303815290604052805190602001209050919050565b61133b614658565b600082815260d5602090815260409182902080546001600160401b0380821660608701819052600160401b92839004600390810b810b900b958701959095526001830154600781810b810b900b875291909104169184019190915290610a8757604051630295d7cd60e31b815260040160405180910390fd5b6113bc614658565b600082815260d5602090815260409182902080546001600160401b0380821660608701819052600160401b8304600390810b810b900b95870195909552600160601b8204600790810b810b900b8652600160a01b909104169184019190915290610a8757604051630295d7cd60e31b815260040160405180910390fd5b600061144d60c9546001600160a01b031690565b6001600160a01b0316639a8a05926040518163ffffffff1660e01b815260040160206040518083038186803b15801561148557600080fd5b505afa158015611499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114bd9190614ebe565b905090565b606060c9600301805480602002602001604051908101604052809291908181526020016000905b8282101561152c5760008481526020908190206040805180820190915260028502909101805461ffff1682526001908101548284015290835290920191016114e9565b50505050905090565b61153d614658565b6110c2836113b4565b6060610c1e878787876040518060600160405280896001600160401b03168152602001886001600160401b0316815260200160011515815250612247565b61158c614658565b610aa18261056b611c2e565b60006115d983838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612aa392505050565b905060006115ea8260e00151610ead565b90506115f4611439565b61ffff16816040015161ffff16141580156116165750604081015161ffff1615155b15611634576040516363daeb7760e01b815260040160405180910390fd5b60008160200151600681111561165a57634e487b7160e01b600052602160045260246000fd5b14156116a057604081015161ffff16611686576040516363daeb7760e01b815260040160405180910390fd5b61169b61169682606001516112b0565b612be6565b610d17565b6001816020015160068111156116c657634e487b7160e01b600052602160045260246000fd5b14156116ed5761169b6116e88260600151604080516020810190915290815290565b612bef565b60028160200151600681111561171357634e487b7160e01b600052602160045260246000fd5b141561172e5761169b6117298260600151611134565b612ecb565b60038160200151600681111561175457634e487b7160e01b600052602160045260246000fd5b141561176f5761169b61176a8260600151610c29565b613074565b60048160200151600681111561179557634e487b7160e01b600052602160045260246000fd5b14156117b05761169b6117ab8260600151610a33565b6130c6565b6005816020015160068111156117d657634e487b7160e01b600052602160045260246000fd5b14156117f5576040516397363b3560e01b815260040160405180910390fd5b60068160200151600681111561181b57634e487b7160e01b600052602160045260246000fd5b141561189357604081015161ffff16611847576040516363daeb7760e01b815260040160405180910390fd5b61169b61185782606001516112b0565b85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061310392505050565b6040516397363b3560e01b815260040160405180910390fd5b8281146118cc5760405163a9cb9e0d60e01b815260040160405180910390fd5b60005b83811015611981578282828181106118f757634e487b7160e01b600052603260045260246000fd5b905060200201602081019061190c9190614f1f565b6001600160401b031661195a86868481811061193857634e487b7160e01b600052603260045260246000fd5b90506020020135600090815260d560205260409020546001600160401b031690565b6001600160401b03161015611979576119738787611c39565b5061199b565b6001016118cf565b50604051636f162bfd60e11b815260040160405180910390fd5b505050505050565b6119ab61467f565b60006119b683613337565b80519091506001600160401b03166119e157604051630295d7cd60e31b815260040160405180910390fd5b91815260408083015160208084018051600793840b840b905260608087015182516001600160401b039182169085015283880180518451600391820b820b9089015289519451948316948401949094526080890151878901805191880b90970b905260a089015186519083169501949094529251845190830b90920b919094015293519051931692019190915290565b600080805b83811015611bfb576004858583818110611aa057634e487b7160e01b600052603260045260246000fd5b9050602002810190611ab29190615331565b9050118015611b06575063504e4155611afe868684818110611ae457634e487b7160e01b600052603260045260246000fd5b9050602002810190611af69190615331565b503560e01c90565b63ffffffff16145b15611bdb57600080611b48878785818110611b3157634e487b7160e01b600052603260045260246000fd5b9050602002810190611b439190615331565b6133c9565b90925090506000818015611b6c57634e487b7160e01b600052602160045260246000fd5b14611b8a5760405163734fff6760e11b815260040160405180910390fd5b611bc5878785818110611bad57634e487b7160e01b600052603260045260246000fd5b9050602002810190611bbf9190615331565b84613490565b611bd29060ff168561543f565b93505050611be9565b611be660018361543f565b91505b80611bf3816155a4565b915050611a76565b50611c05816134c7565b949350505050565b600081611c1960ce5490565b611c249060ff615542565b610aa19190615542565b60006114bd60cf5490565b6000805b82811015611d56576004848483818110611c6757634e487b7160e01b600052603260045260246000fd5b9050602002810190611c799190615331565b9050118015611cb3575063504e4155611cab858584818110611ae457634e487b7160e01b600052603260045260246000fd5b63ffffffff16145b15611d0657611cf2848483818110611cdb57634e487b7160e01b600052603260045260246000fd5b9050602002810190611ced9190615331565b6134dc565b611cff9060ff168361543f565b9150611d4e565b611d40848483818110611d2957634e487b7160e01b600052603260045260246000fd5b9050602002810190611d3b9190615331565b6135bd565b611d4b60018361543f565b91505b600101611c3d565b506000611d62826134c7565b905080341015610d175760405162976f7560e21b815260040160405180910390fd5b611d8c612934565b6001600160a01b038116611df15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161098a565b610b8a8161298e565b6001600160a01b03163b151590565b600054610100900460ff16611e305760405162461bcd60e51b815260040161098a906151eb565b6111046135cf565b600054610100900460ff166111045760405162461bcd60e51b815260040161098a906151eb565b611e688a6135ff565b878614611e885760405163a9cb9e0d60e01b815260040160405180910390fd5b60005b88811015611ff257600060405180604001604052808c8c85818110611ec057634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611ed59190614ea2565b61ffff1681526020018a8a85818110611efe57634e487b7160e01b600052603260045260246000fd5b905060200201358152509050611f1c81600001518260200151610b8d565b15611f3a5760405163a9cb9e0d60e01b815260040160405180910390fd5b600160cd6000611f49846112e1565b81526020808201929092526040016000908120805460ff19169315159390931790925560cc8054600181018255925282517f47197230e1e4b29fc0bd84d7d78966c0925452aff72a2a121538b102457e9ebe6002909302928301805461ffff191661ffff90921691909117905591909101517f47197230e1e4b29fc0bd84d7d78966c0925452aff72a2a121538b102457e9ebf9091015580611fea816155a4565b915050611e8b565b506040805180820190915261ffff86168082526020820186905260d0805461ffff1916909117905560d185905561202884613621565b506120328260cf55565b61203b8160ce55565b50505050505050505050565b600061205482600861543f565b8351101561209b5760405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b604482015260640161098a565b50016008015190565b600080516020615627833981519152546001600160a01b031690565b610b8a612934565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612100576120fb83613644565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561213957600080fd5b505afa925050508015612169575060408051601f3d908101601f1916820190925261216691810190614c24565b60015b6121cc5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161098a565b600080516020615627833981519152811461223b5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161098a565b506120fb8383836136e0565b606060006122558787611a71565b9050803410156122775760405162976f7560e21b815260040160405180910390fd5b50826001600160401b0381111561229e57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156122d757816020015b6122c461467f565b8152602001906001900390816122bc5790505b50905060005b8581101561268557600487878381811061230757634e487b7160e01b600052603260045260246000fd5b90506020028101906123199190615331565b9050118015612353575063504e415561234b888884818110611ae457634e487b7160e01b600052603260045260246000fd5b63ffffffff16145b156125385760008061237e898985818110611b3157634e487b7160e01b600052603260045260246000fd5b909250905060008180156123a257634e487b7160e01b600052602160045260246000fd5b146123c05760405163734fff6760e11b815260040160405180910390fd5b506000803660006124028c8c888181106123ea57634e487b7160e01b600052603260045260246000fd5b90506020028101906123fc9190615331565b87613705565b93985091965094509250905060005b8360ff1681101561250d576124246146ac565b6000806124338887878c613847565b929b5090945092509050612447828461393b565b60006124548f8f85613a7d565b90508d81148061248e57508b818151811061247f57634e487b7160e01b600052603260045260246000fd5b60209081029190910101515115155b1561249c5750505050612505565b83518d516001600160401b03918216911681108015906124c957508d602001516001600160401b03168111155b80156124ed57508d6040015115806124ed57508d516001600160401b038085169116115b156124ff576124ff8d83868885613ace565b50505050505b600101612411565b5084811461252e5760405163734fff6760e11b815260040160405180910390fd5b505050505061267d565b6060600061257689898581811061255f57634e487b7160e01b600052603260045260246000fd5b90506020028101906125719190615331565b613d0e565b60e00151915060009050808061258b84613df6565b92509250925060005b82811015612677576040848601015160209060006125b38d8d84613a7d565b90508b8114806125ed57508981815181106125de57634e487b7160e01b600052603260045260246000fd5b60209081029190910101515115155b156125fe575050509281019261266f565b600061260b898988613f25565b509050612618838261393b565b80518c516001600160401b039182169116811080159061264557508c602001516001600160401b03168111155b801561265357508c60400151155b15612665576126658c84868585613ace565b5050509483019450505b600101612594565b50505050505b6001016122dd565b5060005b838110156126e2578181815181106126b157634e487b7160e01b600052603260045260246000fd5b6020908102919091010151516126da576040516345805f5d60e01b815260040160405180910390fd5b600101612689565b5095945050505050565b60006126f982600461543f565b835110156127405760405162461bcd60e51b8152602060048201526014602482015273746f55696e7433325f6f75744f66426f756e647360601b604482015260640161098a565b50016004015190565b600061275682600161543f565b8351101561279c5760405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b604482015260640161098a565b50016001015190565b60006127b282600261543f565b835110156127f95760405162461bcd60e51b8152602060048201526014602482015273746f55696e7431365f6f75744f66426f756e647360601b604482015260640161098a565b50016002015190565b60608161281081601f61543f565b101561284f5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640161098a565b612859828461543f565b8451101561289d5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015260640161098a565b6060821580156128bc5760405191506000825260208201604052612906565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156128f55780518352602092830192016128dd565b5050858452601f01601f1916604052505b50949350505050565b60008183111561292a576129238284615561565b9050610aa1565b6129238383615561565b6033546001600160a01b031633146111045760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098a565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006129ed82602061543f565b83511015612a355760405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b604482015260640161098a565b50016020015190565b6000612a4b82601461543f565b83511015612a935760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b604482015260640161098a565b500160200151600160601b900490565b612aab6146e1565b600080612ac060c9546001600160a01b031690565b6001600160a01b031663c0fd8bde856040518263ffffffff1660e01b8152600401612aeb9190615140565b60006040518083038186803b158015612b0357600080fd5b505afa158015612b17573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b3f9190810190614d51565b509150915080612b6257604051632acbe91560e01b815260040160405180910390fd5b612b7482606001518360800151610e8a565b612b915760405163360f2d8760e01b815260040160405180910390fd5b60d2546001600160401b03166001600160401b03168260a001516001600160401b031611612bd2576040516388d1b84760e01b815260040160405180910390fd5b612bdf8260a00151613621565b5092915050565b610b8a81614016565b6000612c236040805180820182526000808252602091820152815180830190925260d05461ffff16825260d1549082015290565b9050600080612c3a60c9546001600160a01b031690565b845160405163607ec5ef60e11b81526001600160a01b03929092169163c0fd8bde91612c6891600401615140565b60006040518083038186803b158015612c8057600080fd5b505afa158015612c94573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612cbc9190810190614d51565b509150915080612cdf57604051632acbe91560e01b815260040160405180910390fd5b6000612cee8360e00151610ead565b9050612cf8611439565b61ffff16816040015161ffff1614158015612d1a5750604081015161ffff1615155b15612d38576040516363daeb7760e01b815260040160405180910390fd5b600581602001516006811115612d5e57634e487b7160e01b600052602160045260246000fd5b14612d7c576040516397363b3560e01b815260040160405180910390fd5b6000612d8b8260600151611106565b805190915063ffffffff16612da560d45463ffffffff1690565b63ffffffff1610612dc9576040516388d1b84760e01b815260040160405180910390fd5b805160d4805463ffffffff191663ffffffff90921691909117905560408051808201909152606085015161ffff1680825260808601516020830181905260d0805461ffff191690921790915560d155612e258560a00151613621565b7f6bce23ef3d34e51710fe4700b43ba5f1733a6215c883f384671a4ece3ea8aa2086612e796040805180820182526000808252602091820152815180830190925260d05461ffff16825260d1549082015290565b60d25460408051845161ffff90811682526020958601518683015284511691810191909152929091015160608301526001600160401b0316608082015260a0015b60405180910390a150505050505050565b6000612ed56114c2565b905060005b8151811015612f4d57600060c96004016000612f1c858581518110612f0f57634e487b7160e01b600052603260045260246000fd5b60200260200101516112e1565b81526020810191909152604001600020805460ff1916911515919091179055612f4660018261543f565b9050612eda565b50612f5a60cc600061473c565b60005b82515181101561302f578251805160cc919083908110612f8d57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015182546001808201855560009485528385208351600290930201805461ffff191661ffff90931692909217825591909201519181019190915584518051919260cd929091612ffe9186908110612f0f57634e487b7160e01b600052603260045260246000fd5b81526020810191909152604001600020805460ff191691151591909117905580613027816155a4565b915050612f5d565b507fd451e0fcb7c5b9e13de533604d158069dad159841c45f39f09d379bfc423080d8161305a6114c2565b60405161306892919061509d565b60405180910390a15050565b600061307f60ce5490565b825160ce5590507f74dbbbe280ef27b79a8a0c449d5ae2ba7a31849103241d0f98df70bbc9d03e37816130b160ce5490565b60408051928352602083019190915201613068565b60006130d160cf5490565b825160cf5590507fcdb88a22f82ddd76115ab7c66cf08eb1e40afe80c9b31017eb2cbdb1570b33ae816130b160cf5490565b600061311760c9546001600160a01b031690565b905061312683600001516135ff565b60008061313b60c9546001600160a01b031690565b6001600160a01b031663c0fd8bde856040518263ffffffff1660e01b81526004016131669190615140565b60006040518083038186803b15801561317e57600080fd5b505afa158015613192573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131ba9190810190614d51565b5091509150806131dd576040516397363b3560e01b815260040160405180910390fd5b6131ef82606001518360800151610e8a565b61320c576040516397363b3560e01b815260040160405180910390fd5b60d2546001600160401b03166001600160401b03168260a001516001600160401b03161461324d576040516309e9f6c160e11b815260040160405180910390fd5b600061325c8360e00151610ead565b905060068160200151600681111561328457634e487b7160e01b600052602160045260246000fd5b146132a2576040516309e9f6c160e11b815260040160405180910390fd5b60006132b182606001516112b0565b875181519192506001600160a01b039182169116146132e3576040516309e9f6c160e11b815260040160405180910390fd5b7fd495c4e5b386d59bccca38a2277b5d70a0f5e47d7b6587a45a6f5aca221a31258561331760c9546001600160a01b031690565b604080516001600160a01b03938416815292909116602083015201612eba565b61333f6146ac565b50600090815260d56020908152604091829020825160c08101845281546001600160401b038082168352600160401b808304600390810b810b900b95840195909552600160601b8204600790810b810b810b96840196909652600160a01b9091048116606083015260019092015480850b850b90940b60808201529190920490911660a082015290565b60046000833560e01c63504e415581146133f65760405163734fff6760e11b815260040160405180910390fd5b60018084019386013560f81c9081146134225760405163734fff6760e11b815260040160405180910390fd5b50508184016001013560f890811c9092016002818101939186010135901c60ff16801561345f57634e487b7160e01b600052602160045260246000fd5b600192909201919050818310156134895760405163734fff6760e11b815260040160405180910390fd5b9250929050565b60008382013560f01c6134a460028461543f565b92506134b461ffff82168461543f565b92508483013560f81c5b95945050505050565b60006134d260ce5490565b610aa19083615542565b60008060006134eb85856133c9565b9092509050600081801561350f57634e487b7160e01b600052602160045260246000fd5b1461352d5760405163734fff6760e11b815260040160405180910390fd5b60008036600061353e898988613705565b919a50929650909450909250905060005b8760ff16811015613590576135626146ac565b6000806135718787878b613847565b929a5090945092509050613585828461393b565b50505060010161354f565b508381146135b15760405163734fff6760e11b815260040160405180910390fd5b50505050505092915050565b610dd36135ca8383613d0e565b614114565b600054610100900460ff166135f65760405162461bcd60e51b815260040161098a906151eb565b6111043361298e565b60c980546001600160a01b0319166001600160a01b0392909216919091179055565b60d2805467ffffffffffffffff19166001600160401b0392909216919091179055565b6001600160a01b0381163b6136b15760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161098a565b60008051602061562783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6136e9836141bb565b6000825111806136f65750805b156120fb57610d1783836141fb565b6000808036816137198888888082036142e6565b600296509092509050813560f01c6060600061373f61373a86868b876142e6565b614310565b60e0015160048082015161ffff86169a909a01999193509150634155575663ffffffff8216146137825760405163734fff6760e11b815260040160405180910390fd5b8183016001015160009060ff1680156137ab57634e487b7160e01b600052602160045260246000fd5b600190930192905060008180156137d257634e487b7160e01b600052602160045260246000fd5b146137f05760405163734fff6760e11b815260040160405180910390fd5b602c84840101518451600160601b90910460601b995060209093019283111561382c5760405163734fff6760e11b815260040160405180910390fd5b5050600188019b969a505050509381013560f81c9550935050565b60006138516146ac565b600283019260009081903690829089013560f01c6138718a8a8a846142e6565b925092508061ffff1688019750600061388e8b8b8b8f88886143e4565b98509050806138b05760405163734fff6760e11b815260040160405180910390fd5b6000843560f81c80156138d357634e487b7160e01b600052602160045260246000fd5b905060008180156138f457634e487b7160e01b600052602160045260246000fd5b1415613912576139068585600161448c565b9199509750955061392b565b60405163734fff6760e11b815260040160405180910390fd5b5050505050945094509450949050565b600082815260d5602052604090205481516001600160401b0391821691168110156120fb57600083815260d560209081526040918290208451815486840151878601516060808a01516001600160401b039586166001600160601b03199095168517600160401b63ffffffff60039690960b959095168502176fffffffffffffffffffffffffffffffff60601b1916600160601b600794850b8089169190910267ffffffffffffffff60a01b191691909117600160a01b92881692830217885560808c01516001909801805460a08e01519990950b88166fffffffffffffffffffffffffffffffff1990951694909417979096169093029590951790558551918252938101919091529283019190915284917fd06a6b7f4918494b3719217d1802786c1f5112a6c1d88fe2cfec00b4584f6aec910160405180910390a2505050565b6000805b83811015611c055782858583818110613aaa57634e487b7160e01b600052603260045260246000fd5b905060200201351415613abc57611c05565b80613ac6816155a4565b915050613a81565b82858581518110613aef57634e487b7160e01b600052603260045260246000fd5b602002602001015160000181815250508160400151858581518110613b2457634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516000019060070b908160070b815250508160600151858581518110613b6557634e487b7160e01b600052603260045260246000fd5b602002602001015160200151602001906001600160401b031690816001600160401b0316815250508160200151858581518110613bb257634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516040019060030b908160030b8152505080858581518110613bef57634e487b7160e01b600052603260045260246000fd5b60200260200101516020015160600181815250508160800151858581518110613c2857634e487b7160e01b600052603260045260246000fd5b6020026020010151604001516000019060070b908160070b815250508160a00151858581518110613c6957634e487b7160e01b600052603260045260246000fd5b602002602001015160400151602001906001600160401b031690816001600160401b0316815250508160200151858581518110613cb657634e487b7160e01b600052603260045260246000fd5b6020026020010151604001516040019060030b908160030b8152505080858581518110613cf357634e487b7160e01b600052603260045260246000fd5b60200260200101516040015160600181815250505050505050565b613d166146e1565b6000613d2a60c9546001600160a01b031690565b6001600160a01b031663c0fd8bde85856040518363ffffffff1660e01b8152600401613d57929190615111565b60006040518083038186803b158015613d6f57600080fd5b505afa158015613d83573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613dab9190810190614d51565b50909250905080613dcf57604051632acbe91560e01b815260040160405180910390fd5b50613dd98161457a565b610aa15760405163e60dce7160e01b815260040160405180910390fd5b6000808080613e09858260049101015190565b90506004840193508063ffffffff16635032574814613e3b5760405163734fff6760e11b815260040160405180910390fd5b6002858501810151940193600361ffff821614613e6b5760405163734fff6760e11b815260040160405180910390fd5b6002850194506000613e81878760029101015190565b90506002860195506000613e99888860019101015190565b90508161ffff16870196508060ff16600214613ec85760405163734fff6760e11b815260040160405180910390fd5b505050508284016002015161ffff169150600283019250613eed848460029101015190565b61ffff1690506002830192508181028301845114613f1e5760405163734fff6760e11b815260040160405180910390fd5b9193909250565b613f2d6146ac565b6040838501818101516048820151600790810b810b9385019390935260508201516001600160401b0390811660608601526054830151600390810b900b6020860152605c830151840b90930b60808501526064820151831660a08501526065820151607d9283015190931684529160ff811660011415613fb257601882019150613feb565b858201870160088101516001600160401b0390811686526010820151600790810b900b6040870152601891820151166060860152909101905b508381111561400d5760405163734fff6760e11b815260040160405180910390fd5b50935093915050565b60006140206120a4565b8251909150614030906000610b58565b306001600160a01b031663e3795cc16040518163ffffffff1660e01b815260040160206040518083038186803b15801561406957600080fd5b505afa15801561407d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140a19190614f05565b63ffffffff166397a6f304146140ca576040516397363b3560e01b815260040160405180910390fd5b7f2e4cc16c100f0b55e2df82ab0b1a7e294aa9cbd01b48fbaf622683fbc0507a49816140f46120a4565b604080516001600160a01b03938416815292909116602083015201613068565b60e08101516000808061412684613df6565b92509250925060005b8281101561416257600080614145878786613f25565b915091508386019550614158818361393b565b505060010161412f565b50606085015160a08601516040805161ffff90931683526001600160401b0390911660208301527f943f0e8a16c19895fb87cbeb1a349ed86d7f31923089dd36c1a1ed5e300f267b910160405180910390a15050505050565b6141c481613644565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6142635760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161098a565b600080846001600160a01b03168460405161427e919061503f565b600060405180830381855af49150503d80600081146142b9576040519150601f19603f3d011682016040523d82523d6000602084013e6142be565b606091505b50915091506134be828260405180606001604052806027815260200161564760279139614596565b3660008584866142f6868361543f565b9261430393929190615417565b9150915094509492505050565b6143186146e1565b600061432c60c9546001600160a01b031690565b6001600160a01b031663c0fd8bde85856040518363ffffffff1660e01b8152600401614359929190615111565b60006040518083038186803b15801561437157600080fd5b505afa158015614385573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526143ad9190810190614d51565b509092509050806143d157604051632acbe91560e01b815260040160405180910390fd5b50613dd981606001518260800151610b8d565b600080600061442885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506145af92505050565b600188019790915089013560f81c60005b8160ff1681101561446b5760148901988b01356001600160601b03191661446084826145e2565b935050600101614439565b50506001600160601b03199081169516949094149794965093945050505050565b6144946146ac565b60208483018181013560c090811c600790810b900b6040858101919091526028830135821c6060860152603083013560e01c600390810b900b85850152603483013590911c84528051601f8701849004840281018401909152858152603c9094019390359160009161452291889088908190840183828082843760009201919091525088925061458e915050565b868501600881013560c090811c600790810b900b6080870152601090910135901c60a08501526018909401939050848411156145715760405163734fff6760e11b815260040160405180910390fd5b93509350939050565b6000610aa182606001518360800151610b8d565b016008015190565b606083156145a5575081610ea6565b610ea6838361462e565b6000610aa16000836040516020016145c892919061505b565b604051602081830303815290604052805160209091012090565b60006001600160601b031980831690841611156145fd579091905b604051600160f81b60208201526001600160601b0319808516602183015283166035820152610ea6906049016145c8565b81511561463e5781518083602001fd5b8060405162461bcd60e51b815260040161098a9190615140565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6040805160608101909152600081526020810161469a614658565b81526020016146a7614658565b905290565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201819052610100820183905261012082015261014081019190915290565b5080546000825560020290600052602060002090810190610b8a91905b8082111561477957805461ffff1916815560006001820155600201614759565b5090565b80356001600160a01b038116811461479457600080fd5b919050565b60008083601f8401126147aa578182fd5b5081356001600160401b038111156147c0578182fd5b6020830191508360208260051b850101111561348957600080fd5b600082601f8301126147eb578081fd5b815160206001600160401b03821115614806576148066155eb565b614814818360051b016153c0565b80838252828201915082860187848660071b8901011115614833578586fd5b855b8581101561489657608080838b03121561484d578788fd5b614855615375565b835181528684015187820152604061486e818601614971565b90820152606061487f858201614971565b908201528552938501939190910190600101614835565b5090979650505050505050565b8051801515811461479457600080fd5b600082601f8301126148c3578081fd5b81356148d66148d1826153f0565b6153c0565b8181528460208386010111156148ea578283fd5b816020850160208301379081016020019190915292915050565b600082601f830112614914578081fd5b81516149226148d1826153f0565b818152846020838601011115614936578283fd5b611c05826020830160208701615578565b805161479481615601565b805163ffffffff8116811461479457600080fd5b805161479481615611565b805160ff8116811461479457600080fd5b600060208284031215614993578081fd5b610ea68261477d565b6000806000806000806000806000806101008b8d0312156149bb578586fd5b6149c48b61477d565b995060208b01356001600160401b03808211156149df578788fd5b6149eb8e838f01614799565b909b50995060408d0135915080821115614a03578788fd5b50614a108d828e01614799565b90985096505060608b0135614a2481615601565b945060808b0135935060a08b0135614a3b81615611565b8093505060c08b0135915060e08b013590509295989b9194979a5092959850565b60008060408385031215614a6e578182fd5b614a778361477d565b915060208301356001600160401b03811115614a91578182fd5b614a9d858286016148b3565b9150509250929050565b60008060208385031215614ab9578182fd5b82356001600160401b03811115614ace578283fd5b614ada85828601614799565b90969095509350505050565b60008060008060008060608789031215614afe578384fd5b86356001600160401b0380821115614b14578586fd5b614b208a838b01614799565b90985096506020890135915080821115614b38578586fd5b614b448a838b01614799565b90965094506040890135915080821115614b5c578384fd5b50614b6989828a01614799565b979a9699509497509295939492505050565b60008060008060008060808789031215614b93578384fd5b86356001600160401b0380821115614ba9578586fd5b614bb58a838b01614799565b90985096506020890135915080821115614bcd578586fd5b50614bda89828a01614799565b9095509350506040870135614bee81615611565b91506060870135614bfe81615611565b809150509295509295509295565b600060208284031215614c1d578081fd5b5035919050565b600060208284031215614c35578081fd5b5051919050565b60008060408385031215614c4e578182fd5b50508035926020909101359150565b60008060208385031215614c6f578182fd5b82356001600160401b0380821115614c85578384fd5b818501915085601f830112614c98578384fd5b813581811115614ca6578485fd5b866020828501011115614cb7578485fd5b60209290920196919550909350505050565b600060208284031215614cda578081fd5b81356001600160401b03811115614cef578182fd5b611c05848285016148b3565b600060408284031215614d0c578081fd5b604051604081018181106001600160401b0382111715614d2e57614d2e6155eb565b6040528235614d3c81615601565b81526020928301359281019290925250919050565b600080600060608486031215614d65578081fd5b83516001600160401b0380821115614d7b578283fd5b908501906101608288031215614d8f578283fd5b614d9761539d565b614da083614971565b8152614dae60208401614952565b6020820152614dbf60408401614952565b6040820152614dd060608401614947565b606082015260808301516080820152614deb60a08401614966565b60a0820152614dfc60c08401614971565b60c082015260e083015182811115614e12578485fd5b614e1e89828601614904565b60e083015250610100614e32818501614952565b908201526101208381015183811115614e49578586fd5b614e558a8287016147db565b918301919091525061014083810151908201529450614e76602087016148a3565b93506040860151915080821115614e8b578283fd5b50614e9886828701614904565b9150509250925092565b600060208284031215614eb3578081fd5b8135610ea681615601565b600060208284031215614ecf578081fd5b8151610ea681615601565b60008060408385031215614eec578182fd5b8235614ef781615601565b946020939093013593505050565b600060208284031215614f16578081fd5b610ea682614952565b600060208284031215614f30578081fd5b8135610ea681615611565b6000815180845260208085019450808401835b83811015614f8257614f6f878351805161ffff168252602090810151910152565b6040969096019590820190600101614f4e565b509495945050505050565b60008151808452614fa5816020860160208601615578565b601f01601f19169290920160200192915050565b805182526020810151614fff6020840182805160070b82526001600160401b036020820151166020830152604081015160030b6040830152606081015160608301525050565b50604081810151805160070b60a085015260208101516001600160401b031660c08501529081015160030b60e084015260608101516101008401526120fb565b60008251615051818460208701615578565b9190910192915050565b60ff60f81b8360f81b1681526000825161507c816001850160208701615578565b919091016001019392505050565b602081526000610ea66020830184614f3b565b6040815260006150b06040830185614f3b565b82810360208401526134be8185614f3b565b6020808252825182820181905260009190848201906040850190845b81811015615105576150f1838551614fb9565b9284019261012092909201916001016150de565b50909695505050505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b602081526000610ea66020830184614f8d565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6020815260008251602080840152611c056040840182614f8d565b815161ffff1681526020808301519082015260408101610aa1565b602081526000825160048110615284576152846155d5565b806020840152506020830151600781106152a0576152a06155d5565b8060408401525061ffff60408401511660608301526060830151608080840152611c0560a0840182614f8d565b6101208101610aa18284614fb9565b815160070b81526020808301516001600160401b03169082015260408083015160030b908201526060808301519082015260808101610aa1565b6020815260008251602080840152611c056040840182614f3b565b6000808335601e19843603018112615347578283fd5b8301803591506001600160401b03821115615360578283fd5b60200191503681900382131561348957600080fd5b604051608081016001600160401b0381118282101715615397576153976155eb565b60405290565b60405161016081016001600160401b0381118282101715615397576153976155eb565b604051601f8201601f191681016001600160401b03811182821017156153e8576153e86155eb565b604052919050565b60006001600160401b03821115615409576154096155eb565b50601f01601f191660200190565b60008085851115615426578182fd5b83861115615432578182fd5b5050820193919092039150565b60008219821115615452576154526155bf565b500190565b600181815b80851115615492578160001904821115615478576154786155bf565b8085161561548557918102915b93841c939080029061545c565b509250929050565b6000610ea683836000826154b057506001610aa1565b816154bd57506000610aa1565b81600181146154d357600281146154dd576154f9565b6001915050610aa1565b60ff8411156154ee576154ee6155bf565b50506001821b610aa1565b5060208310610133831016604e8410600b841016171561551c575081810a610aa1565b6155268383615457565b806000190482111561553a5761553a6155bf565b029392505050565b600081600019048311821515161561555c5761555c6155bf565b500290565b600082821015615573576155736155bf565b500390565b60005b8381101561559357818101518382015260200161557b565b83811115610d175750506000910152565b60006000198214156155b8576155b86155bf565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b61ffff81168114610b8a57600080fd5b6001600160401b0381168114610b8a57600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b51858d768a90e35c68f289e2d65dcab0be8864cf4cc860e884fd4da21efde6764736f6c63430008040033