0 txs
12 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)
getPositionInfo
viewfunction getPositionInfo(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)
fix
nonpayablefunction fix(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)
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)
SecondarySwapRequested
event SecondarySwapRequested(bytes32 key, uint256 leftOver)
StrategyParamsSet
event StrategyParamsSet(address univ3Router, address dataStore, address oracle, address reader, address depositHandler, address withdrawalHandler)
SwapRequested
event SwapRequested(bytes32 key, uint256 longAmount)
Unpaused
event Unpaused(address account)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61600080620000f36000396000f3fe6080604052600436106102275760003560e01c80630afda351146102335780630fa63fe414610255578063100e196d146102a15780631327d7fb1461034c57806319c2d37e146103795780631b007922146103a657806321d41b32146103c65780632f2708a2146104075780633201ab4d14610427578063395aef8e146104475780633a2cb99f1461048a5780633c372240146104b8578063485cc955146104cb57806349df728c146104eb5780635c975abb1461050b5780635ce98de7146105235780635f82eba814610543578063715018a61461056357806372ccfa6014610578578063753672d51461059857806376f1ef10146105b95780637db2bd3e146105d95780638c4d0d601461060a5780638da5cb5b1461063b57806394fce92b1461065057806396e1ae101461067d5780639a4a1a9a146106ae5780639f093871146106ce5780639f17af9914610760578063a5efb24d14610780578063a7c49f5a146107a0578063a8f098d2146107d7578063ad5c4648146107f8578063b17f7c6314610819578063b2fd949514610839578063b63d53541461084c578063ba871dcd1461086c578063bf3810a91461088c578063c4b2b980146108ac578063c9888ec1146108cc578063c9ac221a146108ec578063cc6624661461090c578063ceb0c4451461092c578063e88c356114610959578063f2fde38b14610a23578063f5faa89214610a43578063fd77d17514610a74578063ff06f7b214610a9457600080fd5b3661022e57005b600080fd5b34801561023f57600080fd5b5061025361024e366004613bd5565b610ab4565b005b34801561026157600080fd5b50610288610270366004613c0e565b61010c6020526000908152604090205462ffffff1681565b60405162ffffff90911681526020015b60405180910390f35b3480156102ad57600080fd5b5060c95460ca5460cb5460cc5460cd5460ce5460cf5460d05460d1546102f2986001600160a01b03908116988116978116968116958116948116938116928116911689565b604080516001600160a01b039a8b168152988a1660208a01529689169688019690965293871660608701529186166080860152851660a0850152841660c0840152831660e083015290911661010082015261012001610298565b34801561035857600080fd5b5061036c610367366004613c3f565b610ae8565b6040516102989190613c6b565b34801561038557600080fd5b50610399610394366004613c3f565b610bc2565b6040516102989190613d31565b3480156103b257600080fd5b506102536103c1366004613c0e565b610c46565b3480156103d257600080fd5b506103f76103e1366004613c0e565b6101146020526000908152604090205460ff1681565b6040519015158152602001610298565b34801561041357600080fd5b50610253610422366004613bd5565b610c71565b34801561043357600080fd5b50610253610442366004613d3f565b610ca5565b34801561045357600080fd5b5061047d610462366004613c0e565b60d4602052600090815260409020546001600160a01b031681565b6040516102989190613d61565b34801561049657600080fd5b506104aa6104a5366004613c0e565b610fd3565b604051908152602001610298565b6102536104c6366004615082565b61124e565b3480156104d757600080fd5b506102536104e63660046150c8565b6114ee565b3480156104f757600080fd5b50610253610506366004613c0e565b611648565b34801561051757600080fd5b5060975460ff166103f7565b34801561052f57600080fd5b5061025361053e366004613c0e565b6116d5565b34801561054f57600080fd5b5060d55461047d906001600160a01b031681565b34801561056f57600080fd5b50610253611700565b34801561058457600080fd5b506102536105933660046151c6565b611714565b3480156105a457600080fd5b506101135461047d906001600160a01b031681565b3480156105c557600080fd5b506104aa6105d4366004615331565b61182d565b3480156105e557600080fd5b506103f76105f4366004613c0e565b61010d6020526000908152604090205460ff1681565b34801561061657600080fd5b506103f7610625366004615384565b6101126020526000908152604090205460ff1681565b34801561064757600080fd5b5061047d61188f565b34801561065c57600080fd5b5061067061066b366004615384565b61189e565b604051610298919061539d565b34801561068957600080fd5b506103f7610698366004615384565b6101116020526000908152604090205460ff1681565b3480156106ba57600080fd5b506104aa6106c936600461540f565b611949565b3480156106da57600080fd5b506107296106e9366004615384565b60d2602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949593949293919290919060ff1687565b604080519788526020880196909652948601939093526060850191909152608084015260a0830152151560c082015260e001610298565b34801561076c57600080fd5b5061025361077b366004613bd5565b611c27565b34801561078c57600080fd5b5061025361079b366004615451565b611c5b565b3480156107ac57600080fd5b5061047d6107bb366004615384565b610110602052600090815260409020546001600160a01b031681565b3480156107e357600080fd5b5061010a5461047d906001600160a01b031681565b34801561080457600080fd5b5061010b5461047d906001600160a01b031681565b34801561082557600080fd5b50610253610834366004613d3f565b611cff565b610253610847366004615384565b611d66565b34801561085857600080fd5b5060d65461047d906001600160a01b031681565b34801561087857600080fd5b506104aa610887366004615477565b612134565b34801561089857600080fd5b506104aa6108a7366004613bd5565b6122d5565b3480156108b857600080fd5b506102536108c73660046154a3565b61255d565b3480156108d857600080fd5b506104aa6108e7366004613c3f565b6129e3565b3480156108f857600080fd5b506102536109073660046151c6565b612a14565b34801561091857600080fd5b506102536109273660046150c8565b612e89565b34801561093857600080fd5b5061094c610947366004615384565b612ee5565b604051610298919061561e565b34801561096557600080fd5b506109d1610974366004615384565b61010f60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701549596949593949293919290916001600160a01b0391821691811690600160a01b900460ff1689565b60408051998a5260208a0198909852968801959095526060870193909352608086019190915260a08501526001600160a01b0390811660c08501521660e0830152151561010082015261012001610298565b348015610a2f57600080fd5b50610253610a3e366004613c0e565b612fba565b348015610a4f57600080fd5b506103f7610a5e366004613c0e565b61010e6020526000908152604090205460ff1681565b348015610a8057600080fd5b50610253610a8f3660046154a3565b613030565b348015610aa057600080fd5b50610253610aaf36600461569a565b613186565b610abc613254565b6001600160a01b0391909116600090815261011460205260409020805460ff1916911515919091179055565b6040805161018081018252600080825260208201819052818301819052606082018190526080820181905260a0820181905260c0820181905260e0820181905261010082018190526101208201819052610140820181905261016082015260cb54915163de91a5e560e01b815290916001600160a01b03169063de91a5e590610b77908690869060040161571c565b61018060405180830381865afa158015610b95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb99190615771565b90505b92915050565b6040805180820182526000808252602082015260cb5491516301e73a5f60e61b815290916001600160a01b0316906379ce97c090610c06908690869060040161571c565b6040805180830381865afa158015610c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb99190615870565b610c4e613254565b61010980546001600160a01b0319166001600160a01b0392909216919091179055565b610c79613254565b6001600160a01b0391909116600090815261010d60205260409020805460ff1916911515919091179055565b610cad6132b3565b610113546001600160a01b0316331480610cdf5750610cca61188f565b6001600160a01b0316336001600160a01b0316145b610d1e5760405162461bcd60e51b815260206004820152600b60248201526a2737ba1039bbb0b83832b960a91b60448201526064015b60405180910390fd5b6000610d298361189e565b600084815261010f602052604080822083519184015193945092610d4d9190610bc2565b6000868152610111602052604090205490915060ff168015610d7f57506000858152610112602052604090205460ff16155b15610e035780516001830154610d969086906158a2565b610da091906158b5565b600383019081556000868152610112602052604090819020805460ff191660011790558354915490517f8d2d0d1e2cffc9f977d293e5d2bfba9a7d638aec7717d9e8b507e2fd924a2b2192610df69290916158c8565b60405180910390a1610fc2565b80516020820151600090610e189087906158a2565b60cb5460c954919250610e38916001600160a01b0390811691168361330c565b60cb5460a0860151610e57916001600160a01b0391821691168461330c565b60078401805460ff60a01b1916600160a01b1790556080850151610f0c5760cb54600185015460028601546001600160a01b0390921691639137be7a918a9186918691610ea5918591612134565b6040518563ffffffff1660e01b8152600401610ec494939291906158d6565b6020604051808303816000875af1158015610ee3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0791906158f1565b610f83565b60cb54604051635f4e6fb760e11b81526001600160a01b039091169063be9cdf6e90610f40908a908690869060040161590e565b6020604051808303816000875af1158015610f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8391906158f1565b507f9c341c91384ec36b9d393c98615da5bf201c12f801111ca44b299c61a6b3730b878284604051610fb79392919061590e565b60405180910390a150505b505050610fcf6001606555565b5050565b60cb54604051639c735fbb60e01b815260009182916001600160a01b0390911690639c735fbb90611008908690600401613d61565b60c060405180830381865afa158015611025573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110499190615924565b90506000604051806080016040528083604001516001600160a01b0316815260200183606001516001600160a01b0316815260200183600001516001600160a01b0316815260200183602001516001600160a01b03168152509050600060405180604001604052806110c0856060015160016122d5565b81526020016110d4856060015160016122d5565b8152509050600060405180604001604052806110f18860016122d5565b81526020016111018860016122d5565b90526040805180820190915260c954919250600091819061112c906001600160a01b031660016122d5565b815260c95460209091019061114b906001600160a01b031660016122d5565b905260cf5460cd546040519293506000926001600160a01b039283169263095ce6c592169088908890889088906111b4906020016020808252601b908201527a4d41585f504e4c5f464143544f525f464f525f4445504f5349545360281b604082015260600190565b6040516020818303038152906040528051906020012060006040518863ffffffff1660e01b81526004016111ee97969594939291906159cc565b61018060405180830381865afa15801561120c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112309190615a53565b50905061124264e8d4a5100082615b1d565b98975050505050505050565b60d6546040516001600160a01b039091169063ac4ab3fb90339061127490602001615b4b565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b81526004016112a792919061571c565b602060405180830381865afa1580156112c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e891906158f1565b6113045760405162461bcd60e51b8152600401610d1590615b6f565b600061130f83612ee5565b9050600061131c8461189e565b82519091506001600160a01b031661148c5760cb54604051631f6f85f960e11b8152600481018690526001600160a01b0390911690633edf0bf290602401602060405180830381865afa158015611377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139b91906158f1565b156114335760cb546040805163aced166160e01b815290516001600160a01b039092169163aced1661916004808201926020929091908290030181865afa1580156113ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140e9190615b98565b60d580546001600160a01b0319166001600160a01b03929092169190911790556114ae565b8060800151156114665760e081015160d580546001600160a01b0319166001600160a01b039092169190911790556114ae565b805160d580546001600160a01b0319166001600160a01b039092169190911790556114ae565b815160d580546001600160a01b0319166001600160a01b039092169190911790555b60d5546040516001600160a01b03909116903480156108fc02916000818181858888f193505050501580156114e7573d6000803e3d6000fd5b5050505050565b600054610100900460ff161580801561150e5750600054600160ff909116105b8061152f575061151d30613369565b15801561152f575060005460ff166001145b6115925760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610d15565b6000805460ff1916600117905580156115b5576000805461ff0019166101001790555b60cb80546001600160a01b038085166001600160a01b03199283161790925560c98054928616929091169190911790556115ed613378565b6115f56133a7565b6115fd6133d6565b8015611643576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b611650613254565b6116d233826001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016116809190613d61565b602060405180830381865afa15801561169d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c19190615bb5565b6001600160a01b038416919061330c565b50565b6116dd613254565b61011380546001600160a01b0319166001600160a01b0392909216919091179055565b611708613254565b6117126000613405565b565b60d6546040516001600160a01b039091169063ac4ab3fb90339061173a90602001615b4b565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b815260040161176d92919061571c565b602060405180830381865afa15801561178a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ae91906158f1565b6117ca5760405162461bcd60e51b8152600401610d1590615b6f565b60cb546040516365f1680b60e11b8152600481018590526001600160a01b039091169063cbe2d01690602401600060405180830381600087803b15801561181057600080fd5b505af1158015611824573d6000803e3d6000fd5b50505050505050565b60cb546000906001600160a01b031633146118785760405162461bcd60e51b815260206004820152600b60248201526a2737ba102b37b235b0ab1960a91b6044820152606401610d15565b61188485858585613457565b90505b949350505050565b6033546001600160a01b031690565b6040805161010081018252600080825260208201819052818301819052606082018190526080820181905260a0820181905260c0820181905260e082015260cb54915163191618a160e21b81526004810184905290916001600160a01b03169063645862849060240161010060405180830381865afa158015611925573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbc9190615bce565b60cb54604051639c735fbb60e01b815260009182916001600160a01b0390911690639c735fbb9061197e908890600401613d61565b60c060405180830381865afa15801561199b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bf9190615924565b90506119c9613b58565b60408051608081018252838201516001600160a01b0390811682526060808601805183166020808601919091528751841685870152808801518416928501929092529085018990528715158585015260ce5490519351631773dc6560e21b815292936000939190921691635dcf719491611a469190600401613d61565b6040805180830381865afa158015611a62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a869190615870565b60ce548551604051631773dc6560e21b81529293506000926001600160a01b0390921691635dcf719491611abc91600401613d61565b6040805180830381865afa158015611ad8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611afc9190615870565b60ce546020870151604051631773dc6560e21b81529293506000926001600160a01b0390921691635dcf719491611b3591600401613d61565b6040805180830381865afa158015611b51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b759190615870565b60cf5460cd5460208801516040808a0151905163095ce6c560e01b81529495506001600160a01b039384169463095ce6c594611bbf9416928a928a928a928a9290916004016159cc565b61018060405180830381865afa158015611bdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c019190615a53565b50808652611c159064e8d4a5100090615b1d565b94859052509298975050505050505050565b611c2f613254565b6001600160a01b0391909116600090815261010e60205260409020805460ff1916911515919091179055565b611c63613254565b6001600160a01b038116611c895760405162461bcd60e51b8152600401610d1590615c7d565b6113888262ffffff161115611ccf5760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b6044820152606401610d15565b6001600160a01b0316600090815261010c60205260409020805462ffffff191662ffffff92909216919091179055565b611d07613254565b600082815261010f6020526040812090611d208461189e565b90506000611d3682600001518360400151610bc2565b90508060000151848460010154611d4d91906158a2565b611d5791906158b5565b83600301819055505050505050565b611d6e6132b3565b60cb546040805163aced166160e01b815290516001600160a01b039092169163aced1661916004808201926020929091908290030181865afa158015611db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddc9190615b98565b6001600160a01b0316336001600160a01b031614611e295760405162461bcd60e51b815260206004820152600a6024820152692737ba1035b2b2b832b960b11b6044820152606401610d15565b600081815261010f6020526040902060068101546001600160a01b0316611e7f5760405162461bcd60e51b815260206004820152600a602482015269139bc81c995c5d595cdd60b21b6044820152606401610d15565b6007810154600160a01b900460ff1615611ec45760405162461bcd60e51b8152600401610d1590602080825260049082015263646f6e6560e01b604082015260600190565b6006810154600782015460038301546001600160a01b039283169290911690151580611eff57506000848152610111602052604090205460ff165b1561200a5761011354600384015460405163095ea7b360e01b81526001600160a01b038581169363095ea7b393611f3d93929091169160040161571c565b6020604051808303816000875af1158015611f5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8091906158f1565b5061011354600384015460008681526101106020526040908190205490516341c70b0160e11b81526001600160a01b039384169363838e1602933493611fd393899389938d939092911690600401615ca3565b6000604051808303818588803b158015611fec57600080fd5b505af1158015612000573d6000803e3d6000fd5b5050505050612127565b60c9546101135460048086015460405163095ea7b360e01b81526001600160a01b039485169463095ea7b39461204494911692910161571c565b6020604051808303816000875af1158015612063573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208791906158f1565b50600084815261011160209081526040808320805460ff191660011790556101135460c954600480890154610110909552948390205492516341c70b0160e11b81526001600160a01b039283169563838e16029534956120f495948516948a948e94929091169101615ca3565b6000604051808303818588803b15801561210d57600080fd5b505af1158015612121573d6000803e3d6000fd5b50505050505b5050506116d26001606555565b6000806121408561189e565b9050600061215682600001518360400151610ae8565b9050600061216c83600001518460400151610bc2565b9050600061217f8460a0015160006122d5565b61010a5460a086015191925060009182916001600160a01b039081169116036121ed5768056bc75e2d631000006121b6848b615cd3565b6121c09190615cea565b915068056bc75e2d631000008385600001516121dc9190615cd3565b6121e69190615cea565b905061223a565b68327cb2734119d3b7a9601e1b612204848b615cd3565b61220e9190615cea565b915068327cb2734119d3b7a9601e1b83856000015161222d9190615cd3565b6122379190615cea565b90505b60c954600090612254906001600160a01b031660016122d5565b9050600069d3c21bcecceda100000061226d838c615cd3565b6122779190615cea565b9050600061228582866158a2565b8851602089015191925060009161229c90876158a2565b6122a691906158a2565b905060008183116122b85760006122c2565b6122c282846158b5565b9f9e505050505050505050505050505050565b600080600061010960009054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561232e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123529190615d15565b5091945092505082159050600061236983426158b5565b9050610e1081116123b45760405162461bcd60e51b815260206004820152601560248201527423b930b1b2903832b934b7b2103737ba1037bb32b960591b6044820152606401610d15565b816123f55760405162461bcd60e51b815260206004820152601160248201527029b2b8bab2b731b2b91034b9903237bbb760791b6044820152606401610d15565b6001600160a01b03808816600090815260d46020526040808220548151633fabe5a360e21b815291519293169163feaf968c9160048082019260a0929091908290030181865afa15801561244d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124719190615d15565b5050506001600160a01b038a16600090815261010d6020526040812054919350915060ff16156124be576124aa826402540be400615cd3565b6124b790620f4240615cd3565b9050611242565b61010a546001600160a01b03908116908a16036124f0576124e4826402540be400615cd3565b6124b790612710615cd3565b6001600160a01b0389166000908152610114602052604090205460ff161561253357662386f26fc10000612529836402540be400615cd3565b6124b79190615cea565b620f4240612546836402540be400615cd3565b6125509190615cea565b9998505050505050505050565b60d6546040516001600160a01b039091169063ac4ab3fb90339061258390602001615b4b565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b81526004016125b692919061571c565b602060405180830381865afa1580156125d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f791906158f1565b6126135760405162461bcd60e51b8152600401610d1590615b6f565b600061261e84612ee5565b60cb54610100820151604051639c735fbb60e01b81529293506000926001600160a01b0390921691639c735fbb9161265891600401613d61565b60c060405180830381865afa158015612675573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126999190615924565b600086815260d260205260409081902060cb548351925163dde5b42760e01b815293945090926001600160a01b039091169163dde5b427916126de9190600401613d61565b600060405180830381600087803b1580156126f857600080fd5b505af115801561270c573d6000803e3d6000fd5b505050506000836060015186602001516020015161272a91906158b5565b60808085015190860151855192935061274d926001600160a01b03169190613743565b6127778360a00151856060015185602001516001600160a01b03166137439092919063ffffffff16565b60a0830151606085015160405163015cb0a560e01b81526001600160a01b039092169163015cb0a5916127ae9181906004016158c8565b6020604051808303816000875af11580156127cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127f191906158f1565b506080808401519085015160405163015cb0a560e01b81526001600160a01b039092169163015cb0a5916128299181906004016158c8565b6020604051808303816000875af1158015612848573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286c91906158f1565b5060c954845160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb9161289f91859060040161571c565b6020604051808303816000875af19250505080156128da575060408051601f3d908101601f191682019092526128d7918101906158f1565b60015b612935576128e6615d65565b806308c379a00361292957506128fa615d81565b80612905575061292b565b61292361291061188f565b60c9546001600160a01b0316908461330c565b5061297b565b505b3d6000803e3d6000fd5b806129795760405162461bcd60e51b81526020600482015260146024820152731554d110c81d1c985b9cd9995c8819985a5b195960621b6044820152606401610d15565b505b50602080840151600180840191909155608085015160028401556060850151600384015560068301805460ff1916821790556000600590930183905593516001600160a01b0316825260d3815260408220805494850181558252902090910193909355505050565b60d360205281600052604060002081815481106129ff57600080fd5b90600052602060002001600091509150505481565b60d6546040516001600160a01b039091169063ac4ab3fb903390612a3a90602001615b4b565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b8152600401612a6d92919061571c565b602060405180830381865afa158015612a8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aae91906158f1565b612aca5760405162461bcd60e51b8152600401610d1590615b6f565b6000612ad58461189e565b90506000612aeb82600001518360400151610bc2565b9050612af5613b58565b6000846020015160000151600081518110612b1257612b12615e0a565b60200260200101516020015190506000856020015160000151600181518110612b3d57612b3d615e0a565b60209081029190910181015181015160a08701516001600160a01b0316600090815261010e90925260409091205490915060ff16612deb576000808560000151841115612bd9578551600090612b9390866158b5565b9050612b9f81866158b5565b60a089015160c954919450612bc0918391906001600160a01b031630613457565b60808701819052612bd190856158a2565b915050612c6f565b6000866020015184612beb91906158b5565b60c95460a08a0151919250612c0c9183916001600160a01b03169030613457565b60a087018190528751600091612c239088906158a2565b612c2d91906158b5565b60a08a015160c954919250600091612c509184916001600160a01b031630613457565b905088600001519450808960200151612c6991906158a2565b93505050505b670de0b6b3a764000082612c888960a0015160016122d5565b612c929190615cd3565b612c9c9190615cea565b60c086015260cb5460c954612cbe916001600160a01b0391821691168361330c565b60cb5460a0880151612cdd916001600160a01b0391821691168461330c565b8660800151612d6c5760cb546001600160a01b0316639137be7a8b8484612d05838a8a612134565b6040518563ffffffff1660e01b8152600401612d2494939291906158d6565b6020604051808303816000875af1158015612d43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6791906158f1565b612de3565b60cb54604051635f4e6fb760e11b81526001600160a01b039091169063be9cdf6e90612da0908d908690869060040161590e565b6020604051808303816000875af1158015612dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de391906158f1565b505050612e7f565b60cb5460a0860151604051639c735fbb60e01b81526000926001600160a01b031691639c735fbb91612e209190600401613d61565b60c060405180830381865afa158015612e3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e619190615924565b9050612e7d8984848860000151896020015186604001516137e1565b505b5050505050505050565b612e91613254565b6001600160a01b038216612eb75760405162461bcd60e51b8152600401610d1590615c7d565b6001600160a01b03918216600090815260d46020526040902080546001600160a01b03191691909216179055565b612f4c60405180610120016040528060006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600061ffff16815260200160006001600160a01b031681525090565b60cb5460405163546fcf3960e01b8152600481018490526001600160a01b039091169063546fcf399060240161012060405180830381865afa158015612f96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbc9190615e20565b612fc2613254565b6001600160a01b0381166130275760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d15565b6116d281613405565b60d6546040516001600160a01b039091169063ac4ab3fb90339061305690602001615b4b565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b815260040161308992919061571c565b602060405180830381865afa1580156130a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130ca91906158f1565b6130e65760405162461bcd60e51b8152600401610d1590615b6f565b60cb5460208201515180516001600160a01b039092169163862a820891869160009061311457613114615e0a565b6020026020010151602001516040518363ffffffff1660e01b815260040161313d9291906158c8565b6020604051808303816000875af115801561315c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061318091906158f1565b50505050565b61318e613254565b60cc80546001600160a01b038881166001600160a01b0319928316811790935560cd8054898316908416811790915560ce8054898416908516811790915560cf8054898516908616811790915560d08054898616908716811790915560d18054958916959096168517909555604080519687526020870193909352918501526060840152608083019190915260a08201527f03f1afd7ce30865f51a6e0b71bd812eb2a48c45e187b710c8e67eaaa53c15c579060c00160405180910390a1505050505050565b3361325d61188f565b6001600160a01b0316146117125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d15565b6002606554036133055760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610d15565b6002606555565b6116438363a9059cbb60e01b848460405160240161332b92919061571c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526138e8565b6001606555565b6001600160a01b03163b151590565b600054610100900460ff1661339f5760405162461bcd60e51b8152600401610d1590615ea8565b6117126139bd565b600054610100900460ff166133ce5760405162461bcd60e51b8152600401610d1590615ea8565b6117126139ed565b600054610100900460ff166133fd5760405162461bcd60e51b8152600401610d1590615ea8565b611712613a20565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008460000361346957506000611887565b60cc5460405163095ea7b360e01b81526000916001600160a01b038088169263095ea7b39261349e9216908a9060040161571c565b6020604051808303816000875af11580156134bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134e191906158f1565b5061010b546001600160a01b03868116911614801590613510575061010b546001600160a01b03858116911614155b15613631576040805160a0810182526001600160a01b03878116600090815261010c60209081528482205461010b5480851684528684205460608d811b6001600160601b031990811660c08a015260e894851b6001600160e81b031990811660d48b015293821b811660d78a01529190931b90911660eb8701528a821b1660ee860152855160e281870301815261010286018752855288841691850191909152428486015283018a9052608083015260cc54925163c04b8d5960e01b81529192169063c04b8d59906135e6908490600401615f43565b6020604051808303816000875af1158015613605573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136299190615bb5565b915050611884565b60408051610100810182526001600160a01b038781168083528782166020808501918252600092835261010c90528482205462ffffff90811685870190815289851660608701908152426080880190815260a088018f815260c0890187815260e08a0197885260cc549a5163414bf38960e01b81528a518a16600482015296518916602488015293519094166044860152905186166064850152516084840152905160a48301525160c48201529051821660e48201529192169063414bf38990610104016020604051808303816000875af1158015613714573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137389190615bb5565b979650505050505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015613793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137b79190615bb5565b90506131808463095ea7b360e01b856137d086866158a2565b60405160240161332b92919061571c565b600086815261010f60205260408120906137fa8861189e565b8883556001830188905560028301879055905084871161381b576000613825565b61382585886158b5565b6003830155838611613838576000613842565b61384284876158b5565b600483015560a08101516006830180546001600160a01b03199081166001600160a01b03938416179091556007840180548216868416179055825160008b81526101106020526040908190208054909316919093161790556001830154600284015491517f4401575353e798e4b9855d5f81bb264f1115f08129e335d35c0db45f16ad6a83926138d6928c9290919061590e565b60405180910390a15050505050505050565b600061393d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613a479092919063ffffffff16565b905080516000148061395e57508080602001905181019061395e91906158f1565b6116435760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610d15565b600054610100900460ff166139e45760405162461bcd60e51b8152600401610d1590615ea8565b61171233613405565b600054610100900460ff16613a145760405162461bcd60e51b8152600401610d1590615ea8565b6097805460ff19169055565b600054610100900460ff166133625760405162461bcd60e51b8152600401610d1590615ea8565b6060611887848460008585600080866001600160a01b03168587604051613a6e9190615f9b565b60006040518083038185875af1925050503d8060008114613aab576040519150601f19603f3d011682016040523d82523d6000602084013e613ab0565b606091505b50915091506137388783838760608315613b29578251600003613b2257613ad685613369565b613b225760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d15565b5081611887565b6118878383815115613b3e5781518083602001fd5b8060405162461bcd60e51b8152600401610d159190615fb7565b604051806101000160405280600081526020016000801916815260200160001515815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b03811681146116d257600080fd5b8035613bc281613ba2565b919050565b80151581146116d257600080fd5b60008060408385031215613be857600080fd5b8235613bf381613ba2565b91506020830135613c0381613bc7565b809150509250929050565b600060208284031215613c2057600080fd5b8135613c2b81613ba2565b9392505050565b6001600160a01b03169052565b60008060408385031215613c5257600080fd5b8235613c5d81613ba2565b946020939093013593505050565b600061018082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a0830151613cb260a0840182613c32565b5060c0830151613cca60c084018263ffffffff169052565b5060e0830151613cdd60e0840182613c32565b506101008381015161ffff1690830152610120808401511515908301526101408084015115159083015261016080840151613d1a82850182613c32565b505092915050565b80518252602090810151910152565b60408101610bbc8284613d22565b60008060408385031215613d5257600080fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604081016001600160401b0381118282101715613daa57613daa613d75565b60405250565b606081016001600160401b0381118282101715613daa57613daa613d75565b601f8201601f191681016001600160401b0381118282101715613df457613df4613d75565b6040525050565b60405160e081016001600160401b0381118282101715613e1d57613e1d613d75565b60405290565b60405161012081016001600160401b0381118282101715613e1d57613e1d613d75565b60405161018081016001600160401b0381118282101715613e1d57613e1d613d75565b60405161016081016001600160401b0381118282101715613e1d57613e1d613d75565b60006001600160401b03821115613ea557613ea5613d75565b5060051b60200190565b600082601f830112613ec057600080fd5b81356001600160401b03811115613ed957613ed9613d75565b604051613ef0601f8301601f191660200182613dcf565b818152846020838601011115613f0557600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112613f3357600080fd5b81356020613f4082613e8c565b604051613f4d8282613dcf565b83815260059390931b8501820192828101915086841115613f6d57600080fd5b8286015b84811015613f91578035613f8481613ba2565b8352918301918301613f71565b509695505050505050565b600082601f830112613fad57600080fd5b81356020613fba82613e8c565b60408051613fc88382613dcf565b84815260059490941b8601830193838101925087851115613fe857600080fd5b8387015b858110156140865780356001600160401b038082111561400c5760008081fd5b90890190818b03601f19018513156140245760008081fd5b845161402f81613d8b565b87830135828111156140415760008081fd5b61404f8d8a83870101613eaf565b82525085830135828111156140645760008081fd5b6140728d8a83870101613f22565b828a01525086525050928401928401613fec565b50979650505050505050565b600060408083850312156140a557600080fd5b80516140b081613d8b565b91508183356001600160401b03808211156140ca57600080fd5b818601915086601f8301126140de57600080fd5b813560206140eb82613e8c565b86516140f78282613dcf565b83815260059390931b850182019282810191508a84111561411757600080fd5b8286015b84811015614199578035868111156141335760008081fd5b8701808d03601f19018a13156141495760008081fd5b895161415481613d8b565b85820135888111156141665760008081fd5b6141748f8883860101613eaf565b825250908a01359061418582613ba2565b80860191909152835291830191830161411b565b50865250878101359550828611156141b057600080fd5b6141bc89878a01613f9c565b8186015250505050505092915050565b600082601f8301126141dd57600080fd5b813560206141ea82613e8c565b604080516141f88382613dcf565b848152600594851b870184019484820193508886111561421757600080fd5b8488015b868110156143165780356001600160401b038082111561423b5760008081fd5b908a0190818c03601f19018613156142535760008081fd5b855161425e81613d8b565b88830135828111156142705760008081fd5b61427e8e8b83870101613eaf565b82525086830135828111156142935760008081fd5b8084019350508c603f8401126142ab57600091508182fd5b8883013591506142ba82613e8c565b87516142c68282613dcf565b83815292861b84018801928a810191508e8411156142e45760008081fd5b938801935b838510156143025784358252938a0193908a01906142e9565b828b0152508752505093850193850161421b565b509098975050505050505050565b6000604080838503121561433757600080fd5b805161434281613d8b565b91508183356001600160401b038082111561435c57600080fd5b818601915086601f83011261437057600080fd5b8135602061437d82613e8c565b86516143898282613dcf565b83815260059390931b850182019282810191508a8411156143a957600080fd5b8286015b8481101561441e578035868111156143c55760008081fd5b8701808d03601f19018a13156143db5760008081fd5b89516143e681613d8b565b85820135888111156143f85760008081fd5b6144068f8883860101613eaf565b825250908a01358582015283529183019183016143ad565b508652508781013595508286111561443557600080fd5b6141bc89878a016141cc565b6000604080838503121561445457600080fd5b805161445f81613d8b565b91508183356001600160401b038082111561447957600080fd5b818601915086601f83011261448d57600080fd5b8135602061449a82613e8c565b86516144a68282613dcf565b83815260059390931b850182019282810191508a8411156144c657600080fd5b8286015b8481101561441e578035868111156144e25760008081fd5b8701808d03601f19018a13156144f85760008081fd5b895161450381613d8b565b85820135888111156145155760008081fd5b6145238f8883860101613eaf565b825250908a01358582015283529183019183016144ca565b600082601f83011261454c57600080fd5b8135602061455982613e8c565b604080516145678382613dcf565b848152600594851b870184019484820193508886111561458657600080fd5b8488015b868110156143165780356001600160401b03808211156145aa5760008081fd5b908a0190818c03601f19018613156145c25760008081fd5b85516145cd81613d8b565b88830135828111156145df5760008081fd5b6145ed8e8b83870101613eaf565b82525086830135828111156146025760008081fd5b8084019350508c603f84011261461a57600091508182fd5b88830135915061462982613e8c565b87516146358282613dcf565b83815292861b84018801928a810191508e8411156146535760008081fd5b938801935b8385101561467a57843561466b81613bc7565b8252938a0193908a0190614658565b828b0152508752505093850193850161458a565b600060408083850312156146a157600080fd5b80516146ac81613d8b565b91508183356001600160401b03808211156146c657600080fd5b818601915086601f8301126146da57600080fd5b813560206146e782613e8c565b86516146f38282613dcf565b83815260059390931b850182019282810191508a84111561471357600080fd5b8286015b848110156147955780358681111561472f5760008081fd5b8701808d03601f19018a13156147455760008081fd5b895161475081613d8b565b85820135888111156147625760008081fd5b6147708f8883860101613eaf565b825250908a01359061478182613bc7565b808601919091528352918301918301614717565b50865250878101359550828611156147ac57600080fd5b6141bc89878a0161453b565b600082601f8301126147c957600080fd5b813560206147d682613e8c565b604080516147e48382613dcf565b848152600594851b870184019484820193508886111561480357600080fd5b8488015b868110156143165780356001600160401b03808211156148275760008081fd5b908a0190818c03601f190186131561483f5760008081fd5b855161484a81613d8b565b888301358281111561485c5760008081fd5b61486a8e8b83870101613eaf565b825250868301358281111561487f5760008081fd5b8084019350508c603f84011261489757600091508182fd5b8883013591506148a682613e8c565b87516148b28282613dcf565b83815292861b84018801928a810191508e8411156148d05760008081fd5b938801935b838510156148ee5784358252938a0193908a01906148d5565b828b01525087525050938501938501614807565b6000604080838503121561491557600080fd5b805161492081613d8b565b91508183356001600160401b038082111561493a57600080fd5b818601915086601f83011261494e57600080fd5b8135602061495b82613e8c565b86516149678282613dcf565b83815260059390931b850182019282810191508a84111561498757600080fd5b8286015b848110156149fc578035868111156149a35760008081fd5b8701808d03601f19018a13156149b95760008081fd5b89516149c481613d8b565b85820135888111156149d65760008081fd5b6149e48f8883860101613eaf565b825250908a013585820152835291830191830161498b565b5086525087810135955082861115614a1357600080fd5b6141bc89878a016147b8565b600082601f830112614a3057600080fd5b81356020614a3d82613e8c565b604051614a4a8282613dcf565b83815260059390931b8501820192828101915086841115614a6a57600080fd5b8286015b84811015613f91576001600160401b038135811015614a8c57600080fd5b813588016040818b03601f19011215614aa457600080fd5b604051614ab081613d8b565b8682013583811115614ac157600080fd5b614acf8c8983860101613eaf565b825250604082013583811115614ae457600080fd5b8083019250508a603f830112614af957600080fd5b86820135614b0681613e8c565b604051614b138282613dcf565b82815260059290921b84016040019189810191508d831115614b3457600080fd5b604085015b83811015614b6c578681351115614b4f57600080fd5b614b5f8f60408335890101613eaf565b8352918a01918a01614b39565b50838a0152505085525050918301918301614a6e565b60006040808385031215614b9557600080fd5b8051614ba081613d8b565b91508183356001600160401b0380821115614bba57600080fd5b818601915086601f830112614bce57600080fd5b81356020614bdb82613e8c565b8651614be78282613dcf565b83815260059390931b850182019282810191508a841115614c0757600080fd5b8286015b84811015614c9a57803586811115614c235760008081fd5b8701808d03601f19018a1315614c395760008081fd5b8951614c4481613d8b565b8582013588811115614c565760008081fd5b614c648f8883860101613eaf565b8252508a82013588811115614c795760008081fd5b614c878f8883860101613eaf565b8288015250845250918301918301614c0b565b5086525087810135955082861115614cb157600080fd5b6141bc89878a01614a1f565b600082601f830112614cce57600080fd5b81356020614cdb82613e8c565b604051614ce88282613dcf565b83815260059390931b8501820192828101915086841115614d0857600080fd5b8286015b84811015613f91576001600160401b038135811015614d2a57600080fd5b813588016040818b03601f19011215614d4257600080fd5b604051614d4e81613d8b565b8682013583811115614d5f57600080fd5b614d6d8c8983860101613eaf565b825250604082013583811115614d8257600080fd5b8083019250508a603f830112614d9757600080fd5b86820135614da481613e8c565b604051614db18282613dcf565b82815260059290921b84016040019189810191508d831115614dd257600080fd5b604085015b83811015614e0a578681351115614ded57600080fd5b614dfd8f60408335890101613eaf565b8352918a01918a01614dd7565b50838a0152505085525050918301918301614d0c565b60006040808385031215614e3357600080fd5b8051614e3e81613d8b565b91508183356001600160401b0380821115614e5857600080fd5b818601915086601f830112614e6c57600080fd5b81356020614e7982613e8c565b8651614e858282613dcf565b83815260059390931b850182019282810191508a841115614ea557600080fd5b8286015b84811015614f3857803586811115614ec15760008081fd5b8701808d03601f19018a1315614ed75760008081fd5b8951614ee281613d8b565b8582013588811115614ef45760008081fd5b614f028f8883860101613eaf565b8252508a82013588811115614f175760008081fd5b614f258f8883860101613eaf565b8288015250845250918301918301614ea9565b5086525087810135955082861115614f4f57600080fd5b6141bc89878a01614cbd565b600060e08284031215614f6d57600080fd5b614f75613dfb565b905081356001600160401b0380821115614f8e57600080fd5b614f9a85838601614092565b83526020840135915080821115614fb057600080fd5b614fbc85838601614324565b60208401526040840135915080821115614fd557600080fd5b614fe185838601614441565b60408401526060840135915080821115614ffa57600080fd5b6150068583860161468e565b6060840152608084013591508082111561501f57600080fd5b61502b85838601614902565b608084015260a084013591508082111561504457600080fd5b61505085838601614b82565b60a084015260c084013591508082111561506957600080fd5b5061507684828501614e20565b60c08301525092915050565b6000806040838503121561509557600080fd5b8235915060208301356001600160401b038111156150b257600080fd5b6150be85828601614f5b565b9150509250929050565b600080604083850312156150db57600080fd5b82356150e681613ba2565b91506020830135613c0381613ba2565b600060e0828403121561510857600080fd5b60405160e081016001600160401b038111828210171561512a5761512a613d75565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201525092915050565b60006020828403121561518b57600080fd5b604051602081016001600160401b03811182821017156151ad576151ad613d75565b60405290508082356151be81613bc7565b905292915050565b6000806000606084860312156151db57600080fd5b8335925060208401356001600160401b03808211156151f957600080fd5b90850190610120828803121561520e57600080fd5b60405161521a81613db0565b82358281111561522957600080fd5b830160e0818a03121561523b57600080fd5b615243613dfb565b61524c82613bb7565b815261525a60208301613bb7565b602082015261526b60408301613bb7565b604082015261527c60608301613bb7565b606082015261528d60808301613bb7565b608082015260a0820135848111156152a457600080fd5b6152b08b828501613f22565b60a08301525060c0820135848111156152c857600080fd5b6152d48b828501613f22565b60c0830152508252506152ea88602085016150f6565b60208201526152fd886101008501615179565b604082015280945050604086013591508082111561531a57600080fd5b5061532786828701614f5b565b9150509250925092565b6000806000806080858703121561534757600080fd5b84359350602085013561535981613ba2565b9250604085013561536981613ba2565b9150606085013561537981613ba2565b939692955090935050565b60006020828403121561539657600080fd5b5035919050565b60006101008201905060018060a01b0380845116835260208401516020840152604084015160408401526060840151151560608401526080840151151560808401528060a08501511660a08401525060c083015160c083015260e083015161540860e0840182613c32565b5092915050565b60008060006060848603121561542457600080fd5b833561542f81613ba2565b925060208401359150604084013561544681613bc7565b809150509250925092565b6000806040838503121561546457600080fd5b823562ffffff811681146150e657600080fd5b60008060006060848603121561548c57600080fd5b505081359360208301359350604090920135919050565b6000806000606084860312156154b857600080fd5b8335925060208401356001600160401b03808211156154d657600080fd5b81860191506101208083890312156154ed57600080fd5b6040516154f981613db0565b83358381111561550857600080fd5b8401808a0383131561551957600080fd5b615521613e23565b925061552c81613bb7565b835261553a60208201613bb7565b602084015261554b60408201613bb7565b604084015261555c60608201613bb7565b606084015261556d60808201613bb7565b608084015261557e60a08201613bb7565b60a084015261558f60c08201613bb7565b60c084015260e0810135848111156155a657600080fd5b6155b28b828401613f22565b60e08501525061010080820135858111156155cc57600080fd5b6155d88c828501613f22565b82860152508383526155ed8b602088016150f6565b60208401526155fe8b828801615179565b604084015250508095505050604086013591508082111561531a57600080fd5b60006101208201905060018060a01b0383511682526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c0830151151560c083015260e083015161568660e084018261ffff169052565b5061010080840151613d1a82850182613c32565b60008060008060008060c087890312156156b357600080fd5b86356156be81613ba2565b955060208701356156ce81613ba2565b945060408701356156de81613ba2565b935060608701356156ee81613ba2565b925060808701356156fe81613ba2565b915060a087013561570e81613ba2565b809150509295509295509295565b6001600160a01b03929092168252602082015260400190565b8051613bc281613ba2565b805163ffffffff81168114613bc257600080fd5b805161ffff81168114613bc257600080fd5b8051613bc281613bc7565b6000610180828403121561578457600080fd5b61578c613e46565b82518152602083015160208201526040830151604082015260608301516060820152608083015160808201526157c460a08401615735565b60a08201526157d560c08401615740565b60c08201526157e660e08401615735565b60e08201526101006157f9818501615754565b9082015261012061580b848201615766565b9082015261014061581d848201615766565b9082015261016061582f848201615735565b908201529392505050565b60006040828403121561584c57600080fd5b60405161585881613d8b565b80915082518152602083015160208201525092915050565b60006040828403121561588257600080fd5b610bb9838361583a565b634e487b7160e01b600052601160045260246000fd5b80820180821115610bbc57610bbc61588c565b81810381811115610bbc57610bbc61588c565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b60006020828403121561590357600080fd5b8151613c2b81613bc7565b9283526020830191909152604082015260600190565b600060c0828403121561593657600080fd5b60405160c081016001600160401b038111828210171561595857615958613d75565b604052825161596681613ba2565b8152602083015161597681613ba2565b6020820152604083015161598981613ba2565b6040820152606083015161599c81613ba2565b606082015260808301516159af81613ba2565b60808201526159c060a08401615735565b60a08201529392505050565b60006101a08201905060018060a01b03808a1683528089511660208401528060208a01511660408401528060408a01511660608401528060608a015116608084015250615a1c60a0830188613d22565b615a2960e0830187613d22565b615a37610120830186613d22565b8361016083015282151561018083015298975050505050505050565b600080828403610180811215615a6857600080fd5b8351925061016080601f1983011215615a8057600080fd5b615a88613e69565b91506020850151825260408501516020830152606085015160408301526080850151606083015260a0850151608083015260c085015160a083015260e085015160c08301526101008086015160e08401526101208087015182850152610140915081870151818501525081860151818401525050809150509250929050565b634e487b7160e01b600052601260045260246000fd5b600082615b2c57615b2c615b07565b600160ff1b821460001984141615615b4657615b4661588c565b500590565b6020808252600a908201526921a7a72a2927a62622a960b11b604082015260600190565b6020808252600f908201526e4e6f742070726f70657220726f6c6560881b604082015260600190565b600060208284031215615baa57600080fd5b8151613c2b81613ba2565b600060208284031215615bc757600080fd5b5051919050565b6000610100808385031215615be257600080fd5b604051908101906001600160401b0382118183101715615c0457615c04613d75565b81604052615c1184615735565b81526020840151602082015260408401516040820152615c3360608501615766565b6060820152615c4460808501615766565b6080820152615c5560a08501615735565b60a082015260c084015160c0820152615c7060e08501615735565b60e0820152949350505050565b6020808252600c908201526b5a65726f206164647265737360a01b604082015260600190565b6001600160a01b039586168152938516602085015260408401929092526060830152909116608082015260a00190565b8082028115828204841417610bbc57610bbc61588c565b600082615cf957615cf9615b07565b500490565b80516001600160501b0381168114613bc257600080fd5b600080600080600060a08688031215615d2d57600080fd5b615d3686615cfe565b9450602086015193506040860151925060608601519150615d5960808701615cfe565b90509295509295909350565b600060033d1115615d7e5760046000803e5060005160e01c5b90565b600060443d1015615d8f5790565b6040516003193d81016004833e81513d6001600160401b038083116024840183101715615dbe57505050505090565b8285019150815181811115615dd65750505050505090565b843d8701016020828501011115615df05750505050505090565b615dff60208286010187613dcf565b509095945050505050565b634e487b7160e01b600052603260045260246000fd5b60006101208284031215615e3357600080fd5b615e3b613e23565b615e4483615735565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a0820152615e8460c08401615766565b60c0820152615e9560e08401615754565b60e082015261010061582f818501615735565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b83811015615f0e578181015183820152602001615ef6565b50506000910152565b60008151808452615f2f816020860160208601615ef3565b601f01601f19169290920160200192915050565b602081526000825160a06020840152615f5f60c0840182615f17565b905060018060a01b0360208501511660408401526040840151606084015260608401516080840152608084015160a08401528091505092915050565b60008251615fad818460208701615ef3565b9190910192915050565b602081526000610bb96020830184615f1756fea26469706673582212204c9372758a83be1d21f4d3e5d586d93a83fd55227d6bf0a11139efb87148df9764736f6c63430008130033