0 txs
0 calls
constructor
constructor(address factory, address factoryV1, address legacyFactory, address legacyRouter, address wnative)
functions
getFactory
viewfunction getFactory() view returns (address lbFactory)
getIdFromPrice
viewfunction getIdFromPrice(address pair, uint256 price) view returns (uint24)
getLegacyFactory
viewfunction getLegacyFactory() view returns (address legacyLBfactory)
getLegacyRouter
viewfunction getLegacyRouter() view returns (address legacyRouter)
getPriceFromId
viewfunction getPriceFromId(address pair, uint24 id) view returns (uint256)
getSwapIn
viewfunction getSwapIn(address pair, uint128 amountOut, bool swapForY) view returns (uint128 amountIn, uint128 amountOutLeft, uint128 fee)
getSwapOut
viewfunction getSwapOut(address pair, uint128 amountIn, bool swapForY) view returns (uint128 amountInLeft, uint128 amountOut, uint128 fee)
getV1Factory
viewfunction getV1Factory() view returns (address factoryV1)
getWNATIVE
viewfunction getWNATIVE() view returns (address wnative)
addLiquidity
nonpayablefunction addLiquidity(tuple liquidityParameters) returns (uint256 amountXAdded, uint256 amountYAdded, uint256 amountXLeft, uint256 amountYLeft, uint256[] depositIds, uint256[] liquidityMinted)
addLiquidityNATIVE
payablefunction addLiquidityNATIVE(tuple liquidityParameters) payable returns (uint256 amountXAdded, uint256 amountYAdded, uint256 amountXLeft, uint256 amountYLeft, uint256[] depositIds, uint256[] liquidityMinted)
createLBPair
nonpayablefunction createLBPair(address tokenX, address tokenY, uint24 activeId, uint16 binStep) returns (address pair)
removeLiquidity
nonpayablefunction removeLiquidity(address tokenX, address tokenY, uint16 binStep, uint256 amountXMin, uint256 amountYMin, uint256[] ids, uint256[] amounts, address to, uint256 deadline) returns (uint256 amountX, uint256 amountY)
removeLiquidityNATIVE
nonpayablefunction removeLiquidityNATIVE(address token, uint16 binStep, uint256 amountTokenMin, uint256 amountNATIVEMin, uint256[] ids, uint256[] amounts, address to, uint256 deadline) returns (uint256 amountToken, uint256 amountNATIVE)
swapExactNATIVEForTokens
payablefunction swapExactNATIVEForTokens(uint256 amountOutMin, tuple path, address to, uint256 deadline) payable returns (uint256 amountOut)
swapExactNATIVEForTokensSupportingFeeOnTransferTokens
payablefunction swapExactNATIVEForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, tuple path, address to, uint256 deadline) payable returns (uint256 amountOut)
swapExactTokensForNATIVE
nonpayablefunction swapExactTokensForNATIVE(uint256 amountIn, uint256 amountOutMinNATIVE, tuple path, address to, uint256 deadline) returns (uint256 amountOut)
swapExactTokensForNATIVESupportingFeeOnTransferTokens
nonpayablefunction swapExactTokensForNATIVESupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMinNATIVE, tuple path, address to, uint256 deadline) returns (uint256 amountOut)
swapExactTokensForTokens
nonpayablefunction swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, tuple path, address to, uint256 deadline) returns (uint256 amountOut)
swapExactTokensForTokensSupportingFeeOnTransferTokens
nonpayablefunction swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, tuple path, address to, uint256 deadline) returns (uint256 amountOut)
swapNATIVEForExactTokens
payablefunction swapNATIVEForExactTokens(uint256 amountOut, tuple path, address to, uint256 deadline) payable returns (uint256[] amountsIn)
swapTokensForExactNATIVE
nonpayablefunction swapTokensForExactNATIVE(uint256 amountNATIVEOut, uint256 amountInMax, tuple path, address to, uint256 deadline) returns (uint256[] amountsIn)
swapTokensForExactTokens
nonpayablefunction swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, tuple path, address to, uint256 deadline) returns (uint256[] amountsIn)
sweep
nonpayablefunction sweep(address token, address to, uint256 amount)
sweepLBToken
nonpayablefunction sweepLBToken(address lbToken, address to, uint256[] ids, uint256[] amounts)
events
No events.
errors
AddressHelper__CallFailed
error AddressHelper__CallFailed()
AddressHelper__NonContract
error AddressHelper__NonContract()
JoeLibrary__InsufficientAmount
error JoeLibrary__InsufficientAmount()
JoeLibrary__InsufficientLiquidity
error JoeLibrary__InsufficientLiquidity()
LBRouter__AmountSlippageBPTooBig
error LBRouter__AmountSlippageBPTooBig(uint256 amountSlippage)
LBRouter__AmountSlippageCaught
error LBRouter__AmountSlippageCaught(uint256 amountXMin, uint256 amountX, uint256 amountYMin, uint256 amountY)
LBRouter__BinReserveOverflows
error LBRouter__BinReserveOverflows(uint256 id)
LBRouter__BrokenSwapSafetyCheck
error LBRouter__BrokenSwapSafetyCheck()
LBRouter__DeadlineExceeded
error LBRouter__DeadlineExceeded(uint256 deadline, uint256 currentTimestamp)
LBRouter__FailedToSendNATIVE
error LBRouter__FailedToSendNATIVE(address recipient, uint256 amount)
LBRouter__IdDesiredOverflows
error LBRouter__IdDesiredOverflows(uint256 idDesired, uint256 idSlippage)
LBRouter__IdOverflows
error LBRouter__IdOverflows(int256 id)
LBRouter__IdSlippageCaught
error LBRouter__IdSlippageCaught(uint256 activeIdDesired, uint256 idSlippage, uint256 activeId)
LBRouter__InsufficientAmountOut
error LBRouter__InsufficientAmountOut(uint256 amountOutMin, uint256 amountOut)
LBRouter__InvalidTokenPath
error LBRouter__InvalidTokenPath(address wrongToken)
LBRouter__InvalidVersion
error LBRouter__InvalidVersion(uint256 version)
LBRouter__LengthsMismatch
error LBRouter__LengthsMismatch()
LBRouter__MaxAmountInExceeded
error LBRouter__MaxAmountInExceeded(uint256 amountInMax, uint256 amountIn)
LBRouter__NotFactoryOwner
error LBRouter__NotFactoryOwner()
LBRouter__PairNotCreated
error LBRouter__PairNotCreated(address tokenX, address tokenY, uint256 binStep)
LBRouter__SenderIsNotWNATIVE
error LBRouter__SenderIsNotWNATIVE()
LBRouter__SwapOverflows
error LBRouter__SwapOverflows(uint256 id)
LBRouter__TooMuchTokensIn
error LBRouter__TooMuchTokensIn(uint256 excess)
LBRouter__WrongAmounts
error LBRouter__WrongAmounts(uint256 amount, uint256 reserve)
LBRouter__WrongNativeLiquidityParameters
error LBRouter__WrongNativeLiquidityParameters(address tokenX, address tokenY, uint256 amountX, uint256 amountY, uint256 msgValue)
LBRouter__WrongTokenOrder
error LBRouter__WrongTokenOrder()
TokenHelper__TransferFailed
error TokenHelper__TransferFailed()
creation bytecode
0x6101206040523480156200001257600080fd5b50604051620054b6380380620054b6833981016040819052620000359162000078565b6001600160a01b0394851660805292841660a05290831660c052821660e0521661010052620000f8565b6001600160a01b03811681146200007557600080fd5b50565b600080600080600060a086880312156200009157600080fd5b85516200009e816200005f565b6020870151909550620000b1816200005f565b6040870151909450620000c4816200005f565b6060870151909350620000d7816200005f565b6080870151909250620000ea816200005f565b809150509295509295909350565b60805160a05160c05160e051610100516152d1620001e5600039600081816101aa015281816103090152818161065e0152818161073c0152818161082c015281816108ec015281816109e901528181610d6901528181610eec015281816113d501528181611621015281816116b0015281816119f501528181611af001528181611d0f01528181611ff601528181612fdd015261305b0152600081816104d90152612d8a01526000818161033c0152613a5001526000818161050c01526141e80152600081816103a40152818161118a0152818161132d015281816121f00152613af401526152d16000f3fe60806040526004361061019a5760003560e01c806392fe8e70116100e1578063ba8465231161008a578063d0e380f211610064578063d0e380f214610550578063e038e6dc14610570578063e9361c0814610583578063f96fe925146105a357600080fd5b8063ba846523146104ca578063bb558a9f146104fd578063c22159b61461053057600080fd5b8063a0d376cf116100bb578063a0d376cf14610477578063a3c7271a14610497578063b066ea7c146104b757600080fd5b806392fe8e70146103ed578063964f987c1461040d5780639ab6156b1461045757600080fd5b8063659ac74b1161014357806381c2fdfb1161011d57806381c2fdfb1461036057806388cc58e4146103955780638efc2b2c146103c857600080fd5b8063659ac74b146102c25780636c9c0078146102fa57806371d1974a1461032d57600080fd5b80633dc8f8ec116101745780633dc8f8ec146102625780634b8018701461028257806362c06767146102a257600080fd5b80631a24f9a9146101ef5780632075ad22146102225780632a443fae1461024257600080fd5b366101ea57336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101e857604051636c8cb79360e01b815260040160405180910390fd5b005b600080fd5b3480156101fb57600080fd5b5061020f61020a36600461477f565b6105d7565b6040519081526020015b60405180910390f35b6102356102303660046147ea565b610967565b6040516102199190614886565b34801561024e57600080fd5b5061020f61025d36600461477f565b610bc7565b34801561026e57600080fd5b5061023561027d36600461477f565b610ce7565b34801561028e57600080fd5b5061020f61029d36600461477f565b610f5a565b3480156102ae57600080fd5b506101e86102bd366004614899565b611188565b3480156102ce57600080fd5b506102e26102dd366004614906565b6112ee565b6040516001600160a01b039091168152602001610219565b34801561030657600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102e2565b34801561033957600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102e2565b34801561036c57600080fd5b5061038061037b366004614962565b6113a5565b60408051928352602083019190915201610219565b3480156103a157600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102e2565b6103db6103d6366004614a1d565b611541565b60405161021996959493929190614a59565b3480156103f957600080fd5b5061023561040836600461477f565b6117a1565b34801561041957600080fd5b5061042d610428366004614ac6565b6118e3565b604080516001600160801b0394851681529284166020840152921691810191909152606001610219565b34801561046357600080fd5b5061020f61047236600461477f565b611973565b34801561048357600080fd5b5061042d610492366004614ac6565b611b5e565b3480156104a357600080fd5b506103db6104b2366004614a1d565b611ba2565b61020f6104c53660046147ea565b611c8d565b3480156104d657600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102e2565b34801561050957600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102e2565b34801561053c57600080fd5b5061038061054b366004614b11565b611e07565b34801561055c57600080fd5b5061020f61056b366004614bd9565b611efd565b61020f61057e3660046147ea565b611f74565b34801561058f57600080fd5b506101e861059e366004614c5e565b6121ee565b3480156105af57600080fd5b506105c36105be366004614cf3565b612311565b60405162ffffff9091168152602001610219565b600081804211156106095760405163dae7ca7d60e01b8152600481018290524260248201526044015b60405180910390fd5b84515185901580610621575080515160208201515114155b8061063e575060408101515181515161063b906001614d35565b14155b1561065c5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151876000015151815181106106a1576106a1614d4d565b60200260200101516001600160a01b031614610700576040860151865151815181106106cf576106cf614d4d565b602002602001015160405163cfec0e0160e01b815260040161060091906001600160a01b0391909116815260200190565b600061071987600001518860200151896040015161237d565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610783573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a79190614d63565b905061080133836000815181106107c0576107c0614d4d565b60200260200101518c8b604001516000815181106107e0576107e0614d4d565b60200260200101516001600160a01b031661248d909392919063ffffffff16565b6108158289602001518a604001513061254c565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561087b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089f9190614d63565b6108a99190614d7c565b9450848911156108d6576040516313fab00360e21b8152600481018a905260248101869052604401610600565b604051632e1a7d4d60e01b8152600481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561093857600080fd5b505af115801561094c573d6000803e3d6000fd5b5050505061095a8786612ab4565b5050505095945050505050565b606081804211156109945760405163dae7ca7d60e01b815260048101829052426024820152604401610600565b845151859015806109ac575080515160208201515114155b806109c957506040810151518151516109c6906001614d35565b14155b156109e75760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110610a2857610a28614d4d565b60200260200101516001600160a01b031614610a555785604001516000815181106106cf576106cf614d4d565b6000610a6e87600001518860200151896040015161237d565b9050610a8487602001518289604001518b612b3a565b93503484600081518110610a9a57610a9a614d4d565b60200260200101511115610ae8573484600081518110610abc57610abc614d4d565b602002602001015160405163194ee21960e31b8152600401610600929190918252602082015260400190565b610b2681600081518110610afe57610afe614d4d565b602002602001015185600081518110610b1957610b19614d4d565b6020026020010151612fdb565b6000610b3d8289602001518a60400151888b61308a565b905088811015610b6a576040516313fab00360e21b8152600481018a905260248101829052604401610600565b84600081518110610b7d57610b7d614d4d565b6020026020010151341115610bbb57610bbb3386600081518110610ba357610ba3614d4d565b602002602001015134610bb69190614d7c565b612ab4565b50505050949350505050565b60008180421115610bf45760405163dae7ca7d60e01b815260048101829052426024820152604401610600565b84515185901580610c0c575080515160208201515114155b80610c295750604081015151815151610c26906001614d35565b14155b15610c475760405163b91b4d4d60e01b815260040160405180910390fd5b6000610c6087600001518860200151896040015161237d565b9050610c993382600081518110610c7957610c79614d4d565b60200260200101518b8a604001516000815181106107e0576107e0614d4d565b610cae898289602001518a604001518a6134c5565b935083881115610cdb576040516313fab00360e21b81526004810189905260248101859052604401610600565b50505095945050505050565b60608180421115610d145760405163dae7ca7d60e01b815260048101829052426024820152604401610600565b84515185901580610d2c575080515160208201515114155b80610d495750604081015151815151610d46906001614d35565b14155b15610d675760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110610dac57610dac614d4d565b60200260200101516001600160a01b031614610dda576040860151865151815181106106cf576106cf614d4d565b6000610df387600001518860200151896040015161237d565b9050610e0987602001518289604001518c612b3a565b93508784600081518110610e1f57610e1f614d4d565b60200260200101511115610e41578784600081518110610abc57610abc614d4d565b610e923382600081518110610e5857610e58614d4d565b602002602001015186600081518110610e7357610e73614d4d565b60200260200101518a604001516000815181106107e0576107e0614d4d565b6000610ea98289602001518a60400151883061308a565b905089811015610ed6576040516313fab00360e21b8152600481018b905260248101829052604401610600565b604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015610f3857600080fd5b505af1158015610f4c573d6000803e3d6000fd5b5050505061095a8782612ab4565b60008180421115610f875760405163dae7ca7d60e01b815260048101829052426024820152604401610600565b84515185901580610f9f575080515160208201515114155b80610fbc5750604081015151815151610fb9906001614d35565b14155b15610fda5760405163b91b4d4d60e01b815260040160405180910390fd5b6000610ff387600001518860200151896040015161237d565b90506000876040015182518151811061100e5761100e614d4d565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa158015611065573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110899190614d63565b90506110c233846000815181106110a2576110a2614d4d565b60200260200101518d8c604001516000815181106107e0576107e0614d4d565b6110d6838a602001518b604001518b61254c565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa15801561111f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111439190614d63565b61114d9190614d7c565b9550858a111561117a576040516313fab00360e21b8152600481018b905260248101879052604401610600565b505050505095945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120a9190614d93565b6001600160a01b0316336001600160a01b03161461123b57604051635d9515b960e11b815260040160405180910390fd5b6001600160a01b038316611265576000198114156112565750475b6112608282612ab4565b505050565b6000198114156112da576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156112b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d79190614d63565b90505b6112606001600160a01b0384168383613950565b60405163659ac74b60e01b81526001600160a01b038581166004830152848116602483015262ffffff8416604483015261ffff831660648301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063659ac74b906084016020604051808303816000875af1158015611378573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139c9190614d93565b95945050505050565b60008082804211156113d35760405163dae7ca7d60e01b815260048101829052426024820152604401610600565b7f000000000000000000000000000000000000000000000000000000000000000060006114078d8361ffff8f166002613a06565b90506000816001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611449573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146d9190614d93565b6001600160a01b0316836001600160a01b03161490508061148c57999a995b60008061149d848f8f8f8f30613baf565b91509150826114ad5780826114b0565b81815b90985096506114cd925050506001600160a01b038e168887613950565b604051632e1a7d4d60e01b8152600481018590526001600160a01b03831690632e1a7d4d90602401600060405180830381600087803b15801561150f57600080fd5b505af1158015611523573d6000803e3d6000fd5b505050506115318785612ab4565b5050509850989650505050505050565b60008080806060808261157661155a60208a018a614db0565b61156a60408b0160208c01614db0565b8a604001356002613a06565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115da9190614d93565b6001600160a01b03166115f060208a018a614db0565b6001600160a01b0316146116175760405163b33f8ab960e01b815260040160405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661164e60208a018a614db0565b6001600160a01b03161480156116675750348860600135145b156116a6576116768134612fdb565b6116a1338260808b013561169060408d0160208e01614db0565b6001600160a01b031692919061248d565b611782565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166116e060408a0160208b01614db0565b6001600160a01b03161480156116f95750348860800135145b1561171f57611715338260608b013561169060208d018d614db0565b6116a18134612fdb565b61172c6020890189614db0565b61173c60408a0160208b01614db0565b60405163d0a4f13b60e01b81526001600160a01b03928316600482015291166024820152606089013560448201526080890135606482015234608482015260a401610600565b61178c8882613d11565b949d939c50919a509850965090945092505050565b606081804211156117ce5760405163dae7ca7d60e01b815260048101829052426024820152604401610600565b845151859015806117e6575080515160208201515114155b806118035750604081015151815151611800906001614d35565b14155b156118215760405163b91b4d4d60e01b815260040160405180910390fd5b600061183a87600001518860200151896040015161237d565b905061185087602001518289604001518c612b3a565b9350878460008151811061186657611866614d4d565b60200260200101511115611888578784600081518110610abc57610abc614d4d565b61189f3382600081518110610e5857610e58614d4d565b60006118b68289602001518a60400151888b61308a565b90508981101561095a576040516313fab00360e21b8152600481018b905260248101829052604401610600565b604051630abcd78360e41b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063abcd7830906044015b606060405180830381865afa158015611940573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119649190614dcd565b91989097509095509350505050565b600081804211156119a05760405163dae7ca7d60e01b815260048101829052426024820152604401610600565b845151859015806119b8575080515160208201515114155b806119d557506040810151518151516119d2906001614d35565b14155b156119f35760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015187600001515181518110611a3857611a38614d4d565b60200260200101516001600160a01b031614611a66576040860151865151815181106106cf576106cf614d4d565b6000611a7f87600001518860200151896040015161237d565b9050611a983382600081518110610c7957610c79614d4d565b611aad898289602001518a60400151306134c5565b935083881115611ada576040516313fab00360e21b81526004810189905260248101859052604401610600565b604051632e1a7d4d60e01b8152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015611b3c57600080fd5b505af1158015611b50573d6000803e3d6000fd5b50505050610cdb8685612ab4565b604051631cee6cdf60e31b81526001600160801b03831660048201528115156024820152600090819081906001600160a01b0387169063e77366f890604401611923565b600080808060608082611bbb61155a60208a018a614db0565b9050806001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1f9190614d93565b6001600160a01b0316611c3560208a018a614db0565b6001600160a01b031614611c5c5760405163b33f8ab960e01b815260040160405180910390fd5b611c73338260608b013561169060208d018d614db0565b611782338260808b013561169060408d0160208e01614db0565b60008180421115611cba5760405163dae7ca7d60e01b815260048101829052426024820152604401610600565b84515185901580611cd2575080515160208201515114155b80611cef5750604081015151815151611cec906001614d35565b14155b15611d0d5760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168660400151600081518110611d4e57611d4e614d4d565b60200260200101516001600160a01b031614611d7b5785604001516000815181106106cf576106cf614d4d565b6000611d9487600001518860200151896040015161237d565b9050611dba81600081518110611dac57611dac614d4d565b602002602001015134612fdb565b611dcf348289602001518a604001518a6134c5565b935083881115611dfc576040516313fab00360e21b81526004810189905260248101859052604401610600565b505050949350505050565b6000808280421115611e355760405163dae7ca7d60e01b815260048101829052426024820152604401610600565b6000611e488d8d8d61ffff166002613a06565b90506000816001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eae9190614d93565b6001600160a01b03168e6001600160a01b0316141590508015611ecf579899985b611edd828c8c8c8c8c613baf565b90955093508015611eec579293925b505050995099975050505050505050565b604051634c7cffbd60e01b815262ffffff821660048201526000906001600160a01b03841690634c7cffbd90602401602060405180830381865afa158015611f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6d9190614d63565b9392505050565b60008180421115611fa15760405163dae7ca7d60e01b815260048101829052426024820152604401610600565b84515185901580611fb9575080515160208201515114155b80611fd65750604081015151815151611fd3906001614d35565b14155b15611ff45760405163b91b4d4d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866040015160008151811061203557612035614d4d565b60200260200101516001600160a01b0316146120625785604001516000815181106106cf576106cf614d4d565b600061207b87600001518860200151896040015161237d565b90506000876040015182518151811061209657612096614d4d565b60209081029190910101516040516370a0823160e01b81526001600160a01b0389811660048301529192506000918316906370a0823190602401602060405180830381865afa1580156120ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121119190614d63565b905061212983600081518110611dac57611dac614d4d565b61213d838a602001518b604001518b61254c565b6040516370a0823160e01b81526001600160a01b0389811660048301528291908416906370a0823190602401602060405180830381865afa158015612186573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121aa9190614d63565b6121b49190614d7c565b9550858a11156121e1576040516313fab00360e21b8152600481018b905260248101879052604401610600565b5050505050949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561224c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122709190614d93565b6001600160a01b0316336001600160a01b0316146122a157604051635d9515b960e11b815260040160405180910390fd5b6040516305feb5ff60e21b81526001600160a01b038716906317fad7fc906122d790309089908990899089908990600401614e5e565b600060405180830381600087803b1580156122f157600080fd5b505af1158015612305573d6000803e3d6000fd5b50505050505050505050565b60405163f5e2932960e01b8152600481018290526000906001600160a01b0384169063f5e2932990602401602060405180830381865afa158015612359573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6d9190614e9e565b6060835167ffffffffffffffff811115612399576123996144da565b6040519080825280602002602001820160405280156123c2578160200160208202803683370190505b509050600080836000815181106123db576123db614d4d565b6020026020010151905060005b83518110156124835781925084816001018151811061240957612409614d4d565b60200260200101519150612451838389848151811061242a5761242a614d4d565b602002602001015189858151811061244457612444614d4d565b60200260200101516141a6565b84828151811061246357612463614d4d565b6001600160a01b03909216602092830291909101909101526001016123e8565b5050509392505050565b604080516001600160a01b038581166024830152848116604483015260648083018590528351808403909101815260849092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b17905290600090612502908716836142a7565b9050600081511180156125265750808060200190518101906125249190614ebb565b155b156125445760405163197138bd60e11b815260040160405180910390fd5b505050505050565b60008060008060008660008151811061256757612567614d4d565b6020026020010151905060005b89518110156123055789818151811061258f5761258f614d4d565b602002602001015192508881815181106125ab576125ab614d4d565b602002602001015194508195508781600101815181106125cd576125cd614d4d565b6020026020010151915089518160010114612604578981600101815181106125f7576125f7614d4d565b6020026020010151612606565b865b9350600085600281111561261c5761261c614ed8565b14156128c357600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612663573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126879190614f05565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156127bc576040516370a0823160e01b81526001600160a01b03868116600483015260009184918b16906370a0823190602401602060405180830381865afa158015612703573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127279190614d63565b039050600061273782858561436d565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b15801561279d57600080fd5b505af11580156127b1573d6000803e3d6000fd5b5050505050506128bc565b6040516370a0823160e01b81526001600160a01b03868116600483015260009183918b16906370a0823190602401602060405180830381865afa158015612807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282b9190614d63565b039050600061283b82848661436d565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038b811660448401526080606484015260848301919091529192509088169063022c0d9f9060a401600060405180830381600087803b1580156128a157600080fd5b505af11580156128b5573d6000803e3d6000fd5b5050505050505b5050612aac565b60018560028111156128d7576128d7614ed8565b14156129c357826001600160a01b03166353c059a0846001600160a01b031663b7d19fc46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561292a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061294e9190614d93565b60405160e083901b6001600160e01b03191681526001600160a01b03918216868316146004820152908716602482015260440160408051808303816000875af115801561299f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128bc9190614f4a565b826001600160a01b03166353c059a0846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a349190614d93565b60405160e083901b6001600160e01b03191681526001600160a01b0391821686831614600482015290871660248201526044016020604051808303816000875af1158015612a86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aaa9190614d63565b505b600101612574565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612b01576040519150601f19603f3d011682016040523d82523d6000602084013e612b06565b606091505b50509050806112605760405163047b96f760e41b81526001600160a01b038416600482015260248101839052604401610600565b6060825167ffffffffffffffff811115612b5657612b566144da565b604051908082528060200260200182016040528015612b7f578160200160208202803683370190505b5090508181855181518110612b9657612b96614d4d565b602090810291909101015283515b8015612fd257600084612bb8600184614d7c565b81518110612bc857612bc8614d4d565b60200260200101519050600087600184612be29190614d7c565b81518110612bf257612bf2614d4d565b60200260200101519050600087600185612c0c9190614d7c565b81518110612c1c57612c1c614d4d565b6020026020010151905060006002811115612c3957612c39614ed8565b826002811115612c4b57612c4b614ed8565b1415612d6e57600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612c92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cb69190614f05565b506001600160701b031691506001600160701b03169150888681518110612cdf57612cdf614d4d565b60200260200101516001600160a01b0316856001600160a01b03161115612d0257905b6000878781518110612d1657612d16614d4d565b60200260200101519050612d358383836144049092919063ffffffff16565b6001600160801b031688612d4a60018a614d7c565b81518110612d5a57612d5a614d4d565b602002602001018181525050505050612fbc565b6001826002811115612d8257612d82614ed8565b1415612eef577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635bdd4b7c82878781518110612dca57612dca614d4d565b6020026020010151866001600160a01b0316856001600160a01b03166316dc165b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e3e9190614d93565b6040516001600160e01b031960e087901b1681526001600160a01b0394851660048201526001600160801b0390931660248401529092169190911460448201526064016040805180830381865afa158015612e9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec19190614f4a565b5085612ece600187614d7c565b81518110612ede57612ede614d4d565b602002602001018181525050612fbc565b612f8881868681518110612f0557612f05614d4d565b6020026020010151856001600160a01b0316846001600160a01b03166305e8746d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f799190614d93565b6001600160a01b0316146118e3565b50506001600160801b031685612f9f600187614d7c565b81518110612faf57612faf614d4d565b6020026020010181815250505b5050508080612fca90614f6e565b915050612ba4565b50949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561303657600080fd5b505af115801561304a573d6000803e3d6000fd5b506130869350506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915084905083613950565b5050565b600080600080600080886000815181106130a6576130a6614d4d565b6020026020010151905060005b8b518110156134b6578b81815181106130ce576130ce614d4d565b602002602001015193508a81815181106130ea576130ea614d4d565b6020026020010151925081955089816001018151811061310c5761310c614d4d565b602002602001015191508b518160010114613143578b816001018151811061313657613136614d4d565b6020026020010151613145565b875b9450600083600281111561315b5761315b614ed8565b14156132675788816001018151811061317657613176614d4d565b60200260200101519650816001600160a01b0316866001600160a01b0316101561321a5760405163022c0d9f60e01b8152600060048201819052602482018990526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4015b600060405180830381600087803b1580156131fd57600080fd5b505af1158015613211573d6000803e3d6000fd5b505050506134ae565b60405163022c0d9f60e01b8152600481018890526000602482018190526001600160a01b03878116604484015260806064840152608483019190915285169063022c0d9f9060a4016131e3565b600183600281111561327b5761327b614ed8565b1415613384576000846001600160a01b031663b7d19fc46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132e59190614d93565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291908816906353c059a09060440160408051808303816000875af1158015613342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133669190614f4a565b9150915082156133785780995061337c565b8199505b5050506134ae565b6000846001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133e89190614d93565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052888316602483015292506000918291613482918916906353c059a0906044015b6020604051808303816000875af115801561344a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061346e9190614d63565b6001600160801b0381169160809190911c90565b6001600160801b031691506001600160801b0316915082156134a6578099506134aa565b8199505b5050505b6001016130b3565b50505050505095945050505050565b600080600080600080876000815181106134e1576134e1614d4d565b602002602001015190508a955060005b8a518110156134b6578a818151811061350c5761350c614d4d565b6020026020010151925089818151811061352857613528614d4d565b6020026020010151945081955088816001018151811061354a5761354a614d4d565b602002602001015191508a518160010114613581578a816001018151811061357457613574614d4d565b6020026020010151613583565b875b9350600085600281111561359957613599614ed8565b141561375457600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156135e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136049190614f05565b506001600160701b031691506001600160701b03169150836001600160a01b0316886001600160a01b031610156136c35761364089838361436d565b60405163022c0d9f60e01b8152600060048201819052602482018390526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b1580156136a657600080fd5b505af11580156136ba573d6000803e3d6000fd5b5050505061374d565b6136ce89828461436d565b60405163022c0d9f60e01b8152600481018290526000602482018190526001600160a01b038981166044840152608060648401526084830191909152919a509086169063022c0d9f9060a401600060405180830381600087803b15801561373457600080fd5b505af1158015613748573d6000803e3d6000fd5b505050505b5050613948565b600185600281111561376857613768614ed8565b1415613871576000836001600160a01b031663b7d19fc46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137d29190614d93565b60405163029e02cd60e51b81526001600160a01b039182168583161460048201819052878316602483015292506000918291908716906353c059a09060440160408051808303816000875af115801561382f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138539190614f4a565b91509150821561386557809950613869565b8199505b505050613948565b6000836001600160a01b031663da10610c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138d59190614d93565b60405163029e02cd60e51b81526001600160a01b03918216858316146004820181905287831660248301529250600091829161391c918816906353c059a09060440161342b565b6001600160801b031691506001600160801b03169150821561394057809950613944565b8199505b5050505b6001016134f1565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092019092526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052906000906139bd908616836142a7565b9050600081511180156139e15750808060200190518101906139df9190614ebb565b155b156139ff5760405163197138bd60e11b815260040160405180910390fd5b5050505050565b60006001826002811115613a1c57613a1c614ed8565b1415613ac65760405163704037bd60e01b81526001600160a01b0386811660048301528581166024830152604482018590527f0000000000000000000000000000000000000000000000000000000000000000169063704037bd90606401608060405180830381865afa158015613a97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613abb9190614f85565b602001519050613b66565b60405163704037bd60e01b81526001600160a01b0386811660048301528581166024830152604482018590527f0000000000000000000000000000000000000000000000000000000000000000169063704037bd90606401608060405180830381865afa158015613b3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b5f9190614f85565b6020015190505b6001600160a01b038116613ba757604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610600565b949350505050565b6000806000886001600160a01b031663c9939f5e338689896040518563ffffffff1660e01b8152600401613be69493929190614fec565b6000604051808303816000875af1158015613c05573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613c2d919081019061502a565b905060005b8151811015613cc157613c64828281518110613c5057613c50614d4d565b60200260200101516001600160801b031690565b613c77906001600160801b031685614d35565b9350613c9c828281518110613c8e57613c8e614d4d565b602002602001015160801c90565b613caf906001600160801b031684614d35565b9250613cba816150b0565b9050613c32565b5087831080613ccf57508682105b15613d05576040516318ccfb7760e11b815260048101899052602481018490526044810188905260648101839052608401610600565b50965096945050505050565b600080600080606080876101c0013580421115613d4a5760405163dae7ca7d60e01b815260048101829052426024820152604401610600565b613d586101408a018a6150cb565b9050613d686101208b018b6150cb565b9050141580613d955750613d806101608a018a6150cb565b9050613d906101208b018b6150cb565b905014155b15613db35760405163b91b4d4d60e01b815260040160405180910390fd5b62ffffff60e08a01351180613dcf575062ffffff6101008a0135115b15613dfe5760405163197a55c760e11b815260e08a013560048201526101008a01356024820152604401610600565b6000613e0e6101208b018b6150cb565b905067ffffffffffffffff811115613e2857613e286144da565b604051908082528060200260200182016040528015613e51578160200160208202803683370190505b509050613e626101208b018b6150cb565b905067ffffffffffffffff811115613e7c57613e7c6144da565b604051908082528060200260200182016040528015613ea5578160200160208202803683370190505b5093506000896001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ee8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f0c9190614e9e565b62ffffff169050808b61010001358c60e00135011080613f3657508a60e001358b61010001358201105b15613f6c57604051637d50edab60e11b815260e08c013560048201526101008c0135602482015260448101829052606401610600565b60005b825181101561406f576000613f886101208e018e6150cb565b83818110613f9857613f98614d4d565b90506020020135830190506000811280613fb4575062ffffff81115b15613fd5576040516370a82e6160e11b815260048101829052602401610600565b80878381518110613fe857613fe8614d4d565b60209081029190910101526140496140046101408f018f6150cb565b8481811061401457614014614d4d565b905060200201358e80610160019061402c91906150cb565b8581811061403c5761403c614d4d565b90506020020135836144a0565b84838151811061405b5761405b614d4d565b602090810291909101015250600101613f6f565b50506000808a6001600160a01b031663383d15c58d6101800160208101906140979190614db0565b858f6101a00160208101906140ac9190614db0565b6040518463ffffffff1660e01b81526004016140ca93929190615115565b6000604051808303816000875af11580156140e9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141119190810190615179565b6001600160801b0383169c50608083901c9b509650909250905060a08c01358a108061414057508b60c0013589105b1561417c576040516318ccfb7760e11b815260a08d01356004820152602481018b905260c08d01356044820152606481018a9052608401610600565b6001600160801b0381169750608081901c6001600160801b03169650505050509295509295509295565b6000808260028111156141bb576141bb614ed8565b141561429b5760405163e6a4390560e01b81526001600160a01b03868116600483015285811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa15801561422f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142539190614d93565b90506001600160a01b03811661429657604051636b2471d160e11b81526001600160a01b0380871660048301528516602482015260448101849052606401610600565b613ba7565b61139c85858585613a06565b6060600080846001600160a01b0316846040516142c4919061521f565b6000604051808303816000865af19150503d8060008114614301576040519150601f19603f3d011682016040523d82523d6000602084013e614306565b606091505b5091509150811561434657805115801561432857506001600160a01b0385163b155b1561429657604051633b99915360e21b815260040160405180910390fd5b8051614365576040516373483fab60e11b815260040160405180910390fd5b805181602001fd5b60008361438d5760405163b229ed3360e01b815260040160405180910390fd5b821580614398575081155b156143b6576040516398c59a2960e01b815260040160405180910390fd5b60006143c4856103e561525a565b905060006143d2848361525a565b90506000826143e3876103e861525a565b6143ed9190614d35565b90506143f98183615279565b979650505050505050565b6000836144245760405163b229ed3360e01b815260040160405180910390fd5b82158061442f575081155b1561444d576040516398c59a2960e01b815260040160405180910390fd5b6000614459858561525a565b614465906103e861525a565b905060006144738685614d7c565b61447f906103e561525a565b905061448b8183615279565b614496906001614d35565b9695505050505050565b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff82168117613ba7565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715614513576145136144da565b60405290565b6040516080810167ffffffffffffffff81118282101715614513576145136144da565b604051601f8201601f1916810167ffffffffffffffff81118282101715614565576145656144da565b604052919050565b600067ffffffffffffffff821115614587576145876144da565b5060051b60200190565b600082601f8301126145a257600080fd5b813560206145b76145b28361456d565b61453c565b82815260059290921b840181019181810190868411156145d657600080fd5b8286015b848110156145f157803583529183019183016145da565b509695505050505050565b6001600160a01b038116811461461157600080fd5b50565b803561461f816145fc565b919050565b600082601f83011261463557600080fd5b813560206146456145b28361456d565b82815260059290921b8401810191818101908684111561466457600080fd5b8286015b848110156145f157803561467b816145fc565b8352918301918301614668565b60006060828403121561469a57600080fd5b6146a26144f0565b9050813567ffffffffffffffff808211156146bc57600080fd5b6146c885838601614591565b83526020915081840135818111156146df57600080fd5b8401601f810186136146f057600080fd5b80356146fe6145b28261456d565b81815260059190911b8201840190848101908883111561471d57600080fd5b928501925b828410156147495783356003811061473a5760008081fd5b82529285019290850190614722565b808688015250505050604084013591508082111561476657600080fd5b5061477384828501614624565b60408301525092915050565b600080600080600060a0868803121561479757600080fd5b8535945060208601359350604086013567ffffffffffffffff8111156147bc57600080fd5b6147c888828901614688565b93505060608601356147d9816145fc565b949793965091946080013592915050565b6000806000806080858703121561480057600080fd5b84359350602085013567ffffffffffffffff81111561481e57600080fd5b61482a87828801614688565b935050604085013561483b816145fc565b9396929550929360600135925050565b600081518084526020808501945080840160005b8381101561487b5781518752958201959082019060010161485f565b509495945050505050565b602081526000611f6d602083018461484b565b6000806000606084860312156148ae57600080fd5b83356148b9816145fc565b925060208401356148c9816145fc565b929592945050506040919091013590565b62ffffff8116811461461157600080fd5b61ffff8116811461461157600080fd5b803561461f816148eb565b6000806000806080858703121561491c57600080fd5b8435614927816145fc565b93506020850135614937816145fc565b92506040850135614947816148da565b91506060850135614957816148eb565b939692955090935050565b600080600080600080600080610100898b03121561497f57600080fd5b883561498a816145fc565b9750602089013561499a816148eb565b96506040890135955060608901359450608089013567ffffffffffffffff808211156149c557600080fd5b6149d18c838d01614591565b955060a08b01359150808211156149e757600080fd5b506149f48b828c01614591565b93505060c0890135614a05816145fc565b8092505060e089013590509295985092959890939650565b600060208284031215614a2f57600080fd5b813567ffffffffffffffff811115614a4657600080fd5b82016101e08185031215611f6d57600080fd5b86815285602082015284604082015283606082015260c060808201526000614a8460c083018561484b565b82810360a0840152614a96818561484b565b9998505050505050505050565b6001600160801b038116811461461157600080fd5b801515811461461157600080fd5b600080600060608486031215614adb57600080fd5b8335614ae6816145fc565b92506020840135614af681614aa3565b91506040840135614b0681614ab8565b809150509250925092565b60008060008060008060008060006101208a8c031215614b3057600080fd5b8935614b3b816145fc565b985060208a0135614b4b816145fc565b9750614b5960408b016148fb565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff80821115614b8457600080fd5b614b908d838e01614591565b955060c08c0135915080821115614ba657600080fd5b50614bb38c828d01614591565b935050614bc260e08b01614614565b91506101008a013590509295985092959850929598565b60008060408385031215614bec57600080fd5b8235614bf7816145fc565b91506020830135614c07816148da565b809150509250929050565b60008083601f840112614c2457600080fd5b50813567ffffffffffffffff811115614c3c57600080fd5b6020830191508360208260051b8501011115614c5757600080fd5b9250929050565b60008060008060008060808789031215614c7757600080fd5b8635614c82816145fc565b95506020870135614c92816145fc565b9450604087013567ffffffffffffffff80821115614caf57600080fd5b614cbb8a838b01614c12565b90965094506060890135915080821115614cd457600080fd5b50614ce189828a01614c12565b979a9699509497509295939492505050565b60008060408385031215614d0657600080fd5b8235614d11816145fc565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b60008219821115614d4857614d48614d1f565b500190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215614d7557600080fd5b5051919050565b600082821015614d8e57614d8e614d1f565b500390565b600060208284031215614da557600080fd5b8151611f6d816145fc565b600060208284031215614dc257600080fd5b8135611f6d816145fc565b600080600060608486031215614de257600080fd5b8351614ded81614aa3565b6020850151909350614dfe81614aa3565b6040850151909250614b0681614aa3565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614e4157600080fd5b8260051b8083602087013760009401602001938452509192915050565b60006001600160a01b03808916835280881660208401525060806040830152614e8b608083018688614e0f565b8281036060840152614a96818587614e0f565b600060208284031215614eb057600080fd5b8151611f6d816148da565b600060208284031215614ecd57600080fd5b8151611f6d81614ab8565b634e487b7160e01b600052602160045260246000fd5b80516001600160701b038116811461461f57600080fd5b600080600060608486031215614f1a57600080fd5b614f2384614eee565b9250614f3160208501614eee565b9150604084015163ffffffff81168114614b0657600080fd5b60008060408385031215614f5d57600080fd5b505080516020909101519092909150565b600081614f7d57614f7d614d1f565b506000190190565b600060808284031215614f9757600080fd5b614f9f614519565b8251614faa816148eb565b81526020830151614fba816145fc565b60208201526040830151614fcd81614ab8565b60408201526060830151614fe081614ab8565b60608201529392505050565b60006001600160a01b03808716835280861660208401525060806040830152615018608083018561484b565b82810360608401526143f9818561484b565b6000602080838503121561503d57600080fd5b825167ffffffffffffffff81111561505457600080fd5b8301601f8101851361506557600080fd5b80516150736145b28261456d565b81815260059190911b8201830190838101908783111561509257600080fd5b928401925b828410156143f957835182529284019290840190615097565b60006000198214156150c4576150c4614d1f565b5060010190565b6000808335601e198436030181126150e257600080fd5b83018035915067ffffffffffffffff8211156150fd57600080fd5b6020019150600581901b3603821315614c5757600080fd5b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b8181101561516057855183529483019491830191600101615144565b5050809450505080851660408501525050949350505050565b60008060006060848603121561518e57600080fd5b835192506020808501519250604085015167ffffffffffffffff8111156151b457600080fd5b8501601f810187136151c557600080fd5b80516151d36145b28261456d565b81815260059190911b820183019083810190898311156151f257600080fd5b928401925b82841015615210578351825292840192908401906151f7565b80955050505050509250925092565b6000825160005b818110156152405760208186018101518583015201615226565b8181111561524f576000828501525b509190910192915050565b600081600019048311821515161561527457615274614d1f565b500290565b60008261529657634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212200c5e67a8a9dcc28550da8ae6c830faddf1b899d28d4652955e6a1ad8f3d7c15764736f6c634300080a00330000000000000000000000005a5c0c4832828ff878ce3ab4fec44d21200b14960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004200000000000000000000000000000000000006