0 txs
0 calls
constructor
No constructor.
functions
getExecutionPriceForDecrease
viewfunction getExecutionPriceForDecrease(tuple params, tuple indexTokenPrice) view returns (int256, uint256, uint256)
getExecutionPriceForIncrease
viewfunction getExecutionPriceForIncrease(tuple params, tuple indexTokenPrice) view returns (int256, int256, uint256, uint256)
getPositionPnlUsd
viewfunction getPositionPnlUsd(DataStore dataStore, tuple market, tuple prices, tuple position, uint256 sizeDeltaUsd) view returns (int256, int256, uint256)
isPositionLiquidatable
viewfunction isPositionLiquidatable(DataStore dataStore, IReferralStorage referralStorage, tuple position, tuple market, tuple prices, bool shouldValidateMinCollateralUsd) view returns (bool, string, tuple)
validatePosition
viewfunction validatePosition(DataStore dataStore, IReferralStorage referralStorage, tuple position, tuple market, tuple prices, bool shouldValidateMinPositionSize, bool shouldValidateMinCollateralUsd) view
willPositionCollateralBeSufficient
viewfunction willPositionCollateralBeSufficient(DataStore dataStore, tuple market, tuple prices, address collateralToken, bool isLong, tuple values) view returns (bool, int256)
events
No events.
errors
DisabledMarket
error DisabledMarket(address market)
EmptyMarket
error EmptyMarket()
EmptySizeDeltaInTokens
error EmptySizeDeltaInTokens()
InvalidCollateralTokenForMarket
error InvalidCollateralTokenForMarket(address market, address token)
InvalidPositionSizeValues
error InvalidPositionSizeValues(uint256 sizeInUsd, uint256 sizeInTokens)
LiquidatablePosition
error LiquidatablePosition(string reason, int256 remainingCollateralUsd, int256 minCollateralUsd, int256 minCollateralUsdForLeverage)
MinPositionSize
error MinPositionSize(uint256 positionSizeInUsd, uint256 minPositionSizeUsd)
NegativeExecutionPrice
error NegativeExecutionPrice(int256 executionPrice, uint256 price, uint256 positionSizeInUsd, int256 priceImpactUsd, uint256 sizeDeltaUsd)
OrderNotFulfillableAtAcceptablePrice
error OrderNotFulfillableAtAcceptablePrice(uint256 price, uint256 acceptablePrice)
PRBMath__MulDivFixedPointOverflow
error PRBMath__MulDivFixedPointOverflow(uint256 prod1)
PRBMathUD60x18__Exp2InputTooBig
error PRBMathUD60x18__Exp2InputTooBig(uint256 x)
PRBMathUD60x18__LogInputTooSmall
error PRBMathUD60x18__LogInputTooSmall(uint256 x)
PriceImpactLargerThanOrderSize
error PriceImpactLargerThanOrderSize(int256 priceImpactUsd, uint256 sizeDeltaUsd)
UnableToGetCachedTokenPrice
error UnableToGetCachedTokenPrice(address token, address market)
UnexpectedBorrowingFactor
error UnexpectedBorrowingFactor(uint256 positionBorrowingFactor, uint256 cumulativeBorrowingFactor)
UsdDeltaExceedsLongOpenInterest
error UsdDeltaExceedsLongOpenInterest(int256 usdDelta, uint256 longOpenInterest)
UsdDeltaExceedsShortOpenInterest
error UsdDeltaExceedsShortOpenInterest(int256 usdDelta, uint256 shortOpenInterest)
creation bytecode
0x6157e46200003b600b82828239805160001a60731461002e57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100775760003560e01c8063358daa891461007c5780637396d38c146100b457806381db61b8146100d6578063d7e3321114610104578063dac6485714610117578063e22de79314610141578063f8b5633414610154575b600080fd5b61008f61008a366004614fd7565b610176565b6040805194855260208501939093529183015260608201526080015b60405180910390f35b8180156100c057600080fd5b506100d46100cf3660046150ff565b6103df565b005b6100e96100e4366004614fd7565b610532565b604080519384526020840192909252908201526060016100ab565b6100d461011236600461515a565b6106c1565b61012a6101253660046151f2565b61087c565b6040805192151583526020830191909152016100ab565b6100e961014f3660046152ad565b610948565b610167610162366004615311565b610ca8565b6040516100ab939291906153da565b60008060008061018f8660400151602001516040015190565b6000036101c25760008060006101b56101ae8a60800151604001515190565b89906110c4565b93509350935093506103d6565b600061022c60405180608001604052808960000151600001516001600160a01b031681526020018960200151815260200161020e6102098b60400151602001516040015190565b6110e1565b81526020016102238a60400151604001515190565b1515905261114f565b87515160208901515160408a0151929350610259928990859061025490602001516040015190565b6111f7565b90506000808213156102835761027287602001516110e1565b61027c9083615446565b9050610294565b610291828860000151611277565b90505b60006102a68960800151604001515190565b156102d45787602001516102c38a60400151602001516040015190565b6102cd9190615474565b90506102f4565b6102f16102ea8a60400151602001516040015190565b89516112eb565b90505b60006103068a60800151604001515190565b156103265782610315836110e1565b61031f9190615488565b905061033d565b82610330836110e1565b61033a91906154b0565b90505b600081121561037e578361035a8b60400151602001516040015190565b6040516378320e4960e11b81526004016103759291906154d7565b60405180910390fd5b60006103bb6103968c60400151602001516040015190565b61039f8461130e565b60408e01516020015160a0015160808f01516040015151611360565b905084846103c88461130e565b919a50985096509450505050505b92959194509250565b60405163034aadf760e61b815273091821658bc02784e90c700e34382d1657242cb79063d2ab7dc09061041c90879087908790879060040161555b565b60006040518083038186803b15801561043457600080fd5b505af4158015610448573d6000803e3d6000fd5b5050604051631450a87960e01b815273091821658bc02784e90c700e34382d1657242cb79250631450a879915061048c90879087908790879060019060040161558e565b60006040518083038186803b1580156104a457600080fd5b505af41580156104b8573d6000803e3d6000fd5b5050604051631450a87960e01b815273091821658bc02784e90c700e34382d1657242cb79250631450a87991506104fc90879087908790879060009060040161558e565b60006040518083038186803b15801561051457600080fd5b505af4158015610528573d6000803e3d6000fd5b5050505050505050565b60008060008061054b8660400151602001516040015190565b90508060000361057f5760008061057361056b8960800151604001515190565b8890156110c4565b935093509350506106ba565b6105a360405180606001604052806000815260200160008152602001600081525090565b604080516080810182528851516001600160a01b031681526020808a0151908201526105dd9181016105d4856110e1565b61020e906155d4565b8082528751516020890151516105f5928990866111f7565b8082526000131561065f5786515160208801515160009161061691836113e3565b90506000610627610209858461140f565b610630906155d4565b9050808360000151121561065c5782516106539061064e90836154b0565b61130e565b60208401528083525b50505b6106a1866106738960800151602001515190565b60808a01516020908101510151845160408c01516020015160a0015187919060808e01516040015151611428565b6040820181905281516020909201519195509093509150505b9250925092565b60208501515115806106d857506020808601510151155b1561070357602085810151805191015160405163bff65b3f60e01b81526103759291906004016154d7565b6107118785600001516115d4565b6107268461072187516040015190565b611662565b8115610824576000876001600160a01b031663bd02d0f56040516020016107769060208082526015908201527413525397d413d4d2551253d397d4d2569157d554d1605a1b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016107aa91815260200190565b602060405180830381865afa1580156107c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107eb91906155f0565b9050806107fa87602001515190565b101561082257602086015151816040516342f7d98d60e11b81526004016103759291906154d7565b505b60008060006108378a8a8a8a8a89610ca8565b92509250925082156108705781816000015182602001518360400151604051631782422160e31b81526004016103759493929190615609565b50505050505050505050565b600080600061088c868989611692565b9050600061089d82600001516110e1565b6108aa86602001516110e1565b6108b49190615638565b90506000856040015112156108d55760408501516108d29082615488565b90505b60008112156108eb5760009350915061093d9050565b60006108fd8b8b88606001518a61172c565b9050600061090f8c8c60000151611765565b90508181111561091d578091505b600061093061020989600001518561140f565b8412159650929450505050505b965096945050505050565b60008060006109ba60405180610180016040528060008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60006109d56109cb88604001515190565b89519060006117de565b90506109f4816109ea89602090810151015190565b6102099190615668565b8252604087015151610a20578151610a1161020989602001515190565b610a1b91906154b0565b610a3b565b610a2f61020988602001515190565b8251610a3b91906154b0565b602083018190526040830181905260001215610bba57604087015151610a65578860600151610a6b565b88604001515b6001600160a01b031660608301819052610a88908b908b90611817565b6080830152604087015151610aa257604088015151610aa9565b6020880151515b60a083018190526080830151610abf9190615668565b60c08301528751610ae1908b908b90610ada8b604001515190565b60016118b5565b60e08301528851604088015151610b57918c918560e001518660c00151604051602001610b3c906020808252601a90820152794d41585f504e4c5f464143544f525f464f525f5452414445525360301b604082015260600190565b60405160208183030381529060405280519060200120611941565b610100830181905260e083015114801590610b7757506000826101000151135b8015610b87575060008260e00151135b15610bba57610bb4610b9c836020015161130e565b836101000151610baf8560e0015161130e565b611991565b60208301525b85610bc788602001515190565b03610be05760208088015101515b610120830152610c3a565b60408701515115610c1357610bd586610bfe89602090810151015190565b610c089190615668565b6020890151516112eb565b6020878101518051910151610c29908890615668565b610c339190615474565b6101208301525b610c5c8260200151836101200151610c578a602090810151015190565b6119d1565b61014083015260408201516101208301516020808a01510151610c809291906119d1565b610160830181905261014083015161012090930151929b909a50919850909650505050505050565b60006060610cb4614707565b610cbc614728565b610cc4614707565b610cd78b89898c61014f8e602001515190565b50508252610cf1610cea8a516040015190565b8989611692565b6040830181905251610d088a602001516040015190565b610d129190615668565b6060830152610d266102098a602001515190565b610d2f906155d4565b826080018181525050610d7160405180608001604052808d6001600160a01b031681526020018a8152602001846080015181526020016102238c604001515190565b60a08301819052600080821360c085015213610d9357600060a0830152610de1565b6000610da38c8a600001516119de565b90506000610dbf610209610db98d602001515190565b8461140f565b610dc8906155d4565b9050808460a001511215610dde5760a084018190525b50505b60006040518061014001604052808d6001600160a01b031681526020018c6001600160a01b031681526020018b8152602001846040015181526020018460c00151151581526020018a604001516001600160a01b031681526020018a606001516001600160a01b03168152602001610e5b8c602001515190565b81526000602082018190526040909101819052909150610e7a826119f8565b90506000846040015160000151826101e00151610e979190615668565b9050610ea2816110e1565b60a086015186516060880151610eb7906110e1565b610ec19190615488565b610ecb9190615488565b610ed591906154b0565b84528a51610ee4908f90611765565b6020860152610f05610209610efb8e602001515190565b876020015161140f565b6040850152881561101457610fcd8e6001600160a01b031663bd02d0f5604051602001610f589060208082526012908201527113525397d0d3d31310551154905317d554d160721b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401610f8c91815260200190565b602060405180830381865afa158015610fa9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020991906155f0565b602085018190528451121561101457505060408051808201909152600e81526d1b5a5b8818dbdb1b185d195c985b60921b60208201526001965094509092506110b8915050565b835160001261104a57505060408051808201909152600381526203c20360ec1b60208201526001965094509092506110b8915050565b60408401518451121561109c57505060408051808201909152601b81527a6d696e20636f6c6c61746572616c20666f72206c6576657261676560281b60208201526001965094509092506110b8915050565b5050604080516020810190915260008082529650945090925050505b96509650969350505050565b6000816110d25782516110d8565b82602001515b90505b92915050565b60006001600160ff1b0382111561114b5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401610375565b5090565b60008061115b83611c67565b90506000611176846000015185602001516000015184611caa565b905060008112611187579392505050565b6000806111a08660000151876020015160200151611dbb565b91509150816111b3575090949350505050565b60006111bf8783611ed1565b905060006111da886000015189602001516000015184611caa565b90508481126111e957846111eb565b805b98975050505050505050565b60008083121561120857508161126e565b60006112148787611f4b565b9050600061122b8660000151836102099190615668565b905080851315611239578094505b6000611247898960016113e3565b90506000611258610209878461140f565b905080871315611266578096505b869450505050505b95945050505050565b6000808312156112b95761128a826110e1565b611293836110e1565b61129d90856154b0565b6112a8906001615488565b6112b29190615446565b90506110db565b6112c2826110e1565b60016112cd846110e1565b6112d79086615488565b6112e191906154b0565b6110d89190615446565b60008160016112fa828661567f565b6113049190615692565b6110d89190615474565b60008082121561114b5760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f7369746976656044820152606401610375565b60008360000361138357604051633df4253160e01b815260040160405180910390fd5b600061138f8587615474565b905082801561139e5750838111155b806113b25750821580156113b25750838110155b156113be5790506113db565b808460405163e09ad0e960e01b81526004016103759291906154d7565b949350505050565b60008060006113f28686611f65565b91509150836114015780611403565b815b925050505b9392505050565b60006110d8838368327cb2734119d3b7a9601e1b612079565b600061144e60405180606001604052806000815260200160008152602001600081525090565b6114598984156110c4565b808252602082015285158015906114705750600087115b1561156f578261148857611483856155d4565b61148a565b845b6040820181905260001380156114af5750856114ad826040015161064e906155d4565b115b156114d5578060400151866040516378320e4960e11b81526004016103759291906154d7565b60006114e0876110e1565b6114ef8a84604001518b611991565b6114f99190615446565b905060008161150b84600001516110e1565b6115159190615488565b9050600081121561155e578251604080850151905163cc32db9960e01b8152600481018490526024810192909252604482018c905260648201526084810189905260a401610375565b6115678161130e565b602084015250505b828015611580575083816020015110155b80611598575082158015611598575083816020015111155b156115a8576020015190506115c9565b80602001518460405163e09ad0e960e01b81526004016103759291906154d7565b979650505050505050565b60405163a8d8fff560e01b815260009073846d1b8c17adfa67fffefe83b7dbebfd598f91069063a8d8fff59061161090869086906004016156a5565b608060405180830381865af415801561162d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165191906156bf565b905061165d8382612086565b505050565b61166c828261214f565b61168e5781516040516341ce349f60e11b8152610375919083906004016156a5565b5050565b61169a61476d565b82604001516001600160a01b0316846001600160a01b0316036116c257506020810151611408565b82606001516001600160a01b0316846001600160a01b0316036116ea57506040810151611408565b82602001516001600160a01b0316846001600160a01b03160361170f57508051611408565b8251604051635f2394d160e11b81526103759186916004016156a5565b60008061173a868685612188565b905061174681856121db565b905060006117598787600001518661220b565b90506115c9828261140f565b6000826001600160a01b031663bd02d0f561177f84612285565b6040518263ffffffff1660e01b815260040161179d91815260200190565b602060405180830381865afa1580156117ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d891906155f0565b600082156117ff57816117f25783516117f8565b83602001515b9050611408565b8161180e5783602001516113db565b50509051919050565b60008061182c8460400151856060015161230b565b905080856001600160a01b031663bd02d0f561184c87600001518761233a565b6040518263ffffffff1660e01b815260040161186a91815260200190565b602060405180830381865afa158015611887573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ab91906155f0565b61126e9190615474565b6000806118c6610209888887612188565b905060006118d58888876123c2565b90508115806118e2575080155b156118f25760009250505061126e565b60006118ff8787876117de565b905060006119106102098385615668565b90506000876119285761192382866154b0565b611932565b61193285836154b0565b9b9a5050505050505050505050565b600080841215611952575082611987565b600061196088848989612409565b90506000611971610209868461140f565b90508086136119805785611982565b805b925050505b9695505050505050565b6000806119a7856119a186612484565b85612079565b9050600084136119c8576119ba816110e1565b6119c3906155d4565b61126e565b61126e816110e1565b60006113db838584611991565b6000826001600160a01b031663bd02d0f561177f84612495565b611a00614787565b6000611a3a8360000151846020015185606001518660800151611a268860400151515190565b604089015151602001518960e001516124ec565b90506000611a5084600001518560400151612976565b9050611a658460000151856060015183612a03565b606083015261012084015115611a9b57835160408501515160200151611a9591908660e001518760600151612b12565b60a08301525b8160a00151606001518260a0015160200151836060015160600151846060015160200151856101800151611acf919061567f565b611ad99190615692565b611ae3919061567f565b611aed9190615692565b61016083015260a08201516060908101518184015190910151611b10919061567f565b8261014001818151611b22919061567f565b90525083516040808601518051602081015190830151919092015151611b4a93929190612cb8565b604080840151606001919091528451908501515160200151611b7a919060a0870151604080890151015151612cd4565b604080840151608001919091528451908501515160200151611baa919060c0870151604080890151015151612cd4565b826040015160a0018181525050611bc982604001518560400151612cf0565b60408301528351606085015160e0860151610100870151611bec93929190612d6c565b82608001819052508161020001518260800151604001518360a0015160200151846060015160200151856101a00151611c25919061567f565b611c2f919061567f565b611c39919061567f565b611c439190615692565b6101c08301819052604083015151611c5a9161567f565b6101e08301525092915050565b611c6f6148b4565b6000611c85836000015184602001516001612188565b90506000611c9d846000015185602001516000612188565b90506113db848383612dd4565b600080611cbf83600001518460200151612ec6565b90506000611cd584604001518560600151612ec6565b6060850151604086015160208701518751939450909211159111151460006001600160a01b03881663bd02d0f5611d0b89612ee8565b6040518263ffffffff1660e01b8152600401611d2991815260200190565b602060405180830381865afa158015611d46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6a91906155f0565b90508115611d9d578383106000611d828a8a84612f2b565b9050611d9086868386612f3a565b9650505050505050611408565b600080611daa8a8a612f6c565b91509150611d908686848487613008565b6000806000846001600160a01b031663a6ed563e611dd886613051565b6040518263ffffffff1660e01b8152600401611df691815260200190565b602060405180830381865afa158015611e13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3791906155f0565b905080611e4b576000809250925050611eca565b6001856001600160a01b031663dc97d962611e6584613087565b6040518263ffffffff1660e01b8152600401611e8391815260200190565b602060405180830381865afa158015611ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec491906155f0565b92509250505b9250929050565b611ed96148b4565b6000806000841315611ef557611eee8461130e565b9050611f04565b611f0161064e856155d4565b91505b600085604001511215611f40576000611f24866040015161064e906155d4565b9050611f30818461567f565b9250611f3c818361567f565b9150505b61126e858383612dd4565b6000826001600160a01b031663bd02d0f561177f846130f2565b6000806000846001600160a01b031663bd02d0f5611f84866001613133565b6040518263ffffffff1660e01b8152600401611fa291815260200190565b602060405180830381865afa158015611fbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe391906155f0565b90506000856001600160a01b031663bd02d0f5612001876000613133565b6040518263ffffffff1660e01b815260040161201f91815260200190565b602060405180830381865afa15801561203c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206091906155f0565b90508082111561206e578091505b909590945092505050565b60006113db8484846131ad565b80516001600160a01b03166120ae576040516302fde0d760e11b815260040160405180910390fd5b6000826001600160a01b0316637ae1cfca6120cc8460000151613297565b6040518263ffffffff1660e01b81526004016120ea91815260200190565b602060405180830381865afa158015612107573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212b9190615726565b9050801561165d5781516040516309f8c93760e01b81526103759190600401615743565b600082604001516001600160a01b0316826001600160a01b031614806110d85750506060909101516001600160a01b0391821691161490565b60008061219d8460400151856060015161230b565b905060006121b6868660000151876040015187866132cf565b905060006121cf878760000151886060015188876132cf565b90506115c9818361567f565b6000808213156121f8576121ee82612484565b6112b2908461567f565b61220182612484565b6110d89084615692565b6000836001600160a01b031663bd02d0f56122268585613355565b6040518263ffffffff1660e01b815260040161224491815260200190565b602060405180830381865afa158015612261573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113db91906155f0565b60006040516020016122c09060208082526015908201527426a4a72fa1a7a62620aa22a920a62fa320a1aa27a960591b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b038416908201526060015b604051602081830303815290604052805190602001209050919050565b6000816001600160a01b0316836001600160a01b03161461232d576001612330565b60025b60ff169392505050565b600060405160200161236b906020808252600b908201526a1413d3d317d05353d5539560aa1b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b0380861691830191909152831660608201526080015b60405160208183030381529060405280519060200120905092915050565b6000806123d78460400151856060015161230b565b905060006123f0868660000151876040015187866133b3565b905060006121cf878760000151886060015188876133b3565b6000846001600160a01b031663bd02d0f56124258686866133d0565b6040518263ffffffff1660e01b815260040161244391815260200190565b602060405180830381865afa158015612460573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126e91906155f0565b60008082121561114b575060000390565b60006040516020016122c0906020808252602b908201527f4d41585f504f534954494f4e5f494d504143545f464143544f525f464f525f4c60408201526a49515549444154494f4e5360a81b606082015260800190565b6124f4614787565b6124fc614787565b60c0810187905280516001600160a01b03861660409091015260006125228a8a8861345f565b865160c081019290925260808201929092526001600160a01b039283166020820152929092529091508a1663bd02d0f561255c878a61377b565b6040518263ffffffff1660e01b815260040161257a91815260200190565b602060405180830381865afa158015612597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125bb91906155f0565b60e083018190528851906125d090869061140f565b6125da9190615474565b6101a08301526001600160a01b038a1663bd02d0f56125f8886137b4565b6040518263ffffffff1660e01b815260040161261691815260200190565b602060405180830381865afa158015612633573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265791906155f0565b6020830180519190915251511561271e57896001600160a01b031663bd02d0f56126888460200151600001516137e9565b6040518263ffffffff1660e01b81526004016126a691815260200190565b602060405180830381865afa1580156126c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e791906155f0565b60208084018051820192909252905101511561271e57612714826101a0015183602001516020015161140f565b6020830151604001525b8151511561281457815160808082015160a090920191909152825160c081015191015161274b919061567f565b825160600152815160c00151602080840151015111156127b6578151606001516020808401510151116127955760208083015101518251606001516127909190615692565b612797565b805b825160a090810191909152825101518111156127b657815160a0018190525b6127cd826101a00151836000015160a0015161140f565b825161012001526101a0820151825160c001516127ea919061140f565b8251610100908101919091528251908101516101209091015161280d919061567f565b825160e001525b8151610100015160208301516040015111612835578151610100015161283f565b8160200151604001515b6102008301819052825161012001516101a084015161285e9190615692565b6128689190615692565b6101008301526040516001600160a01b038b169063bd02d0f5906128bf906020016020808252601c908201527b2827a9a4aa24a7a72fa322a2afa922a1a2a4ab22a92fa320a1aa27a960211b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016128f391815260200190565b602060405180830381865afa158015612910573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293491906155f0565b610120830181905261010083015161294b9161140f565b61014083018190526101008301516129639190615692565b6101808301525098975050505050505050565b6000806129948461298985516020015190565b604086015151613822565b9050806129a684602001516060015190565b11156129d15760208301516060015181604051634cd96ac160e11b81526004016103759291906154d7565b60006129e284602001516060015190565b6129ec9083615692565b905061126e6129fd85602001515190565b8261140f565b612a0b6148b4565b612a136148b4565b8281528351612a229084615474565b816020018181525050846001600160a01b031663bd02d0f5604051602001612a7b906020808252601d908201527f424f52524f57494e475f4645455f52454345495645525f464143544f52000000604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401612aaf91815260200190565b602060405180830381865afa158015612acc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af091906155f0565b604082018190526020820151612b059161140f565b6060820152949350505050565b612b1a6148b4565b612b226148b4565b6000866001600160a01b031663bd02d0f5612b3c8861383d565b6040518263ffffffff1660e01b8152600401612b5a91815260200190565b602060405180830381865afa158015612b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9b91906155f0565b905080600003612bad575090506113db565b612bb7858261140f565b8083528451612bc691906112eb565b826020018181525050866001600160a01b031663bd02d0f5604051602001612c1f906020808252601f908201527f4c49515549444154494f4e5f4645455f52454345495645525f464143544f5200604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401612c5391815260200190565b602060405180830381865afa158015612c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9491906155f0565b604083018190526020830151612ca99161140f565b60608301525095945050505050565b6000846001600160a01b031663bd02d0f5612425868686613879565b6000846001600160a01b031663bd02d0f56124258686866138ff565b612cf86148dc565b612d1c8360600151612d0f84602001516080015190565b602085015151600161394c565b83526080830151612d4390612d36846020015160a0015190565b602085015151600061394c565b602084015260a0830151612d6090612d36846020015160c0015190565b60408401525090919050565b612d74614912565b612d7c614912565b6001600160a01b038316612d915790506113db565b6001600160a01b0383168152612da78684613983565b60208201819052855190612dbc90869061140f565b612dc69190615474565b604082015295945050505050565b612ddc6148b4565b60608401518390839015612e485760008660400151128015612e0d575084612e0b876040015161064e906155d4565b115b15612e335785604001518560405163756d7c9d60e11b81526004016103759291906154d7565b612e418587604001516121db565b9150612ea2565b60008660400151128015612e6b575083612e69876040015161064e906155d4565b115b15612e915785604001518460405163022bc34560e61b81526004016103759291906154d7565b612e9f8487604001516121db565b90505b60408051608081018252958652602086019490945292840152506060820152919050565b6000818311612ede57612ed98383615692565b6110d8565b6110d88284615692565b60006040516020016122c0906020808252601f908201527f504f534954494f4e5f494d504143545f4558504f4e454e545f464143544f5200604082015260600190565b60008060006113f28686612f6c565b600084841081612f5e612f4e888787613ac9565b612f59888888613ac9565b612ec6565b905060006111eb8284613ae2565b6000806000846001600160a01b031663bd02d0f5612f8b866001613b05565b6040518263ffffffff1660e01b8152600401612fa991815260200190565b602060405180830381865afa158015612fc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fea91906155f0565b90506000856001600160a01b031663bd02d0f5612001876000613b05565b600080613016878685613ac9565b90506000613025878686613ac9565b905060006130338383612ec6565b9050600061304382848611613ae2565b9a9950505050505050505050565b60006040516020016122c09060208082526010908201526f1592549515505317d513d2d15397d25160821b604082015260600190565b60006040516020016130ca906020808252601f908201527f5649525455414c5f494e56454e544f52595f464f525f504f534954494f4e5300604082015260600190565b60405160208183030381529060405280519060200120826040516020016122ee9291906154d7565b60006040516020016122c0906020808252601b908201527a1413d4d2551253d397d253541050d517d413d3d317d05353d55395602a1b604082015260600190565b6000604051602001613173906020808252601a908201527926a0ac2fa827a9a4aa24a7a72fa4a6a820a1aa2fa320a1aa27a960311b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b0385169082015282151560608201526080016123a4565b60008080600019858709858702925082811083820303915050806000036131e7578382816131dd576131dd61541a565b0492505050611408565b80841161322e5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401610375565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60006040516020016122c0906020808252601290820152711254d7d3505492d15517d11254d05093115160721b604082015260600190565b600081866001600160a01b031663bd02d0f56132ec888888613b41565b6040518263ffffffff1660e01b815260040161330a91815260200190565b602060405180830381865afa158015613327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334b91906155f0565b6119879190615474565b60006040516020016131739060208082526032908201527f4d494e5f434f4c4c41544552414c5f464143544f525f464f525f4f50454e5f49604082015271272a22a922a9aa2fa6aaa62a24a82624a2a960711b606082015260800190565b600081866001600160a01b031663bd02d0f56132ec888888613b74565b6000604051602001613404906020808252600e908201526d26a0ac2fa827262fa320a1aa27a960911b604082015260600190565b60408051601f1981840301815282825280516020918201209083015281018590526001600160a01b0384166060820152821515608082015260a0015b6040516020818303038152906040528051906020012090509392505050565b600080600080600080876001600160a01b03166385725b58886040518263ffffffff1660e01b81526004016134949190615743565b602060405180830381865afa1580156134b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134d591906155f0565b905060008080808415613723576040516306459e2360e51b8152600481018690526001600160a01b038d169063c8b3c46090602401602060405180830381865afa158015613527573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061354b9190615757565b935060008c6001600160a01b0316631582a018866040518263ffffffff1660e01b815260040161357b9190615743565b602060405180830381865afa158015613598573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135bc91906155f0565b60405163039af9eb60e01b8152600481018290529091506001600160a01b038e169063039af9eb906024016040805180830381865afa158015613603573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136279190615774565b90945092506001600160a01b038e1663bd02d0f561364483613bb1565b6040518263ffffffff1660e01b815260040161366291815260200190565b602060405180830381865afa15801561367f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a391906155f0565b915060008d6001600160a01b03166371a6a790876040518263ffffffff1660e01b81526004016136d39190615743565b602060405180830381865afa1580156136f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061371491906155f0565b90508015613720578093505b50505b60006137446127106137358587615668565b61373f9190615474565b613bf2565b9050600061375185613bf2565b9050600061375f8383615692565b979c50959a509598509650945050505050939792965093509350565b6000604051602001613173906020808252601390820152722827a9a4aa24a7a72fa322a2afa320a1aa27a960691b604082015260600190565b60006040516020016122c0906020808252600f908201526e282927afaa2920a222a92faa24a2a960891b604082015260600190565b60006040516020016130ca90602080825260139082015272282927afa224a9a1a7aaa72a2fa320a1aa27a960691b604082015260600190565b6000836001600160a01b031663bd02d0f56122268585613c17565b60006040516020016122c0906020808252601690820152752624a8aaa4a220aa24a7a72fa322a2afa320a1aa27a960511b604082015260600190565b60006040516020016138ba906020808252601b908201527a46554e44494e475f4645455f414d4f554e545f5045525f53495a4560281b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b038087169183019190915284166060820152821515608082015260a001613440565b60006040516020016138ba9060208082526021908201527f434c41494d41424c455f46554e44494e475f414d4f554e545f5045525f53495a6040820152604560f81b606082015260800190565b6000806139598587615692565b9050611987848261397d66038d7ea4c6800068327cb2734119d3b7a9601e1b615668565b86613c58565b600080836001600160a01b031663bd02d0f56040516020016139ca9060208082526011908201527026a0ac2faaa4afa322a2afa320a1aa27a960791b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016139fe91815260200190565b602060405180830381865afa158015613a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a3f91906155f0565b90506000846001600160a01b031663bd02d0f5613a5b86613c7f565b6040518263ffffffff1660e01b8152600401613a7991815260200190565b602060405180830381865afa158015613a96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aba91906155f0565b90508181106113db578161126e565b600080613ad68584613cb2565b905061126e818561140f565b60008115613af3576112b2836110e1565b613afc836110e1565b6112b2906155d4565b6000604051602001613173906020808252601690820152752827a9a4aa24a7a72fa4a6a820a1aa2fa320a1aa27a960511b604082015260600190565b60006040516020016138ba906020808252600d908201526c13d4115397d2539511549154d5609a1b604082015260600190565b60006040516020016138ba906020808252601790820152764f50454e5f494e5445524553545f494e5f544f4b454e5360481b604082015260600190565b60006040516020016130ca906020808252601b908201527a26a4a72fa0a32324a624a0aa22afa922aba0a9222fa320a1aa27a960291b604082015260600190565b6000612710613c0d68327cb2734119d3b7a9601e1b84615668565b6110db9190615474565b6000604051602001613173906020808252601b908201527a21aaa6aaa620aa24ab22afa127a92927aba4a723afa320a1aa27a960291b604082015260600190565b60008115613c7457613c6d8585856001613d11565b90506113db565b61126e8585856131ad565b60006040516020016122c0906020808252600d908201526c2aa4afa322a2afa320a1aa27a960991b604082015260600190565b600068327cb2734119d3b7a9601e1b831015613cd0575060006110db565b68327cb2734119d3b7a9601e1b8203613cea5750816110db565b6000613d06613cf885613d62565b613d0185613d62565b613d73565b90506113db81613db3565b600080613d1f8686866131ad565b90506001836002811115613d3557613d35615798565b148015613d52575060008480613d4d57613d4d61541a565b868809115b1561126e5761198760018261567f565b60006110db64e8d4a5100083615474565b600082600003613d99578115613d8a5760006112b2565b50670de0b6b3a76400006110db565b6110d8613dae613da885613dc4565b84613e7a565b613e86565b60006110db64e8d4a5100083615668565b6000670de0b6b3a7640000821015613df257604051633621413760e21b815260048101839052602401610375565b6000613e07670de0b6b3a76400008404613ecc565b670de0b6b3a764000081029250905082811c670de0b6b3a763ffff198101613e30575050919050565b6706f05b59d3b200005b8015613e7257670de0b6b3a7640000828002049150671bc16d674ec800008210613e6a579283019260019190911c905b60011c613e3a565b505050919050565b60006110d88383613faf565b6000680a688906bd8b0000008210613eb457604051634a4f26f160e01b815260048101839052602401610375565b670de0b6b3a7640000604083901b0461140881614075565b6000600160801b8210613eec57608091821c91613ee9908261567f565b90505b600160401b8210613f0a57604091821c91613f07908261567f565b90505b600160201b8210613f2857602091821c91613f25908261567f565b90505b620100008210613f4557601091821c91613f42908261567f565b90505b6101008210613f6157600891821c91613f5e908261567f565b90505b60108210613f7c57600491821c91613f79908261567f565b90505b60048210613f9757600291821c91613f94908261567f565b90505b60028210613faa576110db60018261567f565b919050565b60008080600019848609848602925082811083820303915050670de0b6b3a76400008110613ff35760405163698d9a0160e11b815260048101829052602401610375565b600080670de0b6b3a764000086880991506706f05b59d3b1ffff82119050826000036140315780670de0b6b3a76400008504019450505050506110db565b620400008285030493909111909103600160ee1b02919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690201905092915050565b600160bf1b6001603f1b8216156140955768016a09e667f3bcc9090260401c5b6001603e1b8216156140b0576801306fe0a31b7152df0260401c5b6001603d1b8216156140cb576801172b83c7d517adce0260401c5b6001603c1b8216156140e65768010b5586cf9890f62a0260401c5b6001603b1b821615614101576801059b0d31585743ae0260401c5b6001603a1b82161561411c57680102c9a3e778060ee70260401c5b600160391b8216156141375768010163da9fb33356d80260401c5b600160381b82161561415257680100b1afa5abcbed610260401c5b600160371b82161561416d5768010058c86da1c09ea20260401c5b600160361b821615614188576801002c605e2e8cec500260401c5b600160351b8216156141a357680100162f3904051fa10260401c5b600160341b8216156141be576801000b175effdc76ba0260401c5b600160331b8216156141d957680100058ba01fb9f96d0260401c5b600160321b8216156141f45768010002c5cc37da94920260401c5b600160311b82161561420f576801000162e525ee05470260401c5b600160301b82161561422a5768010000b17255775c040260401c5b6001602f1b821615614245576801000058b91b5bc9ae0260401c5b6001602e1b82161561426057680100002c5c89d5ec6d0260401c5b6001602d1b82161561427b5768010000162e43f4f8310260401c5b6001602c1b82161561429657680100000b1721bcfc9a0260401c5b6001602b1b8216156142b15768010000058b90cf1e6e0260401c5b6001602a1b8216156142cc576801000002c5c863b73f0260401c5b600160291b8216156142e757680100000162e430e5a20260401c5b600160281b821615614302576801000000b1721835510260401c5b600160271b82161561431d57680100000058b90c0b490260401c5b600160261b8216156143385768010000002c5c8601cc0260401c5b600160251b821615614353576801000000162e42fff00260401c5b600160241b82161561436e5768010000000b17217fbb0260401c5b600160231b821615614389576801000000058b90bfce0260401c5b600160221b8216156143a457680100000002c5c85fe30260401c5b600160211b8216156143bf5768010000000162e42ff10260401c5b600160201b8216156143da57680100000000b17217f80260401c5b63800000008216156143f55768010000000058b90bfc0260401c5b6340000000821615614410576801000000002c5c85fe0260401c5b632000000082161561442b57680100000000162e42ff0260401c5b6310000000821615614446576801000000000b17217f0260401c5b630800000082161561446157680100000000058b90c00260401c5b630400000082161561447c5768010000000002c5c8600260401c5b6302000000821615614497576801000000000162e4300260401c5b63010000008216156144b25768010000000000b172180260401c5b628000008216156144cc576801000000000058b90c0260401c5b624000008216156144e657680100000000002c5c860260401c5b622000008216156145005768010000000000162e430260401c5b6210000082161561451a57680100000000000b17210260401c5b620800008216156145345768010000000000058b910260401c5b6204000082161561454e576801000000000002c5c80260401c5b6202000082161561456857680100000000000162e40260401c5b620100008216156145815761b172600160401b010260401c5b618000821615614599576158b9600160401b010260401c5b6140008216156145b157612c5d600160401b010260401c5b6120008216156145c95761162e600160401b010260401c5b6110008216156145e157610b17600160401b010260401c5b6108008216156145f95761058c600160401b010260401c5b610400821615614611576102c6600160401b010260401c5b61020082161561462957610163600160401b010260401c5b6101008216156146405760b1600160401b010260401c5b6080821615614656576059600160401b010260401c5b604082161561466c57602c600160401b010260401c5b6020821615614682576016600160401b010260401c5b601082161561469857600b600160401b010260401c5b60088216156146ae576006600160401b010260401c5b60048216156146c4576003600160401b010260401c5b60028216156146da576001600160401b010260401c5b60018216156146f0576001600160401b010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b60405180606001604052806000815260200160008152602001600081525090565b6040518060e00160405280600081526020016000815260200161474961476d565b81526020016000815260200160008152602001600081526020016000151581525090565b604051806040016040528060008152602001600081525090565b6040518061022001604052806147fe6040518061014001604052806000801916815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200161482760405180606001604052806000815260200160008152602001600081525090565b81526020016148346148dc565b81526020016148416148b4565b815260200161484e614912565b815260200161485b6148b4565b815260200161486861476d565b8152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156149745761497461493c565b60405290565b60405161016081016001600160401b03811182821017156149745761497461493c565b604051606081016001600160401b03811182821017156149745761497461493c565b60405161010081016001600160401b03811182821017156149745761497461493c565b60405161012081016001600160401b03811182821017156149745761497461493c565b60405160e081016001600160401b03811182821017156149745761497461493c565b6001600160a01b0381168114614a3c57600080fd5b50565b600060c08284031215614a5157600080fd5b60405160c081016001600160401b0381118282101715614a7357614a7361493c565b6040529050808235614a8481614a27565b81526020830135614a9481614a27565b60208201526040830135614aa781614a27565b60408201526060830135614aba81614a27565b60608201526080830135614acd81614a27565b608082015260a0830135614ae081614a27565b60a0919091015292915050565b8035613faa81614a27565b600060808284031215614b0a57600080fd5b614b12614952565b90508135614b1f81614a27565b81526020820135614b2f81614a27565b60208201526040820135614b4281614a27565b60408201526060820135614b5581614a27565b606082015292915050565b600082601f830112614b7157600080fd5b813560206001600160401b0380831115614b8d57614b8d61493c565b8260051b604051601f19603f83011681018181108482111715614bb257614bb261493c565b604052938452858101830193838101925087851115614bd057600080fd5b83870191505b848210156115c9578135614be981614a27565b83529183019190830190614bd6565b803560098110613faa57600080fd5b803560038110613faa57600080fd5b60006101608284031215614c2957600080fd5b614c3161497a565b9050614c3c82614bf8565b8152614c4a60208301614c07565b602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e082015261010080830135818301525061012080830135818301525061014080830135818301525092915050565b8015158114614a3c57600080fd5b600060808284031215614cd557600080fd5b614cdd614952565b90508135614cea81614cb5565b81526020820135614cfa81614cb5565b60208201526040820135614d0d81614cb5565b60408201526060820135614b5581614cb5565b60006102008284031215614d3357600080fd5b614d3b61499d565b905081356001600160401b0380821115614d5457600080fd5b908301906101008286031215614d6957600080fd5b614d716149bf565b614d7a83614aed565b8152614d8860208401614aed565b6020820152614d9960408401614aed565b6040820152614daa60608401614aed565b6060820152614dbb60808401614aed565b6080820152614dcc60a08401614aed565b60a0820152614ddd60c08401614aed565b60c082015260e083013582811115614df457600080fd5b614e0087828601614b60565b60e083015250835250614e1890508360208401614c16565b6020820152614e2b836101808401614cc3565b604082015292915050565b600060208284031215614e4857600080fd5b604051602081016001600160401b0381118282101715614e6a57614e6a61493c565b6040529050808235614e7b81614cb5565b905292915050565b60008183036101a0811215614e9757600080fd5b614e9f61499d565b91506060811215614eaf57600080fd5b614eb761499d565b8335614ec281614a27565b81526020840135614ed281614a27565b60208201526040840135614ee581614a27565b60408201528252610120605f198201811315614f0057600080fd5b614f086149e2565b9150606084013582526080840135602083015260a0840135604083015260c0840135606083015260e084013560808301526101008085013560a08401528185013560c084015261014085013560e084015261016085013581840152505080602083015250614e2b836101808401614e36565b803560028110613faa57600080fd5b600060408284031215614f9b57600080fd5b604080519081016001600160401b0381118282101715614fbd57614fbd61493c565b604052823581526020928301359281019290925250919050565b60008060608385031215614fea57600080fd5b82356001600160401b038082111561500157600080fd5b90840190610360828703121561501657600080fd5b61501e614a05565b6150288784614a3f565b81526150378760c08501614af8565b60208201526101408301358281111561504f57600080fd5b61505b88828601614d20565b604083015250610160830135606082015261507a876101808501614e83565b608082015261032083013560a08201526150976103408401614f7a565b60c08201528094505050506150af8460208501614f89565b90509250929050565b600060c082840312156150ca57600080fd5b6150d261499d565b90506150de8383614f89565b81526150ed8360408401614f89565b6020820152614e2b8360808401614f89565b600080600080610180858703121561511657600080fd5b843561512181614a27565b9350602085013561513181614a27565b92506151408660408701614af8565b915061514f8660c087016150b8565b905092959194509250565b6000806000806000806000610360888a03121561517657600080fd5b873561518181614a27565b9650602088013561519181614a27565b95506151a08960408a01614e83565b94506151b0896101e08a01614af8565b93506151c0896102608a016150b8565b92506103208801356151d181614cb5565b91506103408801356151e281614cb5565b8091505092959891949750929550565b60008060008060008086880361022081121561520d57600080fd5b873561521881614a27565b96506152278960208a01614af8565b95506152368960a08a016150b8565b945061016088013561524781614a27565b935061018088013561525881614cb5565b9250608061019f198201121561526d57600080fd5b50615276614952565b6101a088013581526101c088013560208201526101e088013560408201526102008801356060820152809150509295509295509295565b600080600080600061032086880312156152c657600080fd5b85356152d181614a27565b94506152e08760208801614af8565b93506152ef8760a088016150b8565b92506152ff876101608801614e83565b94979396509194610300013592915050565b600080600080600080610340878903121561532b57600080fd5b863561533681614a27565b9550602087013561534681614a27565b94506153558860408901614e83565b9350615365886101e08901614af8565b92506153758861026089016150b8565b915061032087013561538681614cb5565b809150509295509295509295565b6000815180845260005b818110156153ba5760208185018101518683018201520161539e565b506000602082860101526020601f19601f83011685010191505092915050565b831515815260a0602082015260006153f560a0830185615394565b9050825160408301526020830151606083015260408301516080830152949350505050565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000826154555761545561541a565b600160ff1b82146000198414161561546f5761546f615430565b500590565b6000826154835761548361541a565b500490565b80820182811260008312801582168215821617156154a8576154a8615430565b505092915050565b81810360008312801583831316838312821617156154d0576154d0615430565b5092915050565b918252602082015260400190565b80516001600160a01b03908116835260208083015182169084015260408083015182169084015260609182015116910152565b61552d82825180518252602090810151910152565b602081810151805160408501529081015160608401525060400151805160808301526020015160a090910152565b6001600160a01b03858116825284166020820152610180810161558160408301856154e5565b61126e60c0830184615518565b6001600160a01b038681168252851660208201526101a081016155b460408301866154e5565b6155c160c0830185615518565b8215156101808301529695505050505050565b6000600160ff1b82016155e9576155e9615430565b5060000390565b60006020828403121561560257600080fd5b5051919050565b60808152600061561c6080830187615394565b6020830195909552506040810192909252606090910152919050565b80820260008212600160ff1b8414161561565457615654615430565b81810583148215176110db576110db615430565b80820281158282048414176110db576110db615430565b808201808211156110db576110db615430565b818103818111156110db576110db615430565b6001600160a01b0392831681529116602082015260400190565b6000608082840312156156d157600080fd5b6156d9614952565b82516156e481614a27565b815260208301516156f481614a27565b6020820152604083015161570781614a27565b6040820152606083015161571a81614a27565b60608201529392505050565b60006020828403121561573857600080fd5b815161140881614cb5565b6001600160a01b0391909116815260200190565b60006020828403121561576957600080fd5b815161140881614a27565b6000806040838503121561578757600080fd5b505080516020909101519092909150565b634e487b7160e01b600052602160045260246000fdfea264697066735822122068829492cc40815f764a4c06b97fb164b4b56bb379891a8f9b48b8cc744f606064736f6c63430008120033