0 txs
22 calls
constructor
constructor()
functions
assetFee
viewfunction assetFee(address) view returns (uint24)
chainlinkOracle
viewfunction chainlinkOracle(address) view returns (address)
closeSwapRequests
viewfunction closeSwapRequests(bytes32) view returns (bytes32 key, uint256 longAmountFromGMX, uint256 shortAmountFromGMX, uint256 longAmountAvailableToSwap, uint256 shortAmountAvailableToSwap, uint256 leftOver, address longToken, address gmMarketToken, bool done)
eighteenDecimalAsset
viewfunction eighteenDecimalAsset(address) view returns (bool)
estimatePositionProfit
viewfunction estimatePositionProfit(bytes32 key, uint256 _returnedLongToken, uint256 _returnedShortToken) view returns (uint256)
getDepositRecord
viewfunction getDepositRecord(bytes32 key) view returns (tuple)
getEstimatedMarketTokenPrice
viewfunction getEstimatedMarketTokenPrice(address longToken) view returns (int256)
getLatestData
viewfunction getLatestData(address _token, bool _inDecimal) view returns (uint256)
getMarketTokenPrice
viewfunction getMarketTokenPrice(address longToken, bytes32 pnlFactorType, bool maximize) view returns (int256)
getPositionDebt
viewfunction getPositionDebt(address _user, uint256 _positionID) view returns (tuple)
getWithdrawRecord
viewfunction getWithdrawRecord(bytes32 key) view returns (tuple)
isOrderCreatedForKey
viewfunction isOrderCreatedForKey(bytes32) view returns (bool)
isOrderForMultipleSwap
viewfunction isOrderForMultipleSwap(bytes32) view returns (bool)
manualWithdraw
viewfunction manualWithdraw(address) view returns (bool)
orderRefunded
viewfunction orderRefunded(bytes32) view returns (uint256 feesRefunded, uint256 amountRefunded, uint256 longTokenAmountReturned, uint256 shortTokenAmountReturned, uint256 gmTokensRefunded, uint256 depositOrWithdrawal, bool cancelled)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
RoleStore
viewfunction RoleStore() view returns (address)
sixDecimalAsset
viewfunction sixDecimalAsset(address) view returns (bool)
strategyAddresses
viewfunction strategyAddresses() view returns (address USDC, address WaterContract, address VodkaV2, address univ3Router, address dataStore, address oracle, address reader, address depositHandler, address withdrawalHandler)
tempPayableAddress
viewfunction tempPayableAddress() view returns (address)
userRefunds
viewfunction userRefunds(address, uint256) view returns (bytes32)
userToRefund
viewfunction userToRefund(bytes32) view returns (address)
VodkaV2Swapper
viewfunction VodkaV2Swapper() view returns (address)
WETH
viewfunction WETH() view returns (address)
WrappedBTC
viewfunction WrappedBTC() view returns (address)
afterDepositCancellation
nonpayablefunction afterDepositCancellation(bytes32 key, tuple deposit, tuple eventData)
afterDepositExecution
nonpayablefunction afterDepositExecution(bytes32 key, tuple deposit, tuple eventData)
afterWithdrawalCancellation
nonpayablefunction afterWithdrawalCancellation(bytes32 key, tuple withdrawal, tuple eventData)
afterWithdrawalExecution
nonpayablefunction afterWithdrawalExecution(bytes32 key, tuple withdrawal, tuple eventData)
executeSwap
nonpayablefunction executeSwap(uint256 _amount, address _tokenIn, address _tokenOut, address _recipient) returns (uint256)
finalizeClosePosition
nonpayablefunction finalizeClosePosition(bytes32 key, uint256 _received)
initialize
nonpayablefunction initialize(address _USDC, address _VodkaV2)
refundExecutionFee
payablefunction refundExecutionFee(bytes32 key, tuple eventData) payable
renounceOwnership
nonpayablefunction renounceOwnership()
requestGMXV2Swap
payablefunction requestGMXV2Swap(bytes32 _key) payable
setArbitrumSequencer
nonpayablefunction setArbitrumSequencer(address _arbitrumSequencer)
setChainlinkOracleForAsset
nonpayablefunction setChainlinkOracleForAsset(address _token, address _oracle)
setEighteenDecimalAsset
nonpayablefunction setEighteenDecimalAsset(address _asset, bool _eighteenDecimal)
setManualWithdraw
nonpayablefunction setManualWithdraw(address _token, bool _manual)
setSixDecimalAsset
nonpayablefunction setSixDecimalAsset(address _asset, bool _sixDecimal)
setStrategyParams
nonpayablefunction setStrategyParams(address _univ3Router, address _dataStore, address _oracle, address _reader, address _depositHandler, address _withdrawalHandler)
setUniv3Fee
nonpayablefunction setUniv3Fee(uint24 _univ3Fee, address _asset)
setVodkaV2Swapper
nonpayablefunction setVodkaV2Swapper(address _VodkaV2Swapper)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdrawTokens
nonpayablefunction withdrawTokens(address _token)
events
ChainlinkOracleSet
event ChainlinkOracleSet(address token, address oracle)
CloseFinalized
event CloseFinalized(bytes32 key, uint256 shortTokenAmount, uint256 longTokenAmount)
Initialized
event Initialized(uint8 version)
KeysPendingSwap
event KeysPendingSwap(bytes32 key, uint256 longAmount, uint256 shortAmount, bool isOrderForMultipleSwap, uint256 longAmountAvailableToSwap, uint256 shortAmountAvailableToSwap)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
RepayDepositFailure
event RepayDepositFailure(address user, uint256 amount, string errorMessage, string stackTrace)
SecondSwapRequest
event SecondSwapRequest(bytes32 key, uint256 leftOver)
StrategyParamsSet
event StrategyParamsSet(address univ3Router, address dataStore, address oracle, address reader, address depositHandler, address withdrawalHandler)
Unpaused
event Unpaused(address account)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615b7e80620000f36000396000f3fe6080604052600436106102115760003560e01c80630afda3511461021d5780630fa63fe41461023f578063100e196d1461028b57806319c2d37e146103365780631b0079221461036357806321d41b32146103835780632f2708a2146103c45780633201ab4d146103e4578063395aef8e146104045780633a2cb99f146104475780633c37224014610475578063485cc9551461048857806349df728c146104a85780635c975abb146104c85780635ce98de7146104e05780635f82eba814610500578063715018a61461052057806372ccfa6014610535578063753672d51461055557806376f1ef10146105765780637db2bd3e146105965780638c4d0d60146105c75780638da5cb5b146105f857806394fce92b1461060d57806396e1ae101461063a5780639a4a1a9a1461066b5780639f0938711461068b5780639f17af991461071d578063a5efb24d1461073d578063a7c49f5a1461075d578063a8f098d214610794578063ad5c4648146107b5578063b2fd9495146107d6578063b63d5354146107e9578063ba871dcd14610809578063bf3810a914610829578063c4b2b98014610849578063c9888ec114610869578063c9ac221a14610889578063cc662466146108a9578063ceb0c445146108c9578063e88c3561146108f6578063f2fde38b146109c0578063f5faa892146109e0578063fd77d17514610a11578063ff06f7b214610a3157600080fd5b3661021857005b600080fd5b34801561022957600080fd5b5061023d610238366004613b40565b610a51565b005b34801561024b57600080fd5b5061027261025a366004613b79565b61010c6020526000908152604090205462ffffff1681565b60405162ffffff90911681526020015b60405180910390f35b34801561029757600080fd5b5060c95460ca5460cb5460cc5460cd5460ce5460cf5460d05460d1546102dc986001600160a01b03908116988116978116968116958116948116938116928116911689565b604080516001600160a01b039a8b168152988a1660208a01529689169688019690965293871660608701529186166080860152851660a0850152841660c0840152831660e083015290911661010082015261012001610282565b34801561034257600080fd5b50610356610351366004613baa565b610a85565b6040516102829190613be5565b34801561036f57600080fd5b5061023d61037e366004613b79565b610b12565b34801561038f57600080fd5b506103b461039e366004613b79565b6101146020526000908152604090205460ff1681565b6040519015158152602001610282565b3480156103d057600080fd5b5061023d6103df366004613b40565b610b3d565b3480156103f057600080fd5b5061023d6103ff366004613bf3565b610b71565b34801561041057600080fd5b5061043a61041f366004613b79565b60d4602052600090815260409020546001600160a01b031681565b6040516102829190613c15565b34801561045357600080fd5b50610467610462366004613b79565b610e9f565b604051908152602001610282565b61023d610483366004614bd5565b61111a565b34801561049457600080fd5b5061023d6104a3366004614c1b565b6113ba565b3480156104b457600080fd5b5061023d6104c3366004613b79565b611514565b3480156104d457600080fd5b5060975460ff166103b4565b3480156104ec57600080fd5b5061023d6104fb366004613b79565b6115a1565b34801561050c57600080fd5b5060d55461043a906001600160a01b031681565b34801561052c57600080fd5b5061023d6115cc565b34801561054157600080fd5b5061023d610550366004614d19565b6115e0565b34801561056157600080fd5b506101135461043a906001600160a01b031681565b34801561058257600080fd5b50610467610591366004614e84565b6116f9565b3480156105a257600080fd5b506103b46105b1366004613b79565b61010d6020526000908152604090205460ff1681565b3480156105d357600080fd5b506103b46105e2366004614ed7565b6101126020526000908152604090205460ff1681565b34801561060457600080fd5b5061043a61175b565b34801561061957600080fd5b5061062d610628366004614ed7565b61176a565b6040516102829190614ef0565b34801561064657600080fd5b506103b4610655366004614ed7565b6101116020526000908152604090205460ff1681565b34801561067757600080fd5b50610467610686366004614f62565b611815565b34801561069757600080fd5b506106e66106a6366004614ed7565b60d2602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949593949293919290919060ff1687565b604080519788526020880196909652948601939093526060850191909152608084015260a0830152151560c082015260e001610282565b34801561072957600080fd5b5061023d610738366004613b40565b611af3565b34801561074957600080fd5b5061023d610758366004614fa4565b611b27565b34801561076957600080fd5b5061043a610778366004614ed7565b610110602052600090815260409020546001600160a01b031681565b3480156107a057600080fd5b5061010a5461043a906001600160a01b031681565b3480156107c157600080fd5b5061010b5461043a906001600160a01b031681565b61023d6107e4366004614ed7565b611bcb565b3480156107f557600080fd5b5060d65461043a906001600160a01b031681565b34801561081557600080fd5b50610467610824366004614fca565b611fd8565b34801561083557600080fd5b50610467610844366004613b40565b6121e2565b34801561085557600080fd5b5061023d610864366004614ff6565b61246a565b34801561087557600080fd5b50610467610884366004613baa565b6128f0565b34801561089557600080fd5b5061023d6108a4366004614d19565b612921565b3480156108b557600080fd5b5061023d6108c4366004614c1b565b612d96565b3480156108d557600080fd5b506108e96108e4366004614ed7565b612df2565b6040516102829190615171565b34801561090257600080fd5b5061096e610911366004614ed7565b61010f60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701549596949593949293919290916001600160a01b0391821691811690600160a01b900460ff1689565b60408051998a5260208a0198909852968801959095526060870193909352608086019190915260a08501526001600160a01b0390811660c08501521660e0830152151561010082015261012001610282565b3480156109cc57600080fd5b5061023d6109db366004613b79565b612ec7565b3480156109ec57600080fd5b506103b46109fb366004613b79565b61010e6020526000908152604090205460ff1681565b348015610a1d57600080fd5b5061023d610a2c366004614ff6565b612f3d565b348015610a3d57600080fd5b5061023d610a4c3660046151f5565b613093565b610a59613161565b6001600160a01b0391909116600090815261011460205260409020805460ff1916911515919091179055565b6040805180820182526000808252602082015260cb5491516301e73a5f60e61b815290916001600160a01b0316906379ce97c090610ac99086908690600401615277565b6040805180830381865afa158015610ae5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0991906152c6565b90505b92915050565b610b1a613161565b61010980546001600160a01b0319166001600160a01b0392909216919091179055565b610b45613161565b6001600160a01b0391909116600090815261010d60205260409020805460ff1916911515919091179055565b610b796131c0565b610113546001600160a01b0316331480610bab5750610b9661175b565b6001600160a01b0316336001600160a01b0316145b610bea5760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b60448201526064015b60405180910390fd5b6000610bf58361176a565b600084815261010f602052604080822083519184015193945092610c199190610a85565b6000868152610111602052604090205490915060ff168015610c4b57506000858152610112602052604090205460ff16155b15610ccf5780516001830154610c629086906152f8565b610c6c919061530b565b600383019081556000868152610112602052604090819020805460ff191660011790558354915490517f9bb3f265562ad4d42fe6bc8ec0cc15e82e766e4e3ba72c75c66d2fb3fdd6f1ab92610cc292909161531e565b60405180910390a1610e8e565b80516020820151600090610ce49087906152f8565b60cb5460c954919250610d04916001600160a01b03908116911683613219565b60cb5460a0860151610d23916001600160a01b03918216911684613219565b60078401805460ff60a01b1916600160a01b1790556080850151610dd85760cb54600185015460028601546001600160a01b0390921691639137be7a918a9186918691610d71918591611fd8565b6040518563ffffffff1660e01b8152600401610d90949392919061532c565b6020604051808303816000875af1158015610daf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd39190615352565b610e4f565b60cb54604051635f4e6fb760e11b81526001600160a01b039091169063be9cdf6e90610e0c908a908690869060040161536f565b6020604051808303816000875af1158015610e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4f9190615352565b507f9c341c91384ec36b9d393c98615da5bf201c12f801111ca44b299c61a6b3730b878284604051610e839392919061536f565b60405180910390a150505b505050610e9b6001606555565b5050565b60cb54604051639c735fbb60e01b815260009182916001600160a01b0390911690639c735fbb90610ed4908690600401613c15565b60c060405180830381865afa158015610ef1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f159190615390565b90506000604051806080016040528083604001516001600160a01b0316815260200183606001516001600160a01b0316815260200183600001516001600160a01b0316815260200183602001516001600160a01b0316815250905060006040518060400160405280610f8c856060015160016121e2565b8152602001610fa0856060015160016121e2565b815250905060006040518060400160405280610fbd8860016121e2565b8152602001610fcd8860016121e2565b90526040805180820190915260c9549192506000918190610ff8906001600160a01b031660016121e2565b815260c954602090910190611017906001600160a01b031660016121e2565b905260cf5460cd546040519293506000926001600160a01b039283169263095ce6c59216908890889088908890611080906020016020808252601b908201527a4d41585f504e4c5f464143544f525f464f525f4445504f5349545360281b604082015260600190565b6040516020818303038152906040528051906020012060006040518863ffffffff1660e01b81526004016110ba9796959493929190615438565b61018060405180830381865afa1580156110d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fc91906154bf565b50905061110e64e8d4a5100082615589565b98975050505050505050565b60d6546040516001600160a01b039091169063ac4ab3fb903390611140906020016155b7565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b8152600401611173929190615277565b602060405180830381865afa158015611190573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b49190615352565b6111d05760405162461bcd60e51b8152600401610be1906155db565b60006111db83612df2565b905060006111e88461176a565b82519091506001600160a01b03166113585760cb54604051631f6f85f960e11b8152600481018690526001600160a01b0390911690633edf0bf290602401602060405180830381865afa158015611243573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112679190615352565b156112ff5760cb546040805163aced166160e01b815290516001600160a01b039092169163aced1661916004808201926020929091908290030181865afa1580156112b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112da9190615604565b60d580546001600160a01b0319166001600160a01b039290921691909117905561137a565b8060800151156113325760e081015160d580546001600160a01b0319166001600160a01b0390921691909117905561137a565b805160d580546001600160a01b0319166001600160a01b0390921691909117905561137a565b815160d580546001600160a01b0319166001600160a01b039092169190911790555b60d5546040516001600160a01b03909116903480156108fc02916000818181858888f193505050501580156113b3573d6000803e3d6000fd5b5050505050565b600054610100900460ff16158080156113da5750600054600160ff909116105b806113fb57506113e930613276565b1580156113fb575060005460ff166001145b61145e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610be1565b6000805460ff191660011790558015611481576000805461ff0019166101001790555b60cb80546001600160a01b038085166001600160a01b03199283161790925560c98054928616929091169190911790556114b9613285565b6114c16132b4565b6114c96132e3565b801561150f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61151c613161565b61159e33826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161154c9190613c15565b602060405180830381865afa158015611569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158d9190615621565b6001600160a01b0384169190613219565b50565b6115a9613161565b61011380546001600160a01b0319166001600160a01b0392909216919091179055565b6115d4613161565b6115de6000613312565b565b60d6546040516001600160a01b039091169063ac4ab3fb903390611606906020016155b7565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b8152600401611639929190615277565b602060405180830381865afa158015611656573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167a9190615352565b6116965760405162461bcd60e51b8152600401610be1906155db565b60cb546040516365f1680b60e11b8152600481018590526001600160a01b039091169063cbe2d01690602401600060405180830381600087803b1580156116dc57600080fd5b505af11580156116f0573d6000803e3d6000fd5b50505050505050565b60cb546000906001600160a01b031633146117445760405162461bcd60e51b815260206004820152600b60248201526a2737ba102b37b235b0ab1960a91b6044820152606401610be1565b61175085858585613364565b90505b949350505050565b6033546001600160a01b031690565b6040805161010081018252600080825260208201819052818301819052606082018190526080820181905260a0820181905260c0820181905260e082015260cb54915163191618a160e21b81526004810184905290916001600160a01b03169063645862849060240161010060405180830381865afa1580156117f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0c919061563a565b60cb54604051639c735fbb60e01b815260009182916001600160a01b0390911690639c735fbb9061184a908890600401613c15565b60c060405180830381865afa158015611867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188b9190615390565b9050611895613ac3565b60408051608081018252838201516001600160a01b0390811682526060808601805183166020808601919091528751841685870152808801518416928501929092529085018990528715158585015260ce5490519351631773dc6560e21b815292936000939190921691635dcf7194916119129190600401613c15565b6040805180830381865afa15801561192e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195291906152c6565b60ce548551604051631773dc6560e21b81529293506000926001600160a01b0390921691635dcf71949161198891600401613c15565b6040805180830381865afa1580156119a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c891906152c6565b60ce546020870151604051631773dc6560e21b81529293506000926001600160a01b0390921691635dcf719491611a0191600401613c15565b6040805180830381865afa158015611a1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4191906152c6565b60cf5460cd5460208801516040808a0151905163095ce6c560e01b81529495506001600160a01b039384169463095ce6c594611a8b9416928a928a928a928a929091600401615438565b61018060405180830381865afa158015611aa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acd91906154bf565b50808652611ae19064e8d4a5100090615589565b94859052509298975050505050505050565b611afb613161565b6001600160a01b0391909116600090815261010e60205260409020805460ff1916911515919091179055565b611b2f613161565b6001600160a01b038116611b555760405162461bcd60e51b8152600401610be1906156e9565b6113888262ffffff161115611b9b5760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b6044820152606401610be1565b6001600160a01b0316600090815261010c60205260409020805462ffffff191662ffffff92909216919091179055565b611bd36131c0565b60cb546040805163aced166160e01b815290516001600160a01b039092169163aced1661916004808201926020929091908290030181865afa158015611c1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c419190615604565b6001600160a01b0316336001600160a01b031614611c8e5760405162461bcd60e51b815260206004820152600a6024820152692737ba1035b2b2b832b960b11b6044820152606401610be1565b600081815261010f6020526040902060068101546001600160a01b0316611ce45760405162461bcd60e51b815260206004820152600a602482015269139bc81c995c5d595cdd60b21b6044820152606401610be1565b6007810154600160a01b900460ff1615611d295760405162461bcd60e51b8152600401610be190602080825260049082015263646f6e6560e01b604082015260600190565b60068101546007820154600084815261011160205260409020546001600160a01b03928316929091169060ff168015611d7257506000848152610112602052604090205460ff16155b15611ea5576000836004015411611d9b5760405162461bcd60e51b8152600401610be19061570f565b60c9546101135460048086015460405163095ea7b360e01b81526001600160a01b039485169463095ea7b394611dd5949116929101615277565b6020604051808303816000875af1158015611df4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e189190615352565b506101135460c95460048581015460008881526101106020526040908190205490516341c70b0160e11b81526001600160a01b039586169563838e1602953495611e6e95918316948a948e949091169101615732565b6000604051808303818588803b158015611e8757600080fd5b505af1158015611e9b573d6000803e3d6000fd5b5050505050611fcb565b6000836003015411611ec95760405162461bcd60e51b8152600401610be19061570f565b61011354600384015460405163095ea7b360e01b81526001600160a01b038581169363095ea7b393611f02939290911691600401615277565b6020604051808303816000875af1158015611f21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f459190615352565b5061011354600384015460008681526101106020526040908190205490516341c70b0160e11b81526001600160a01b039384169363838e1602933493611f9893899389938d939092911690600401615732565b6000604051808303818588803b158015611fb157600080fd5b505af1158015611fc5573d6000803e3d6000fd5b50505050505b50505061159e6001606555565b600080611fe48561176a565b60cb548151604080840151905163de91a5e560e01b81529394506000936001600160a01b039093169263de91a5e592612021929091600401615277565b61018060405180830381865afa15801561203f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120639190615788565b9050600061207983600001518460400151610a85565b9050600061208c8460a0015160006121e2565b61010a5460a086015191925060009182916001600160a01b039081169116036120fa5768056bc75e2d631000006120c3848b615851565b6120cd9190615868565b915068056bc75e2d631000008385600001516120e99190615851565b6120f39190615868565b9050612147565b68327cb2734119d3b7a9601e1b612111848b615851565b61211b9190615868565b915068327cb2734119d3b7a9601e1b83856000015161213a9190615851565b6121449190615868565b90505b60c954600090612161906001600160a01b031660016121e2565b9050600069d3c21bcecceda100000061217a838c615851565b6121849190615868565b9050600061219282866152f8565b885160208901519192506000916121a990876152f8565b6121b391906152f8565b905060008183116121c55760006121cf565b6121cf828461530b565b9f9e505050505050505050505050505050565b600080600061010960009054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561223b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225f9190615893565b50919450925050821590506000612276834261530b565b9050610e1081116122c15760405162461bcd60e51b815260206004820152601560248201527423b930b1b2903832b934b7b2103737ba1037bb32b960591b6044820152606401610be1565b816123025760405162461bcd60e51b815260206004820152601160248201527029b2b8bab2b731b2b91034b9903237bbb760791b6044820152606401610be1565b6001600160a01b03808816600090815260d46020526040808220548151633fabe5a360e21b815291519293169163feaf968c9160048082019260a0929091908290030181865afa15801561235a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061237e9190615893565b5050506001600160a01b038a16600090815261010d6020526040812054919350915060ff16156123cb576123b7826402540be400615851565b6123c490620f4240615851565b905061110e565b61010a546001600160a01b03908116908a16036123fd576123f1826402540be400615851565b6123c490612710615851565b6001600160a01b0389166000908152610114602052604090205460ff161561244057662386f26fc10000612436836402540be400615851565b6123c49190615868565b620f4240612453836402540be400615851565b61245d9190615868565b9998505050505050505050565b60d6546040516001600160a01b039091169063ac4ab3fb903390612490906020016155b7565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b81526004016124c3929190615277565b602060405180830381865afa1580156124e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125049190615352565b6125205760405162461bcd60e51b8152600401610be1906155db565b600061252b84612df2565b60cb54610100820151604051639c735fbb60e01b81529293506000926001600160a01b0390921691639c735fbb9161256591600401613c15565b60c060405180830381865afa158015612582573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a69190615390565b600086815260d260205260409081902060cb548351925163dde5b42760e01b815293945090926001600160a01b039091169163dde5b427916125eb9190600401613c15565b600060405180830381600087803b15801561260557600080fd5b505af1158015612619573d6000803e3d6000fd5b5050505060008360600151866020015160200151612637919061530b565b60808085015190860151855192935061265a926001600160a01b03169190613650565b6126848360a00151856060015185602001516001600160a01b03166136509092919063ffffffff16565b60a0830151606085015160405163015cb0a560e01b81526001600160a01b039092169163015cb0a5916126bb91819060040161531e565b6020604051808303816000875af11580156126da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fe9190615352565b506080808401519085015160405163015cb0a560e01b81526001600160a01b039092169163015cb0a59161273691819060040161531e565b6020604051808303816000875af1158015612755573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127799190615352565b5060c954845160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb916127ac918590600401615277565b6020604051808303816000875af19250505080156127e7575060408051601f3d908101601f191682019092526127e491810190615352565b60015b612842576127f36158e3565b806308c379a00361283657506128076158ff565b806128125750612838565b61283061281d61175b565b60c9546001600160a01b03169084613219565b50612888565b505b3d6000803e3d6000fd5b806128865760405162461bcd60e51b81526020600482015260146024820152731554d110c81d1c985b9cd9995c8819985a5b195960621b6044820152606401610be1565b505b50602080840151600180840191909155608085015160028401556060850151600384015560068301805460ff1916821790556000600590930183905593516001600160a01b0316825260d3815260408220805494850181558252902090910193909355505050565b60d3602052816000526040600020818154811061290c57600080fd5b90600052602060002001600091509150505481565b60d6546040516001600160a01b039091169063ac4ab3fb903390612947906020016155b7565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b815260040161297a929190615277565b602060405180830381865afa158015612997573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129bb9190615352565b6129d75760405162461bcd60e51b8152600401610be1906155db565b60006129e28461176a565b905060006129f882600001518360400151610a85565b9050612a02613ac3565b6000846020015160000151600081518110612a1f57612a1f615988565b60200260200101516020015190506000856020015160000151600181518110612a4a57612a4a615988565b60209081029190910181015181015160a08701516001600160a01b0316600090815261010e90925260409091205490915060ff16612cf8576000808560000151841115612ae6578551600090612aa0908661530b565b9050612aac818661530b565b60a089015160c954919450612acd918391906001600160a01b031630613364565b60808701819052612ade90856152f8565b915050612b7c565b6000866020015184612af8919061530b565b60c95460a08a0151919250612b199183916001600160a01b03169030613364565b60a087018190528751600091612b309088906152f8565b612b3a919061530b565b60a08a015160c954919250600091612b5d9184916001600160a01b031630613364565b905088600001519450808960200151612b7691906152f8565b93505050505b670de0b6b3a764000082612b958960a0015160016121e2565b612b9f9190615851565b612ba99190615868565b60c086015260cb5460c954612bcb916001600160a01b03918216911683613219565b60cb5460a0880151612bea916001600160a01b03918216911684613219565b8660800151612c795760cb546001600160a01b0316639137be7a8b8484612c12838a8a611fd8565b6040518563ffffffff1660e01b8152600401612c31949392919061532c565b6020604051808303816000875af1158015612c50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c749190615352565b612cf0565b60cb54604051635f4e6fb760e11b81526001600160a01b039091169063be9cdf6e90612cad908d908690869060040161536f565b6020604051808303816000875af1158015612ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf09190615352565b505050612d8c565b60cb5460a0860151604051639c735fbb60e01b81526000926001600160a01b031691639c735fbb91612d2d9190600401613c15565b60c060405180830381865afa158015612d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6e9190615390565b9050612d8a8984848860000151896020015186604001516136ee565b505b5050505050505050565b612d9e613161565b6001600160a01b038216612dc45760405162461bcd60e51b8152600401610be1906156e9565b6001600160a01b03918216600090815260d46020526040902080546001600160a01b03191691909216179055565b612e5960405180610120016040528060006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600061ffff16815260200160006001600160a01b031681525090565b60cb5460405163546fcf3960e01b8152600481018490526001600160a01b039091169063546fcf399060240161012060405180830381865afa158015612ea3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0c919061599e565b612ecf613161565b6001600160a01b038116612f345760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610be1565b61159e81613312565b60d6546040516001600160a01b039091169063ac4ab3fb903390612f63906020016155b7565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b8152600401612f96929190615277565b602060405180830381865afa158015612fb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd79190615352565b612ff35760405162461bcd60e51b8152600401610be1906155db565b60cb5460208201515180516001600160a01b039092169163862a820891869160009061302157613021615988565b6020026020010151602001516040518363ffffffff1660e01b815260040161304a92919061531e565b6020604051808303816000875af1158015613069573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308d9190615352565b50505050565b61309b613161565b60cc80546001600160a01b038881166001600160a01b0319928316811790935560cd8054898316908416811790915560ce8054898416908516811790915560cf8054898516908616811790915560d08054898616908716811790915560d18054958916959096168517909555604080519687526020870193909352918501526060840152608083019190915260a08201527f03f1afd7ce30865f51a6e0b71bd812eb2a48c45e187b710c8e67eaaa53c15c579060c00160405180910390a1505050505050565b3361316a61175b565b6001600160a01b0316146115de5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610be1565b6002606554036132125760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610be1565b6002606555565b61150f8363a9059cbb60e01b8484604051602401613238929190615277565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613853565b6001606555565b6001600160a01b03163b151590565b600054610100900460ff166132ac5760405162461bcd60e51b8152600401610be190615a26565b6115de613928565b600054610100900460ff166132db5760405162461bcd60e51b8152600401610be190615a26565b6115de613958565b600054610100900460ff1661330a5760405162461bcd60e51b8152600401610be190615a26565b6115de61398b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008460000361337657506000611753565b60cc5460405163095ea7b360e01b81526000916001600160a01b038088169263095ea7b3926133ab9216908a90600401615277565b6020604051808303816000875af11580156133ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ee9190615352565b5061010b546001600160a01b0386811691161480159061341d575061010b546001600160a01b03858116911614155b1561353e576040805160a0810182526001600160a01b03878116600090815261010c60209081528482205461010b5480851684528684205460608d811b6001600160601b031990811660c08a015260e894851b6001600160e81b031990811660d48b015293821b811660d78a01529190931b90911660eb8701528a821b1660ee860152855160e281870301815261010286018752855288841691850191909152428486015283018a9052608083015260cc54925163c04b8d5960e01b81529192169063c04b8d59906134f3908490600401615ac1565b6020604051808303816000875af1158015613512573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135369190615621565b915050611750565b60408051610100810182526001600160a01b038781168083528782166020808501918252600092835261010c90528482205462ffffff90811685870190815289851660608701908152426080880190815260a088018f815260c0890187815260e08a0197885260cc549a5163414bf38960e01b81528a518a16600482015296518916602488015293519094166044860152905186166064850152516084840152905160a48301525160c48201529051821660e48201529192169063414bf38990610104016020604051808303816000875af1158015613621573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136459190615621565b979650505050505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa1580156136a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c49190615621565b905061308d8463095ea7b360e01b856136dd86866152f8565b604051602401613238929190615277565b600086815261010f60205260408120906137078861176a565b88835560018301889055600283018790559050848711613728576000613732565b613732858861530b565b600383015583861161374557600061374f565b61374f848761530b565b6004830190815560a08201516006840180546001600160a01b039283166001600160a01b031991821617909155600785018054878416908316179055835160008c815261011060205260409020805491909316911617905554156137c857600088815261011160205260409020805460ff191660011790555b6001820154600283015460008a81526101116020908152604091829020546003870154600488015484518f8152938401969096529282019390935260ff90921615156060830152608082015260a08101919091527f41aa0b642d7539321de3afda61eeb8c6bbf79ab4ea7a567e420c9663a846a7599060c00160405180910390a15050505050505050565b60006138a8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166139b29092919063ffffffff16565b90508051600014806138c95750808060200190518101906138c99190615352565b61150f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610be1565b600054610100900460ff1661394f5760405162461bcd60e51b8152600401610be190615a26565b6115de33613312565b600054610100900460ff1661397f5760405162461bcd60e51b8152600401610be190615a26565b6097805460ff19169055565b600054610100900460ff1661326f5760405162461bcd60e51b8152600401610be190615a26565b6060611753848460008585600080866001600160a01b031685876040516139d99190615b19565b60006040518083038185875af1925050503d8060008114613a16576040519150601f19603f3d011682016040523d82523d6000602084013e613a1b565b606091505b50915091506136458783838760608315613a94578251600003613a8d57613a4185613276565b613a8d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610be1565b5081611753565b6117538383815115613aa95781518083602001fd5b8060405162461bcd60e51b8152600401610be19190615b35565b604051806101000160405280600081526020016000801916815260200160001515815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b038116811461159e57600080fd5b8035613b2d81613b0d565b919050565b801515811461159e57600080fd5b60008060408385031215613b5357600080fd5b8235613b5e81613b0d565b91506020830135613b6e81613b32565b809150509250929050565b600060208284031215613b8b57600080fd5b8135613b9681613b0d565b9392505050565b6001600160a01b03169052565b60008060408385031215613bbd57600080fd5b8235613bc881613b0d565b946020939093013593505050565b80518252602090810151910152565b60408101610b0c8284613bd6565b60008060408385031215613c0657600080fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604081016001600160401b0381118282101715613c5e57613c5e613c29565b60405250565b606081016001600160401b0381118282101715613c5e57613c5e613c29565b601f8201601f191681016001600160401b0381118282101715613ca857613ca8613c29565b6040525050565b60405160e081016001600160401b0381118282101715613cd157613cd1613c29565b60405290565b60405161012081016001600160401b0381118282101715613cd157613cd1613c29565b60405161016081016001600160401b0381118282101715613cd157613cd1613c29565b60405161018081016001600160401b0381118282101715613cd157613cd1613c29565b60006001600160401b03821115613d5957613d59613c29565b5060051b60200190565b600082601f830112613d7457600080fd5b81356001600160401b03811115613d8d57613d8d613c29565b604051613da4601f8301601f191660200182613c83565b818152846020838601011115613db957600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112613de757600080fd5b81356020613df482613d40565b604051613e018282613c83565b83815260059390931b8501820192828101915086841115613e2157600080fd5b8286015b84811015613e45578035613e3881613b0d565b8352918301918301613e25565b509695505050505050565b600082601f830112613e6157600080fd5b81356020613e6e82613d40565b60408051613e7c8382613c83565b84815260059490941b8601830193838101925087851115613e9c57600080fd5b8387015b85811015613f3a5780356001600160401b0380821115613ec05760008081fd5b90890190818b03601f1901851315613ed85760008081fd5b8451613ee381613c3f565b8783013582811115613ef55760008081fd5b613f038d8a83870101613d63565b8252508583013582811115613f185760008081fd5b613f268d8a83870101613dd6565b828a01525086525050928401928401613ea0565b50979650505050505050565b60006040808385031215613f5957600080fd5b8051613f6481613c3f565b91508183356001600160401b0380821115613f7e57600080fd5b818601915086601f830112613f9257600080fd5b81356020613f9f82613d40565b8651613fab8282613c83565b83815260059390931b850182019282810191508a841115613fcb57600080fd5b8286015b8481101561404d57803586811115613fe75760008081fd5b8701808d03601f19018a1315613ffd5760008081fd5b895161400881613c3f565b858201358881111561401a5760008081fd5b6140288f8883860101613d63565b825250908a01359061403982613b0d565b808601919091528352918301918301613fcf565b508652508781013595508286111561406457600080fd5b61407089878a01613e50565b8186015250505050505092915050565b600082601f83011261409157600080fd5b8135602061409e82613d40565b604080516140ac8382613c83565b848152600594851b87018401948482019350888611156140cb57600080fd5b8488015b868110156141ca5780356001600160401b03808211156140ef5760008081fd5b908a0190818c03601f19018613156141075760008081fd5b855161411281613c3f565b88830135828111156141245760008081fd5b6141328e8b83870101613d63565b82525086830135828111156141475760008081fd5b8084019350508c603f84011261415f57600091508182fd5b88830135915061416e82613d40565b875161417a8282613c83565b83815292861b84018801928a810191508e8411156141985760008081fd5b938801935b838510156141b65784358252938a0193908a019061419d565b828b015250875250509385019385016140cf565b509098975050505050505050565b600060408083850312156141eb57600080fd5b80516141f681613c3f565b91508183356001600160401b038082111561421057600080fd5b818601915086601f83011261422457600080fd5b8135602061423182613d40565b865161423d8282613c83565b83815260059390931b850182019282810191508a84111561425d57600080fd5b8286015b848110156142d2578035868111156142795760008081fd5b8701808d03601f19018a131561428f5760008081fd5b895161429a81613c3f565b85820135888111156142ac5760008081fd5b6142ba8f8883860101613d63565b825250908a0135858201528352918301918301614261565b50865250878101359550828611156142e957600080fd5b61407089878a01614080565b600082601f83011261430657600080fd5b8135602061431382613d40565b604080516143218382613c83565b848152600594851b870184019484820193508886111561434057600080fd5b8488015b868110156141ca5780356001600160401b03808211156143645760008081fd5b908a0190818c03601f190186131561437c5760008081fd5b855161438781613c3f565b88830135828111156143995760008081fd5b6143a78e8b83870101613d63565b82525086830135828111156143bc5760008081fd5b8084019350508c603f8401126143d457600091508182fd5b8883013591506143e382613d40565b87516143ef8282613c83565b83815292861b84018801928a810191508e84111561440d5760008081fd5b938801935b8385101561443457843561442581613b32565b8252938a0193908a0190614412565b828b01525087525050938501938501614344565b6000604080838503121561445b57600080fd5b805161446681613c3f565b91508183356001600160401b038082111561448057600080fd5b818601915086601f83011261449457600080fd5b813560206144a182613d40565b86516144ad8282613c83565b83815260059390931b850182019282810191508a8411156144cd57600080fd5b8286015b8481101561454f578035868111156144e95760008081fd5b8701808d03601f19018a13156144ff5760008081fd5b895161450a81613c3f565b858201358881111561451c5760008081fd5b61452a8f8883860101613d63565b825250908a01359061453b82613b32565b8086019190915283529183019183016144d1565b508652508781013595508286111561456657600080fd5b61407089878a016142f5565b600082601f83011261458357600080fd5b8135602061459082613d40565b60405161459d8282613c83565b83815260059390931b85018201928281019150868411156145bd57600080fd5b8286015b84811015613e45576001600160401b0381358110156145df57600080fd5b813588016040818b03601f190112156145f757600080fd5b60405161460381613c3f565b868201358381111561461457600080fd5b6146228c8983860101613d63565b82525060408201358381111561463757600080fd5b8083019250508a603f83011261464c57600080fd5b8682013561465981613d40565b6040516146668282613c83565b82815260059290921b84016040019189810191508d83111561468757600080fd5b604085015b838110156146bf5786813511156146a257600080fd5b6146b28f60408335890101613d63565b8352918a01918a0161468c565b50838a01525050855250509183019183016145c1565b600060408083850312156146e857600080fd5b80516146f381613c3f565b91508183356001600160401b038082111561470d57600080fd5b818601915086601f83011261472157600080fd5b8135602061472e82613d40565b865161473a8282613c83565b83815260059390931b850182019282810191508a84111561475a57600080fd5b8286015b848110156147ed578035868111156147765760008081fd5b8701808d03601f19018a131561478c5760008081fd5b895161479781613c3f565b85820135888111156147a95760008081fd5b6147b78f8883860101613d63565b8252508a820135888111156147cc5760008081fd5b6147da8f8883860101613d63565b828801525084525091830191830161475e565b508652508781013595508286111561480457600080fd5b61407089878a01614572565b600082601f83011261482157600080fd5b8135602061482e82613d40565b60405161483b8282613c83565b83815260059390931b850182019282810191508684111561485b57600080fd5b8286015b84811015613e45576001600160401b03813581101561487d57600080fd5b813588016040818b03601f1901121561489557600080fd5b6040516148a181613c3f565b86820135838111156148b257600080fd5b6148c08c8983860101613d63565b8252506040820135838111156148d557600080fd5b8083019250508a603f8301126148ea57600080fd5b868201356148f781613d40565b6040516149048282613c83565b82815260059290921b84016040019189810191508d83111561492557600080fd5b604085015b8381101561495d57868135111561494057600080fd5b6149508f60408335890101613d63565b8352918a01918a0161492a565b50838a015250508552505091830191830161485f565b6000604080838503121561498657600080fd5b805161499181613c3f565b91508183356001600160401b03808211156149ab57600080fd5b818601915086601f8301126149bf57600080fd5b813560206149cc82613d40565b86516149d88282613c83565b83815260059390931b850182019282810191508a8411156149f857600080fd5b8286015b84811015614a8b57803586811115614a145760008081fd5b8701808d03601f19018a1315614a2a5760008081fd5b8951614a3581613c3f565b8582013588811115614a475760008081fd5b614a558f8883860101613d63565b8252508a82013588811115614a6a5760008081fd5b614a788f8883860101613d63565b82880152508452509183019183016149fc565b5086525087810135955082861115614aa257600080fd5b61407089878a01614810565b600060e08284031215614ac057600080fd5b614ac8613caf565b905081356001600160401b0380821115614ae157600080fd5b614aed85838601613f46565b83526020840135915080821115614b0357600080fd5b614b0f858386016141d8565b60208401526040840135915080821115614b2857600080fd5b614b34858386016141d8565b60408401526060840135915080821115614b4d57600080fd5b614b5985838601614448565b60608401526080840135915080821115614b7257600080fd5b614b7e858386016141d8565b608084015260a0840135915080821115614b9757600080fd5b614ba3858386016146d5565b60a084015260c0840135915080821115614bbc57600080fd5b50614bc984828501614973565b60c08301525092915050565b60008060408385031215614be857600080fd5b8235915060208301356001600160401b03811115614c0557600080fd5b614c1185828601614aae565b9150509250929050565b60008060408385031215614c2e57600080fd5b8235614c3981613b0d565b91506020830135613b6e81613b0d565b600060e08284031215614c5b57600080fd5b60405160e081016001600160401b0381118282101715614c7d57614c7d613c29565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201525092915050565b600060208284031215614cde57600080fd5b604051602081016001600160401b0381118282101715614d0057614d00613c29565b6040529050808235614d1181613b32565b905292915050565b600080600060608486031215614d2e57600080fd5b8335925060208401356001600160401b0380821115614d4c57600080fd5b908501906101208288031215614d6157600080fd5b604051614d6d81613c64565b823582811115614d7c57600080fd5b830160e0818a031215614d8e57600080fd5b614d96613caf565b614d9f82613b22565b8152614dad60208301613b22565b6020820152614dbe60408301613b22565b6040820152614dcf60608301613b22565b6060820152614de060808301613b22565b608082015260a082013584811115614df757600080fd5b614e038b828501613dd6565b60a08301525060c082013584811115614e1b57600080fd5b614e278b828501613dd6565b60c083015250825250614e3d8860208501614c49565b6020820152614e50886101008501614ccc565b6040820152809450506040860135915080821115614e6d57600080fd5b50614e7a86828701614aae565b9150509250925092565b60008060008060808587031215614e9a57600080fd5b843593506020850135614eac81613b0d565b92506040850135614ebc81613b0d565b91506060850135614ecc81613b0d565b939692955090935050565b600060208284031215614ee957600080fd5b5035919050565b60006101008201905060018060a01b0380845116835260208401516020840152604084015160408401526060840151151560608401526080840151151560808401528060a08501511660a08401525060c083015160c083015260e0830151614f5b60e0840182613b9d565b5092915050565b600080600060608486031215614f7757600080fd5b8335614f8281613b0d565b9250602084013591506040840135614f9981613b32565b809150509250925092565b60008060408385031215614fb757600080fd5b823562ffffff81168114614c3957600080fd5b600080600060608486031215614fdf57600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561500b57600080fd5b8335925060208401356001600160401b038082111561502957600080fd5b818601915061012080838903121561504057600080fd5b60405161504c81613c64565b83358381111561505b57600080fd5b8401808a0383131561506c57600080fd5b615074613cd7565b925061507f81613b22565b835261508d60208201613b22565b602084015261509e60408201613b22565b60408401526150af60608201613b22565b60608401526150c060808201613b22565b60808401526150d160a08201613b22565b60a08401526150e260c08201613b22565b60c084015260e0810135848111156150f957600080fd5b6151058b828401613dd6565b60e085015250610100808201358581111561511f57600080fd5b61512b8c828501613dd6565b82860152508383526151408b60208801614c49565b60208401526151518b828801614ccc565b6040840152505080955050506040860135915080821115614e6d57600080fd5b60006101208201905060018060a01b0383511682526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c0830151151560c083015260e08301516151d960e084018261ffff169052565b50610100808401516151ed82850182613b9d565b505092915050565b60008060008060008060c0878903121561520e57600080fd5b863561521981613b0d565b9550602087013561522981613b0d565b9450604087013561523981613b0d565b9350606087013561524981613b0d565b9250608087013561525981613b0d565b915060a087013561526981613b0d565b809150509295509295509295565b6001600160a01b03929092168252602082015260400190565b6000604082840312156152a257600080fd5b6040516152ae81613c3f565b80915082518152602083015160208201525092915050565b6000604082840312156152d857600080fd5b610b098383615290565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b0c57610b0c6152e2565b81810381811115610b0c57610b0c6152e2565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b8051613b2d81613b32565b60006020828403121561536457600080fd5b8151613b9681613b32565b9283526020830191909152604082015260600190565b8051613b2d81613b0d565b600060c082840312156153a257600080fd5b60405160c081016001600160401b03811182821017156153c4576153c4613c29565b60405282516153d281613b0d565b815260208301516153e281613b0d565b602082015260408301516153f581613b0d565b6040820152606083015161540881613b0d565b6060820152608083015161541b81613b0d565b608082015261542c60a08401615385565b60a08201529392505050565b60006101a08201905060018060a01b03808a1683528089511660208401528060208a01511660408401528060408a01511660608401528060608a01511660808401525061548860a0830188613bd6565b61549560e0830187613bd6565b6154a3610120830186613bd6565b8361016083015282151561018083015298975050505050505050565b6000808284036101808112156154d457600080fd5b8351925061016080601f19830112156154ec57600080fd5b6154f4613cfa565b91506020850151825260408501516020830152606085015160408301526080850151606083015260a0850151608083015260c085015160a083015260e085015160c08301526101008086015160e08401526101208087015182850152610140915081870151818501525081860151818401525050809150509250929050565b634e487b7160e01b600052601260045260246000fd5b60008261559857615598615573565b600160ff1b8214600019841416156155b2576155b26152e2565b500590565b6020808252600a908201526921a7a72a2927a62622a960b11b604082015260600190565b6020808252600f908201526e4e6f742070726f70657220726f6c6560881b604082015260600190565b60006020828403121561561657600080fd5b8151613b9681613b0d565b60006020828403121561563357600080fd5b5051919050565b600061010080838503121561564e57600080fd5b604051908101906001600160401b038211818310171561567057615670613c29565b8160405261567d84615385565b8152602084015160208201526040840151604082015261569f60608501615347565b60608201526156b060808501615347565b60808201526156c160a08501615385565b60a082015260c084015160c08201526156dc60e08501615385565b60e0820152949350505050565b6020808252600c908201526b5a65726f206164647265737360a01b604082015260600190565b60208082526009908201526804e6f203020737761760bc1b604082015260600190565b6001600160a01b039586168152938516602085015260408401929092526060830152909116608082015260a00190565b805163ffffffff81168114613b2d57600080fd5b805161ffff81168114613b2d57600080fd5b6000610180828403121561579b57600080fd5b6157a3613d1d565b82518152602083015160208201526040830151604082015260608301516060820152608083015160808201526157db60a08401615385565b60a08201526157ec60c08401615762565b60c08201526157fd60e08401615385565b60e0820152610100615810818501615776565b90820152610120615822848201615347565b90820152610140615834848201615347565b90820152610160615846848201615385565b908201529392505050565b8082028115828204841417610b0c57610b0c6152e2565b60008261587757615877615573565b500490565b80516001600160501b0381168114613b2d57600080fd5b600080600080600060a086880312156158ab57600080fd5b6158b48661587c565b94506020860151935060408601519250606086015191506158d76080870161587c565b90509295509295909350565b600060033d11156158fc5760046000803e5060005160e01c5b90565b600060443d101561590d5790565b6040516003193d81016004833e81513d6001600160401b03808311602484018310171561593c57505050505090565b82850191508151818111156159545750505050505090565b843d870101602082850101111561596e5750505050505090565b61597d60208286010187613c83565b509095945050505050565b634e487b7160e01b600052603260045260246000fd5b600061012082840312156159b157600080fd5b6159b9613cd7565b6159c283615385565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a0820152615a0260c08401615347565b60c0820152615a1360e08401615776565b60e0820152610100615846818501615385565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b83811015615a8c578181015183820152602001615a74565b50506000910152565b60008151808452615aad816020860160208601615a71565b601f01601f19169290920160200192915050565b602081526000825160a06020840152615add60c0840182615a95565b905060018060a01b0360208501511660408401526040840151606084015260608401516080840152608084015160a08401528091505092915050565b60008251615b2b818460208701615a71565b9190910192915050565b602081526000610b096020830184615a9556fea2646970667358221220a986c29e8b9baaaf51f38ae39d3203411562e784e2bb28972e5c3a8bb30083dd64736f6c63430008130033