0 txs
6.6k calls
constructor
constructor()
functions
eigenPod
viewfunction eigenPod() view returns (address)
elOperatorDelegatedTo
viewfunction elOperatorDelegatedTo() view returns (address)
getAssetBalance
viewfunction getAssetBalance(address asset) view returns (uint256)
getAssetBalances
viewfunction getAssetBalances() view returns (address[] assets, uint256[] assetBalances)
getEffectivePodShares
viewfunction getEffectivePodShares() view returns (int256 ethStaked)
lrtConfig
viewfunction lrtConfig() view returns (address)
paused
viewfunction paused() view returns (bool)
stakedButUnverifiedNativeETH
viewfunction stakedButUnverifiedNativeETH() view returns (uint256)
completeUnstaking
nonpayablefunction completeUnstaking(tuple withdrawal, address[] assets, uint256 middlewareTimesIndex, bool receiveAsTokens)
completeUnstaking
nonpayablefunction completeUnstaking(tuple withdrawal, address[] assets, uint256 middlewareTimesIndex)
createEigenPod
nonpayablefunction createEigenPod()
delegateTo
nonpayablefunction delegateTo(address elOperator, tuple approverSignatureAndExpiry, bytes32 approverSalt)
depositAssetIntoStrategy
nonpayablefunction depositAssetIntoStrategy(address asset)
initialize
nonpayablefunction initialize(address lrtConfigAddr)
initiateUnstaking
nonpayablefunction initiateUnstaking(address[] strategies, uint256[] shares) returns (bytes32 withdrawalRoot)
maxApproveToEigenStrategyManager
nonpayablefunction maxApproveToEigenStrategyManager(address asset)
pause
nonpayablefunction pause()
sendETHFromDepositPoolToNDC
payablefunction sendETHFromDepositPoolToNDC() payable
sendETHFromUnstakingVaultToNDC
payablefunction sendETHFromUnstakingVaultToNDC() payable
stake32Eth
nonpayablefunction stake32Eth(bytes pubkey, bytes signature, bytes32 depositDataRoot)
stake32EthValidated
nonpayablefunction stake32EthValidated(bytes pubkey, bytes signature, bytes32 depositDataRoot, bytes32 expectedDepositRoot)
startCheckpoint
nonpayablefunction startCheckpoint(bool revertIfNoBalance)
transferBackToLRTDepositPool
nonpayablefunction transferBackToLRTDepositPool(address asset, uint256 amount)
transferETHToLRTUnstakingVault
nonpayablefunction transferETHToLRTUnstakingVault(uint256 amount)
undelegate
nonpayablefunction undelegate()
unpause
nonpayablefunction unpause()
updateLRTConfig
nonpayablefunction updateLRTConfig(address lrtConfigAddr)
verifyWithdrawalCredentials
nonpayablefunction verifyWithdrawalCredentials(uint64 beaconTimestamp, tuple stateRootProof, uint40[] validatorIndices, bytes[] validatorFieldsProofs, bytes32[][] validatorFields)
events
AssetDepositIntoStrategy
event AssetDepositIntoStrategy(address indexed asset, address indexed strategy, uint256 depositAmount)
EigenLayerWithdrawalCompleted
event EigenLayerWithdrawalCompleted(address indexed depositor, uint256 nonce, address indexed caller)
EigenPodCreated
event EigenPodCreated(address indexed eigenPod, address indexed podOwner)
ElSharesDelegated
event ElSharesDelegated(address indexed elOperator)
ETHDepositFromDepositPool
event ETHDepositFromDepositPool(uint256 depositAmount)
ETHDepositFromUnstakingVault
event ETHDepositFromUnstakingVault(uint256 depositAmount)
ETHExtraStakeToReceiveIncremented
event ETHExtraStakeToReceiveIncremented(uint256 amount)
ETHReceived
event ETHReceived(address indexed sender, uint256 amount)
ETHStaked
event ETHStaked(bytes valPubKey, uint256 amount)
EthTransferred
event EthTransferred(address to, uint256 amount)
ExtraStakeReceived
event ExtraStakeReceived(uint256 amount)
Initialized
event Initialized(uint8 version)
Paused
event Paused(address account)
Undelegated
event Undelegated()
Unpaused
event Unpaused(address account)
UpdatedLRTConfig
event UpdatedLRTConfig(address indexed lrtConfig)
WithdrawalQueued
event WithdrawalQueued(uint256 nonce, address withdrawer, bytes32[] withdrawalRoots)
errors
AssetNotSupported
error AssetNotSupported()
CallerNotLRTConfigAdmin
error CallerNotLRTConfigAdmin()
CallerNotLRTConfigManager
error CallerNotLRTConfigManager()
CallerNotLRTConfigOperator
error CallerNotLRTConfigOperator()
InsufficientStakedButUnverifiedNativeETH
error InsufficientStakedButUnverifiedNativeETH()
InvalidDepositRoot
error InvalidDepositRoot(bytes32 expectedDepositRoot, bytes32 actualDepositRoot)
InvalidETHSender
error InvalidETHSender()
InvalidWithdrawalData
error InvalidWithdrawalData()
PubkeyAlreadyRegistered
error PubkeyAlreadyRegistered()
StrategyIsNotSetForAsset
error StrategyIsNotSetForAsset()
StrategyMustNotBeBeaconChain
error StrategyMustNotBeBeaconChain()
TokenTransferFailed
error TokenTransferFailed()
ValueAlreadyInUse
error ValueAlreadyInUse()
ZeroAddressNotAllowed
error ZeroAddressNotAllowed()
creation bytecode
0x608060405234801562000010575f80fd5b506200001b62000021565b620000ec565b5f54600160a81b900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f54600160a01b900460ff90811614620000ea575f805460ff60a01b191660ff60a01b17905560405160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615da980620000fa5f395ff3fe6080604052600436106101b2575f3560e01c80638456cb59116100e7578063b86d633111610087578063d58cd58e11610062578063d58cd58e146104b5578063e1736cba146104bd578063eea9064b146104dc578063f1650a46146104fb575f80fd5b8063b86d633114610458578063ba9051b414610477578063c4d66de814610496575f80fd5b8063a33cf7ea116100c2578063a33cf7ea146103cf578063a3aae136146103ee578063a5f4e7fe14610425578063afc4bc8614610444575f80fd5b80638456cb591461038857806388676cad1461039c57806392ab89bb146103bb575f80fd5b8063412ecdc2116101525780635373433f1161012d5780635373433f146103205780635c975abb1461033f5780635e683007146103615780636ffb1ba414610369575f80fd5b8063412ecdc2146102c357806342e09a51146102e25780634798c72b14610301575f80fd5b806327b9636f1161018d57806327b9636f14610246578063308dade11461026e5780633f4ba83a146102905780633f65cf19146102a4575f80fd5b806309c0e997146101f25780630b10b2011461021357806315864e0a14610227575f80fd5b366101ee5760405134815233907fbfe611b001dfcd411432f7bf0d79b82b4b2ee81511edac123a3403c357fb972a9060200160405180910390a2005b5f80fd5b3480156101fd575f80fd5b5061021161020c366004614d6c565b610519565b005b34801561021e575f80fd5b506102116109fc565b348015610232575f80fd5b50610211610241366004614dfe565b610c93565b348015610251575f80fd5b5061025b60985481565b6040519081526020015b60405180910390f35b348015610279575f80fd5b50610282610de3565b604051610265929190614e19565b34801561029b575f80fd5b50610211611109565b3480156102af575f80fd5b506102116102be366004614ef2565b6111b9565b3480156102ce575f80fd5b506102116102dd366004614fdd565b611334565b3480156102ed575f80fd5b506102116102fc36600461505f565b611c46565b34801561030c575f80fd5b5061021161031b366004614dfe565b611ec5565b34801561032b575f80fd5b5061025b61033a366004614dfe565b61231f565b34801561034a575f80fd5b5060335460ff166040519015158152602001610265565b610211612442565b348015610374575f80fd5b50610211610383366004614dfe565b612547565b348015610393575f80fd5b50610211612802565b3480156103a7575f80fd5b506102116103b63660046150d7565b6128cf565b3480156103c6575f80fd5b50610211612a03565b3480156103da575f80fd5b506102116103e93660046150f2565b613122565b3480156103f9575f80fd5b5060975461040d906001600160a01b031681565b6040516001600160a01b039091168152602001610265565b348015610430575f80fd5b5061021161043f36600461511c565b61342f565b34801561044f575f80fd5b5061025b61343d565b348015610463575f80fd5b5060995461040d906001600160a01b031681565b348015610482575f80fd5b5061025b610491366004615187565b613562565b3480156104a1575f80fd5b506102116104b0366004614dfe565b613d70565b610211613fd4565b3480156104c8575f80fd5b506102116104d73660046151ee565b6140d2565b3480156104e7575f80fd5b506102116104f636600461528c565b6142d7565b348015610506575f80fd5b505f5461040d906001600160a01b031681565b610521614511565b5f54604051632474521560e21b81527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960048201523360248201526001600160a01b03909116906391d1485490604401602060405180830381865afa15801561058c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105b09190615367565b6105e6576040517f5d0e4dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8054604051631c2d8fb360e31b81527f6c484c5b446e03c8deb0dddb93e7ef3ffe281049ab3883410f48e491f00fd7f460048201526001600160a01b039091169063e16c7d9890602401602060405180830381865afa15801561064c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106709190615382565b6040517f29c659380000000000000000000000000000000000000000000000000000000081529091506001600160a01b038216906329c65938906106ba90899089906004016153c6565b602060405180830381865afa1580156106d5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f99190615367565b15610730576040517fd6ecff3900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f12bcfe020000000000000000000000000000000000000000000000000000000081526001600160a01b038216906312bcfe029061077790899089906004016153c6565b5f604051808303815f87803b15801561078e575f80fd5b505af11580156107a0573d5f803e3d5ffd5b505050506801bc16d674ec80000060985f8282546107be9190615406565b90915550505f8054604051631c2d8fb360e31b81527ffa35f8e3786b5a503b997a59c721169d947268d05decc8725b4881abe793c5e760048201526001600160a01b039091169063e16c7d9890602401602060405180830381865afa158015610829573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084d9190615382565b9050806001600160a01b0316639b4e46346801bc16d674ec80000089898989896040518763ffffffff1660e01b815260040161088d95949392919061541f565b5f604051808303818588803b1580156108a4575f80fd5b505af11580156108b6573d5f803e3d5ffd5b50506097546001600160a01b031692506109af915050576040517f9ba062750000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03821690639ba0627590602401602060405180830381865afa158015610928573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094c9190615382565b609780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691821790556040513091907fcdc82cfed67d9b46d3a15dd3b48745fb894a354d554cb5da5fb8c440f85c108e905f90a35b7fa16ad5049bc6092f455ad47c45f18d9e3436db84fa5f1da8dcde4cb12296c03d87876801bc16d674ec8000006040516109eb93929190615458565b60405180910390a150505050505050565b5f54604051632474521560e21b81527faf290d8680820aad922855f39b306097b20e28774d6c1ad35a20325630c3a02c60048201523360248201526001600160a01b03909116906391d1485490604401602060405180830381865afa158015610a67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a8b9190615367565b610ac1576040517f210d9c6600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8054604051631c2d8fb360e31b81527ffa35f8e3786b5a503b997a59c721169d947268d05decc8725b4881abe793c5e760048201526001600160a01b039091169063e16c7d9890602401602060405180830381865afa158015610b27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4b9190615382565b9050806001600160a01b03166384d810626040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610b8a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bae9190615382565b506040517f9ba062750000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03821690639ba0627590602401602060405180830381865afa158015610c0a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2e9190615382565b609780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691821790556040513091907fcdc82cfed67d9b46d3a15dd3b48745fb894a354d554cb5da5fb8c440f85c108e905f90a350565b5f8054604051632474521560e21b815260048101929092523360248301526001600160a01b0316906391d1485490604401602060405180830381865afa158015610cdf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d039190615367565b610d39576040517f164931f400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f546001600160a01b031615610d7b576040517f18e6d51900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d848161457e565b5f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117825560405190917f9cf19cefd9aab739c33b95716ee3f3f921f219dc6d7aae25e1f9497b3788915091a250565b5f8054604051631c2d8fb360e31b81527f6bc2c4778697d26fe430a785767cb8ca8f3834a5938a17a9b2fd8a5dab5a19ec6004820152606092839290916001600160a01b039091169063e16c7d9890602401602060405180830381865afa158015610e50573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e749190615382565b6040517f94f649dd0000000000000000000000000000000000000000000000000000000081523060048201529091505f906001600160a01b038316906394f649dd906024015f60405180830381865afa158015610ed3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610efa9190810190615506565b5080519091508067ffffffffffffffff811115610f1957610f19615205565b604051908082528060200260200182016040528015610f42578160200160208202803683370190505b5094508067ffffffffffffffff811115610f5e57610f5e615205565b604051908082528060200260200182016040528015610f87578160200160208202803683370190505b5093505f5b8181101561110157828181518110610fa657610fa66155c5565b60200260200101516001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fe9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061100d9190615382565b86828151811061101f5761101f6155c5565b60200260200101906001600160a01b031690816001600160a01b031681525050828181518110611051576110516155c5565b60209081029190910101516040517f553ca5f80000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b039091169063553ca5f890602401602060405180830381865afa1580156110b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110dc91906155f2565b8582815181106110ee576110ee6155c5565b6020908102919091010152600101610f8c565b505050509091565b5f8054604051632474521560e21b815260048101929092523360248301526001600160a01b0316906391d1485490604401602060405180830381865afa158015611155573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111799190615367565b6111af576040517f164931f400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111b76145be565b565b5f54604051632474521560e21b81527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960048201523360248201526001600160a01b03909116906391d1485490604401602060405180830381865afa158015611224573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112489190615367565b61127e576040517f5d0e4dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611291816801bc16d674ec800000615609565b60985f8282546112a19190615620565b90915550506097546040517f3f65cf190000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690633f65cf19906112fd908b908b908b908b908b908b908b908b906004016157e8565b5f604051808303815f87803b158015611314575f80fd5b505af1158015611326573d5f803e3d5ffd5b505050505050505050505050565b61133c61462e565b611344614511565b5f54604051632474521560e21b81527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960048201523360248201526001600160a01b03909116906391d1485490604401602060405180830381865afa1580156113af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113d39190615367565b611409576040517f5d0e4dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82801580611425575061141f60c08701876158a6565b90508114155b1561145c576040517f33eb760400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8054604051631c2d8fb360e31b81527fe6f126e6caa9e3ecec885b4018b5fc7b4be7215ed294516a21548156199de5b560048201526001600160a01b039091169063e16c7d9890602401602060405180830381865afa1580156114c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e69190615382565b5f8054604051631c2d8fb360e31b81527f893174bb117dfb6bad763bc2a86a0d666364de88c2b918f8e333af7c789de70e600482015292935090916001600160a01b039091169063e16c7d9890602401602060405180830381865afa158015611551573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115759190615382565b5f8054604051631c2d8fb360e31b81527fe1defbdba228c2f450cc8f3382e0fb463dd4233b2b59c3d3ed9e518e77222ed3600482015292935090916001600160a01b039091169063e16c7d9890602401602060405180830381865afa1580156115e0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116049190615382565b9050805f8567ffffffffffffffff81111561162157611621615205565b60405190808252806020026020018201604052801561164a578160200160208202803683370190505b5090505f5b868110156119785761166460a08d018d6158a6565b82818110611674576116746155c5565b90506020020160208101906116899190614dfe565b6001600160a01b0316856001600160a01b03161461177657826001600160a01b0316630d7d8a178c8c848181106116c2576116c26155c5565b90506020020160208101906116d79190614dfe565b8e8060c001906116e791906158a6565b858181106116f7576116f76155c5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044015f604051808303815f87803b15801561175b575f80fd5b505af115801561176d573d5f803e3d5ffd5b50505050611835565b826001600160a01b0316630d7d8a1773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8e8060c001906117aa91906158a6565b858181106117ba576117ba6155c5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044015f604051808303815f87803b15801561181e575f80fd5b505af1158015611830573d5f803e3d5ffd5b505050505b87156119705761184860a08d018d6158a6565b82818110611858576118586155c5565b905060200201602081019061186d9190614dfe565b6001600160a01b0316856001600160a01b031614611950578a8a82818110611897576118976155c5565b90506020020160208101906118ac9190614dfe565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015611909573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061192d91906155f2565b82828151811061193f5761193f6155c5565b602002602001018181525050611970565b47828281518110611963576119636155c5565b6020026020010181815250505b60010161164f565b506040517f60d7faed0000000000000000000000000000000000000000000000000000000081526001600160a01b038616906360d7faed906119c6908e908e908e908e908e90600401615964565b5f604051808303815f87803b1580156119dd575f80fd5b505af11580156119ef573d5f803e3d5ffd5b505050508615611bdb575f5b86811015611bd957611a1060a08d018d6158a6565b82818110611a2057611a206155c5565b9050602002016020810190611a359190614dfe565b6001600160a01b0316856001600160a01b031614611bd1575f828281518110611a6057611a606155c5565b60200260200101518c8c84818110611a7a57611a7a6155c5565b9050602002016020810190611a8f9190614dfe565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015611aec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b1091906155f2565b611b1a9190615620565b90508b8b83818110611b2e57611b2e6155c5565b9050602002016020810190611b439190614dfe565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483015260248201849052919091169063a9059cbb906044016020604051808303815f875af1158015611baa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bce9190615367565b50505b6001016119fb565b505b33611be960208d018d614dfe565b6001600160a01b03167fa302909a05495b640894a6ba8e0be85f973745e9356745d3e16d0ac9bc93f41c8d60600135604051611c2791815260200190565b60405180910390a3505050505050611c3f6001606555565b5050505050565b611c4e614511565b5f54604051632474521560e21b81527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960048201523360248201526001600160a01b03909116906391d1485490604401602060405180830381865afa158015611cb9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cdd9190615367565b611d13576040517f5d0e4dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8054604051631c2d8fb360e31b81527ffa35f8e3786b5a503b997a59c721169d947268d05decc8725b4881abe793c5e760048201526001600160a01b039091169063e16c7d9890602401602060405180830381865afa158015611d79573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d9d9190615382565b90505f816001600160a01b03166374cdd7986040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ddc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e009190615382565b90505f816001600160a01b031663c5f2892f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e3f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e6391906155f2565b9050808414611ead576040517fc425c78e00000000000000000000000000000000000000000000000000000000815260048101859052602481018290526044015b60405180910390fd5b611eba8989898989610519565b505050505050505050565b611ecd61462e565b611ed5614511565b5f546040517f9be918e60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015283921690639be918e690602401602060405180830381865afa158015611f35573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f599190615367565b611f8f576040517f981a2a2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f54604051632474521560e21b81527faf290d8680820aad922855f39b306097b20e28774d6c1ad35a20325630c3a02c60048201523360248201526001600160a01b03909116906391d1485490604401602060405180830381865afa158015611ffa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061201e9190615367565b612054576040517f210d9c6600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80546040517f97ef9d980000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152909116906397ef9d9890602401602060405180830381865afa1580156120b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120d99190615382565b90506001600160a01b03811661211b576040517f3615c93800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8054604051631c2d8fb360e31b81527f6bc2c4778697d26fe430a785767cb8ca8f3834a5938a17a9b2fd8a5dab5a19ec60048201528592916001600160a01b03169063e16c7d9890602401602060405180830381865afa158015612182573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121a69190615382565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091505f906001600160a01b038416906370a0823190602401602060405180830381865afa158015612206573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061222a91906155f2565b6040517fe7a050aa0000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301528581166024830152604482018390529192509083169063e7a050aa906064016020604051808303815f875af115801561229b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122bf91906155f2565b50836001600160a01b0316866001600160a01b03167f921663a414f798537c348d06b72aad477fa6e6837598798abdcbf700efdbb1858360405161230591815260200190565b60405180910390a3505050505061231c6001606555565b50565b5f80546040517f97ef9d980000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152839216906397ef9d9890602401602060405180830381865afa158015612380573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123a49190615382565b90506001600160a01b0381166123bc57505f92915050565b6040517f553ca5f80000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0382169063553ca5f890602401602060405180830381865afa158015612417573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061243b91906155f2565b9392505050565b5f8054604051631c2d8fb360e31b81527f7a8fe1bac8d7638862c53b62ffada56d0a56c381287c35f66503b5b86fa88b8560048201526001600160a01b039091169063e16c7d9890602401602060405180830381865afa1580156124a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124cc9190615382565b9050336001600160a01b03821614612510576040517fe811a0c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040513481527f502f9a26014993a0661817f75b56d6298d587c7005e59a07cdf7a1c056010d6b906020015b60405180910390a150565b5f546040517f9be918e60000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015283921690639be918e690602401602060405180830381865afa1580156125a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125cb9190615367565b612601576040517f981a2a2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f54604051632474521560e21b81527faf290d8680820aad922855f39b306097b20e28774d6c1ad35a20325630c3a02c60048201523360248201526001600160a01b03909116906391d1485490604401602060405180830381865afa15801561266c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126909190615367565b6126c6576040517f210d9c6600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8054604051631c2d8fb360e31b81527f6bc2c4778697d26fe430a785767cb8ca8f3834a5938a17a9b2fd8a5dab5a19ec60048201526001600160a01b039091169063e16c7d9890602401602060405180830381865afa15801561272c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127509190615382565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529192509084169063095ea7b3906044016020604051808303815f875af11580156127d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127fc9190615367565b50505050565b5f54604051632474521560e21b81527faf290d8680820aad922855f39b306097b20e28774d6c1ad35a20325630c3a02c60048201523360248201526001600160a01b03909116906391d1485490604401602060405180830381865afa15801561286d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128919190615367565b6128c7576040517f210d9c6600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111b76146a8565b5f54604051632474521560e21b81527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960048201523360248201526001600160a01b03909116906391d1485490604401602060405180830381865afa15801561293a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061295e9190615367565b612994576040517f5d0e4dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6097546040517f88676cad00000000000000000000000000000000000000000000000000000000815282151560048201526001600160a01b03909116906388676cad906024015f604051808303815f87803b1580156129f1575f80fd5b505af1158015611c3f573d5f803e3d5ffd5b612a0b614511565b5f54604051632474521560e21b81527faf290d8680820aad922855f39b306097b20e28774d6c1ad35a20325630c3a02c60048201523360248201526001600160a01b03909116906391d1485490604401602060405180830381865afa158015612a76573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a9a9190615367565b612ad0576040517f210d9c6600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b609980547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555f8054604051631c2d8fb360e31b81527fe6f126e6caa9e3ecec885b4018b5fc7b4be7215ed294516a21548156199de5b560048201526001600160a01b039091169063e16c7d9890602401602060405180830381865afa158015612b5e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b829190615382565b5f8054604051631c2d8fb360e31b81527fe1defbdba228c2f450cc8f3382e0fb463dd4233b2b59c3d3ed9e518e77222ed3600482015292935090916001600160a01b039091169063e16c7d9890602401602060405180830381865afa158015612bed573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c119190615382565b5f8054604051631c2d8fb360e31b81527f893174bb117dfb6bad763bc2a86a0d666364de88c2b918f8e333af7c789de70e600482015292935090916001600160a01b039091169063e16c7d9890602401602060405180830381865afa158015612c7c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ca09190615382565b6040517fcf80873e0000000000000000000000000000000000000000000000000000000081523060048201529091505f9081906001600160a01b0386169063cf80873e906024015f60405180830381865afa158015612d01573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612d289190810190615506565b915091505f5b8251811015612f1857828181518110612d4957612d496155c5565b60200260200101516001600160a01b0316846001600160a01b031603612e0a57846001600160a01b0316630776387f73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee848481518110612d9f57612d9f6155c5565b60200260200101516040518363ffffffff1660e01b8152600401612dd89291906001600160a01b03929092168252602082015260400190565b5f604051808303815f87803b158015612def575f80fd5b505af1158015612e01573d5f803e3d5ffd5b50505050612f10565b5f838281518110612e1d57612e1d6155c5565b60200260200101516001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e60573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e849190615382565b9050856001600160a01b0316630776387f82858581518110612ea857612ea86155c5565b60200260200101516040518363ffffffff1660e01b8152600401612ee19291906001600160a01b03929092168252602082015260400190565b5f604051808303815f87803b158015612ef8575f80fd5b505af1158015612f0a573d5f803e3d5ffd5b50505050505b600101612d2e565b506040517fa17884840000000000000000000000000000000000000000000000000000000081523060048201525f906001600160a01b0387169063a178848490602401602060405180830381865afa158015612f76573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f9a91906155f2565b6040517fda8be8640000000000000000000000000000000000000000000000000000000081523060048201529091505f906001600160a01b0388169063da8be864906024015f604051808303815f875af1158015612ffa573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526130219190810190615a7c565b90505f5b81518110156130b557866001600160a01b031663e23d1a6783838151811061304f5761304f6155c5565b60200260200101516040518263ffffffff1660e01b815260040161307591815260200190565b5f604051808303815f87803b15801561308c575f80fd5b505af115801561309e573d5f803e3d5ffd5b5050505080806130ad90615afd565b915050613025565b507fb4a86b70f2287279f5f8f45d48929f811389449b556cdd7f03aa8e0cc738dfbd8230836040516130e993929190615b34565b60405180910390a16040517f2167dd2914464f62e3f9655115a6a0cdc6fcf4cb13213ff53d564a47f0423dab905f90a150505050505050565b61312a61462e565b613132614511565b5f546040517f9be918e60000000000000000000000000000000000000000000000000000000081526001600160a01b03808516600483015284921690639be918e690602401602060405180830381865afa158015613192573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131b69190615367565b6131ec576040517f981a2a2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f54604051632474521560e21b81527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960048201523360248201526001600160a01b03909116906391d1485490604401602060405180830381865afa158015613257573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061327b9190615367565b6132b1576040517f5d0e4dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8054604051631c2d8fb360e31b81527f7a8fe1bac8d7638862c53b62ffada56d0a56c381287c35f66503b5b86fa88b8560048201526001600160a01b039091169063e16c7d9890602401602060405180830381865afa158015613317573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061333b9190615382565b90507fffffffffffffffffffffffff11111111111111111111111111111111111111126001600160a01b0385160161340b57806001600160a01b031663db438068846040518263ffffffff1660e01b81526004015f604051808303818588803b1580156133a6575f80fd5b505af11580156133b8573d5f803e3d5ffd5b5050604080516001600160a01b0386168152602081018890527fcec1f18c3ab8ddaaa107a1591e3c369667eec613626611a8deaedef43069fcdd94500191506133fe9050565b60405180910390a161341f565b61341f6001600160a01b0385168285614703565b505061342b6001606555565b5050565b6127fc848484846001611334565b5f8054604051631c2d8fb360e31b81527ffa35f8e3786b5a503b997a59c721169d947268d05decc8725b4881abe793c5e7600482015282916001600160a01b03169063e16c7d9890602401602060405180830381865afa1580156134a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134c79190615382565b6040517f60f4062b0000000000000000000000000000000000000000000000000000000081523060048201529091505f906001600160a01b038316906360f4062b90602401602060405180830381865afa158015613527573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061354b91906155f2565b90508060985461355b9190615b90565b9250505090565b5f61356b61462e565b613573614511565b5f54604051632474521560e21b81527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960048201523360248201526001600160a01b03909116906391d1485490604401602060405180830381865afa1580156135de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136029190615367565b613638576040517f5d0e4dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516080602087028083018201909352606082018781525f9383928a918a918291908601908490808284375f9201919091525050509082525060408051602087810282810182019093528782529283019290918891889182918501908490808284375f9201829052509385525050306020909301929092528054604051631c2d8fb360e31b81527f893174bb117dfb6bad763bc2a86a0d666364de88c2b918f8e333af7c789de70e600482015293945090926001600160a01b03909116915063e16c7d9890602401602060405180830381865afa15801561371d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137419190615382565b5f8054604051631c2d8fb360e31b81527fe1defbdba228c2f450cc8f3382e0fb463dd4233b2b59c3d3ed9e518e77222ed3600482015292935090916001600160a01b039091169063e16c7d9890602401602060405180830381865afa1580156137ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137d09190615382565b90505f5b835151811015613abc5783518051829081106137f2576137f26155c5565b60200260200101516001600160a01b0316836001600160a01b0316036138b757816001600160a01b0316630776387f73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8660200151848151811061384c5761384c6155c5565b60200260200101516040518363ffffffff1660e01b81526004016138859291906001600160a01b03929092168252602082015260400190565b5f604051808303815f87803b15801561389c575f80fd5b505af11580156138ae573d5f803e3d5ffd5b50505050613ab4565b5f845f015182815181106138cd576138cd6155c5565b60200260200101516001600160a01b0316632495a5996040518163ffffffff1660e01b8152600401602060405180830381865afa158015613910573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139349190615382565b5f80546040517f97ef9d980000000000000000000000000000000000000000000000000000000081526001600160a01b038085166004830152939450919216906397ef9d9890602401602060405180830381865afa158015613998573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139bc9190615382565b9050855f015183815181106139d3576139d36155c5565b60200260200101516001600160a01b0316816001600160a01b031614613a25576040517f3615c93800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316630776387f8388602001518681518110613a4b57613a4b6155c5565b60200260200101516040518363ffffffff1660e01b8152600401613a849291906001600160a01b03929092168252602082015260400190565b5f604051808303815f87803b158015613a9b575f80fd5b505af1158015613aad573d5f803e3d5ffd5b5050505050505b6001016137d4565b505f8054604051631c2d8fb360e31b81527fe6f126e6caa9e3ecec885b4018b5fc7b4be7215ed294516a21548156199de5b560048201526001600160a01b039091169063e16c7d9890602401602060405180830381865afa158015613b23573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b479190615382565b60408051600180825281830190925291925082915f91816020015b604080516060808201835280825260208201525f91810191909152815260200190600190039081613b6257905050905085815f81518110613ba557613ba56155c5565b60209081029190910101526040517fa17884840000000000000000000000000000000000000000000000000000000081523060048201525f906001600160a01b0384169063a178848490602401602060405180830381865afa158015613c0d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c3191906155f2565b90505f836001600160a01b0316630dd8dd02846040518263ffffffff1660e01b8152600401613c609190615bb7565b5f604051808303815f875af1158015613c7b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613ca29190810190615a7c565b9050805f81518110613cb657613cb66155c5565b60200260200101519850856001600160a01b031663e23d1a678a6040518263ffffffff1660e01b8152600401613cee91815260200190565b5f604051808303815f87803b158015613d05575f80fd5b505af1158015613d17573d5f803e3d5ffd5b505050507fb4a86b70f2287279f5f8f45d48929f811389449b556cdd7f03aa8e0cc738dfbd823083604051613d4e93929190615b34565b60405180910390a15050505050505050613d686001606555565b949350505050565b5f547501000000000000000000000000000000000000000000900460ff1615808015613db957505f5460017401000000000000000000000000000000000000000090910460ff16105b80613dea5750303b158015613dea57505f5474010000000000000000000000000000000000000000900460ff166001145b613e76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401611ea4565b5f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790558015613efa575f80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b613f038261457e565b613f0b614788565b613f1361483a565b5f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416908117825560405190917f9cf19cefd9aab739c33b95716ee3f3f921f219dc6d7aae25e1f9497b3788915091a2801561342b575f80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b5f8054604051631c2d8fb360e31b81527fe1defbdba228c2f450cc8f3382e0fb463dd4233b2b59c3d3ed9e518e77222ed360048201526001600160a01b039091169063e16c7d9890602401602060405180830381865afa15801561403a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061405e9190615382565b9050336001600160a01b038216146140a2576040517fe811a0c200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040513481527fb41d139403f52e77e0f12eaab89e6da322c0711d5e738a30fe5427bb68d0c90d9060200161253c565b6140da61462e565b6140e2614511565b5f54604051632474521560e21b81527f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92960048201523360248201526001600160a01b03909116906391d1485490604401602060405180830381865afa15801561414d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141719190615367565b6141a7576040517f5d0e4dee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8054604051631c2d8fb360e31b81527fe1defbdba228c2f450cc8f3382e0fb463dd4233b2b59c3d3ed9e518e77222ed360048201526001600160a01b039091169063e16c7d9890602401602060405180830381865afa15801561420d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906142319190615382565b9050806001600160a01b031663db438068836040518263ffffffff1660e01b81526004015f604051808303818588803b15801561426c575f80fd5b505af115801561427e573d5f803e3d5ffd5b5050604080516001600160a01b0386168152602081018790527fcec1f18c3ab8ddaaa107a1591e3c369667eec613626611a8deaedef43069fcdd94500191506142c49050565b60405180910390a15061231c6001606555565b5f54604051632474521560e21b81527faf290d8680820aad922855f39b306097b20e28774d6c1ad35a20325630c3a02c60048201523360248201526001600160a01b03909116906391d1485490604401602060405180830381865afa158015614342573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143669190615367565b61439c576040517f210d9c6600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6143a58361457e565b609980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03858116919091179091555f8054604051631c2d8fb360e31b81527fe6f126e6caa9e3ecec885b4018b5fc7b4be7215ed294516a21548156199de5b560048201529192169063e16c7d9890602401602060405180830381865afa15801561443b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061445f9190615382565b6040517feea9064b0000000000000000000000000000000000000000000000000000000081529091506001600160a01b0382169063eea9064b906144ab90879087908790600401615d05565b5f604051808303815f87803b1580156144c2575f80fd5b505af11580156144d4573d5f803e3d5ffd5b50506040516001600160a01b03871692507f9e76604d3ca069af191a0f9f6cc8c7f8013191b7ae7ff82eaa75600bbca7010191505f90a250505050565b60335460ff16156111b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401611ea4565b6001600160a01b03811661231c576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6145c66148ec565b603380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60026065540361469a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611ea4565b6002606555565b6001606555565b6146b0614511565b603380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586146113390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052614783908490614958565b505050565b5f547501000000000000000000000000000000000000000000900460ff16614832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611ea4565b6111b7614a58565b5f547501000000000000000000000000000000000000000000900460ff166148e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611ea4565b6111b7614b2c565b60335460ff166111b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401611ea4565b5f6149ac826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614bd69092919063ffffffff16565b905080515f14806149cc5750808060200190518101906149cc9190615367565b614783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401611ea4565b5f547501000000000000000000000000000000000000000000900460ff16614b02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611ea4565b603380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b5f547501000000000000000000000000000000000000000000900460ff166146a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611ea4565b6060613d6884845f85855f80866001600160a01b03168587604051614bfb9190615d46565b5f6040518083038185875af1925050503d805f8114614c35576040519150601f19603f3d011682016040523d82523d5f602084013e614c3a565b606091505b5091509150614c4b87838387614c56565b979650505050505050565b60608315614cde5782515f03614cd7576001600160a01b0385163b614cd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611ea4565b5081613d68565b613d688383815115614cf35781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea49190615d61565b5f8083601f840112614d37575f80fd5b50813567ffffffffffffffff811115614d4e575f80fd5b602083019150836020828501011115614d65575f80fd5b9250929050565b5f805f805f60608688031215614d80575f80fd5b853567ffffffffffffffff80821115614d97575f80fd5b614da389838a01614d27565b90975095506020880135915080821115614dbb575f80fd5b50614dc888828901614d27565b96999598509660400135949350505050565b6001600160a01b038116811461231c575f80fd5b8035614df981614dda565b919050565b5f60208284031215614e0e575f80fd5b813561243b81614dda565b604080825283519082018190525f906020906060840190828701845b82811015614e5a5781516001600160a01b031684529284019290840190600101614e35565b505050838103828501528451808252858301918301905f5b81811015614e8e57835183529284019291840191600101614e72565b5090979650505050505050565b5f60408284031215614eab575f80fd5b50919050565b5f8083601f840112614ec1575f80fd5b50813567ffffffffffffffff811115614ed8575f80fd5b6020830191508360208260051b8501011115614d65575f80fd5b5f805f805f805f8060a0898b031215614f09575f80fd5b883567ffffffffffffffff8082168214614f21575f80fd5b90985060208a01359080821115614f36575f80fd5b614f428c838d01614e9b565b985060408b0135915080821115614f57575f80fd5b614f638c838d01614eb1565b909850965060608b0135915080821115614f7b575f80fd5b614f878c838d01614eb1565b909650945060808b0135915080821115614f9f575f80fd5b50614fac8b828c01614eb1565b999c989b5096995094979396929594505050565b5f60e08284031215614eab575f80fd5b801515811461231c575f80fd5b5f805f805f60808688031215614ff1575f80fd5b853567ffffffffffffffff80821115615008575f80fd5b61501489838a01614fc0565b96506020880135915080821115615029575f80fd5b5061503688828901614eb1565b90955093505060408601359150606086013561505181614fd0565b809150509295509295909350565b5f805f805f8060808789031215615074575f80fd5b863567ffffffffffffffff8082111561508b575f80fd5b6150978a838b01614d27565b909850965060208901359150808211156150af575f80fd5b506150bc89828a01614d27565b979a9699509760408101359660609091013595509350505050565b5f602082840312156150e7575f80fd5b813561243b81614fd0565b5f8060408385031215615103575f80fd5b823561510e81614dda565b946020939093013593505050565b5f805f806060858703121561512f575f80fd5b843567ffffffffffffffff80821115615146575f80fd5b61515288838901614fc0565b95506020870135915080821115615167575f80fd5b5061517487828801614eb1565b9598909750949560400135949350505050565b5f805f806040858703121561519a575f80fd5b843567ffffffffffffffff808211156151b1575f80fd5b6151bd88838901614eb1565b909650945060208701359150808211156151d5575f80fd5b506151e287828801614eb1565b95989497509550505050565b5f602082840312156151fe575f80fd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff8111828210171561525557615255615205565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561528457615284615205565b604052919050565b5f805f6060848603121561529e575f80fd5b83356152a981614dda565b925060208481013567ffffffffffffffff808211156152c6575f80fd5b90860190604082890312156152d9575f80fd5b6152e1615232565b8235828111156152ef575f80fd5b8301601f81018a136152ff575f80fd5b80358381111561531157615311615205565b61532386601f19601f8401160161525b565b93508084528a86828401011115615338575f80fd5b80868301878601375f908401860152509081529082013591810191909152929592945050506040919091013590565b5f60208284031215615377575f80fd5b815161243b81614fd0565b5f60208284031215615392575f80fd5b815161243b81614dda565b81835281816020850137505f602082840101525f6020601f19601f840116840101905092915050565b602081525f613d6860208301848661539d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115615419576154196153d9565b92915050565b606081525f61543260608301878961539d565b828103602084015261544581868861539d565b9150508260408301529695505050505050565b604081525f61546b60408301858761539d565b9050826020830152949350505050565b5f67ffffffffffffffff82111561549457615494615205565b5060051b60200190565b5f82601f8301126154ad575f80fd5b815160206154c26154bd8361547b565b61525b565b82815260059290921b840181019181810190868411156154e0575f80fd5b8286015b848110156154fb57805183529183019183016154e4565b509695505050505050565b5f8060408385031215615517575f80fd5b825167ffffffffffffffff8082111561552e575f80fd5b818501915085601f830112615541575f80fd5b815160206155516154bd8361547b565b82815260059290921b8401810191818101908984111561556f575f80fd5b948201945b8386101561559657855161558781614dda565b82529482019490820190615574565b918801519196509093505050808211156155ae575f80fd5b506155bb8582860161549e565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215615602575f80fd5b5051919050565b8082028115828204841417615419576154196153d9565b81810381811115615419576154196153d9565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112615666575f80fd5b830160208101925035905067ffffffffffffffff811115615685575f80fd5b803603821315614d65575f80fd5b8183525f6020808501808196508560051b81019150845f5b878110156156e15782840389526156c28288615633565b6156cd86828461539d565b9a87019a95505050908401906001016156ab565b5091979650505050505050565b8183525f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561571e575f80fd5b8260051b80836020870137939093016020019392505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261576a575f80fd5b830160208101925035905067ffffffffffffffff811115615789575f80fd5b8060051b3603821315614d65575f80fd5b8183525f6020808501808196508560051b81019150845f5b878110156156e15782840389526157c98288615737565b6157d48682846156ee565b9a87019a95505050908401906001016157b2565b67ffffffffffffffff891681525f602060a081840152893560a0840152615811818b018b615633565b604060c086015261582660e08601828461539d565b85810360408701528a81528b9250830190505f805b8b81101561586b57833564ffffffffff8116808214615858578384fd5b845250928401929184019160010161583b565b5050848103606086015261588081898b615693565b92505050828103608084015261589781858761579a565b9b9a5050505050505050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126158d9575f80fd5b83018035915067ffffffffffffffff8211156158f3575f80fd5b6020019150600581901b3603821315614d65575f80fd5b803563ffffffff81168114614df9575f80fd5b8183525f60208085019450825f5b8581101561595957813561593e81614dda565b6001600160a01b03168752958201959082019060010161592b565b509495945050505050565b608081525f863561597481614dda565b6001600160a01b03166080830152602087013561599081614dda565b6001600160a01b031660a08301526159aa60408801614dee565b6001600160a01b031660c0830152606087013560e08301526159ce6080880161590a565b63ffffffff166101008301526159e760a0880188615737565b60e06101208501526159fe6101608501828461591d565b915050615a0e60c0890189615737565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8085840301610140860152615a448382846156ee565b925050508281036020840152615a5b81878961591d565b915050836040830152615a72606083018415159052565b9695505050505050565b5f6020808385031215615a8d575f80fd5b825167ffffffffffffffff811115615aa3575f80fd5b8301601f81018513615ab3575f80fd5b8051615ac16154bd8261547b565b81815260059190911b82018301908381019087831115615adf575f80fd5b928401925b82841015614c4b57835182529284019290840190615ae4565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615b2d57615b2d6153d9565b5060010190565b5f6060820185835260206001600160a01b038616818501526060604085015281855180845260808601915082870193505f5b81811015615b8257845183529383019391830191600101615b66565b509098975050505050505050565b8082018281125f831280158216821582161715615baf57615baf6153d9565b505092915050565b5f6020808301818452808551808352604092508286019150828160051b8701018488015f5b83811015615b82578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018552815180516060808652815190860181905260808601918a01905f905b80821015615c525782516001600160a01b031684526020840193508b83019250600182019150615c27565b50505081890151858203868b01528051808352908a01915f91908b01905b80831015615c905783518252928b019260019290920191908b0190615c70565b50928901516001600160a01b0316958901959095525094870194925090860190600101615bdc565b5f5b83811015615cd2578181015183820152602001615cba565b50505f910152565b5f8151808452615cf1816020860160208601615cb8565b601f01601f19169290920160200192915050565b6001600160a01b0384168152606060208201525f835160406060840152615d2f60a0840182615cda565b602095909501516080840152505060400152919050565b5f8251615d57818460208701615cb8565b9190910192915050565b602081525f61243b6020830184615cda56fea264697066735822122019bcd45e10a735ac1cd88352322c2853a1c3f4bc26ca0534d5506dace225148464736f6c63430008150033