0 txs
35.2k calls
constructor
constructor(address _gmxExchangeRouter)
functions
addAssetCheck
viewfunction addAssetCheck(address _poolLogic, tuple _asset) view
convert32toAddress
purefunction convert32toAddress(bytes32 data) pure returns (address o)
getArrayIndex
purefunction getArrayIndex(bytes data, uint8 inputNum, uint8 arrayIndex) pure returns (bytes32)
getArrayLast
purefunction getArrayLast(bytes data, uint8 inputNum) pure returns (bytes32)
getArrayLength
purefunction getArrayLength(bytes data, uint8 inputNum) pure returns (uint256)
getBalance
viewfunction getBalance(address _pool, address _asset) view returns (uint256 balance)
getBytes
purefunction getBytes(bytes data, uint8 inputNum, uint256 offset) pure returns (bytes)
getDecimals
purefunction getDecimals(address) pure returns (uint256 decimals)
getInput
purefunction getInput(bytes data, uint8 inputNum) pure returns (bytes32)
getMethod
purefunction getMethod(bytes data) pure returns (bytes4)
getParams
purefunction getParams(bytes data) pure returns (bytes)
gmxExchangeRouter
viewfunction gmxExchangeRouter() view returns (address)
isAddAssetCheckGuard
viewfunction isAddAssetCheckGuard() view returns (bool)
read32
purefunction read32(bytes data, uint256 offset, uint256 length) pure returns (bytes32 o)
read4left
purefunction read4left(bytes data, uint256 offset) pure returns (bytes4 o)
removeAssetCheck
viewfunction removeAssetCheck(address pool, address asset) view
txGuard
viewfunction txGuard(address poolManagerLogic, address, bytes data) view returns (uint16 txType, bool)
withdrawProcessing
viewfunction withdrawProcessing(address _pool, address _asset, uint256 _withdrawPortion, address) view returns (address withdrawAsset, uint256 withdrawBalance, tuple[] transactions)
events
No events.
errors
No errors.
creation bytecode
0x60a06040526000805460ff191660011790553480156200001e57600080fd5b5060405162005ff138038062005ff1833981016040819052620000419162000057565b60601b6001600160601b03191660805262000087565b60006020828403121562000069578081fd5b81516001600160a01b038116811462000080578182fd5b9392505050565b60805160601c615f47620000aa60003980610f305280611ee65250615f476000f3fe608060405234801561001057600080fd5b50600436106100e65760003560e01c806309ff5c7d146100eb5780631053f952146101145780631eba307714610134578063293d80631461015457806341dc16c3146101745780636179309d1461018757806368901513146101a85780636d5fae54146101bb5780636f8ae202146101d057806382f86acc146101f257806385fdb1241461020557806396e026bf14610218578063998546e31461022d578063c3c6279f14610240578063cf54aaa014610253578063d1018a2814610266578063d4fac45d1461026e578063db896b5714610281575b600080fd5b6100fe6100f9366004615077565b610294565b60405161010b91906157a2565b60405180910390f35b6101276101223660046150bb565b610327565b60405161010b9190615828565b610147610142366004614fa0565b6103c1565b60405161010b919061569b565b610167610162366004614fea565b6103c8565b60405161010b9190615813565b6100fe610182366004615112565b61042a565b61019a610195366004614afe565b610508565b60405161010b929190615dd4565b6101276101b6366004614fb8565b6106fe565b6101ce6101c9366004614ac6565b610719565b005b6101e36101de366004614b8a565b610c8c565b60405161010b93929190615709565b6100fe610200366004615077565b610da9565b6101ce610213366004614bdc565b610dc0565b610220610ee1565b60405161010b9190615797565b6100fe61023b366004615077565b610eea565b61016761024e366004614fb8565b610f1b565b6100fe610261366004614a8e565b610f28565b610147610f2e565b6100fe61027c366004614ac6565b610f52565b6100fe61028f36600461502c565b611cef565b6000806102ac848460200260040160ff166020611cef565b905060006102bf85600484016020611cef565b905080610308576040805162461bcd60e51b8152602060048201526012602482015271696e707574206973206e6f7420617272617960701b604482015290519081900360640190fd5b61031c856020808402850160040190611cef565b925050505b92915050565b60606014821061036f576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081bd9999cd95d60921b604482015290519081900360640190fd5b816020029150600061038e85848660200260040160ff16016020611cef565b905060006103a3868584016004016020611cef565b90506103b58660248487010183611d6e565b925050505b9392505050565b805b919050565b60008160040183511015610421576040805162461bcd60e51b815260206004820152601b60248201527a52656164696e67206279746573206f7574206f6620626f756e647360281b604482015290519081900360640190fd5b50016020015190565b600080610442858560200260040160ff166020611cef565b9050600061045586600484016020611cef565b90508061049e576040805162461bcd60e51b8152602060048201526012602482015271696e707574206973206e6f7420617272617960701b604482015290519081900360640190fd5b60ff841681116104ee576040805162461bcd60e51b815260206004820152601660248201527534b73b30b634b21030b93930bc903837b9b4ba34b7b760511b604482015290519081900360640190fd5b6103b5866020600160ff8816018102850160040190611cef565b600080600061054c85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610f1b92505050565b90506001600160e01b0319811663095ea7b360e01b14156106f05760006105ab61014287878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250610da9915050565b90506000886001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156105e857600080fd5b505afa1580156105fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106209190614aaa565b90506000816001600160a01b0316634f8419b9846040518263ffffffff1660e01b8152600401610650919061569b565b60206040518083038186803b15801561066857600080fd5b505afa15801561067c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a09190614aaa565b90506001600160a01b038116158015906106c357506001600160a01b0381163014155b6106e85760405162461bcd60e51b81526004016106df90615ca8565b60405180910390fd5b600195505050505b506000905094509492505050565b606061032160048084510384611d6e9092919063ffffffff16565b6107238282610f52565b156107405760405162461bcd60e51b81526004016106df90615aa2565b6000826001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561077b57600080fd5b505afa15801561078f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b39190614aaa565b90506000816001600160a01b031663795053d36040518163ffffffff1660e01b815260040160206040518083038186803b1580156107f057600080fd5b505afa158015610804573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108289190614aaa565b90506000816001600160a01b031663a950c30060086040518263ffffffff1660e01b815260040161085991906159db565b60206040518083038186803b15801561087157600080fd5b505afa158015610885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a99190614aaa565b90506001600160a01b0381166108c157505050610c88565b6000816001600160a01b031663e9d337b86040518163ffffffff1660e01b815260040160206040518083038186803b1580156108fc57600080fd5b505afa158015610910573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109349190614aaa565b9050856001600160a01b0316631e50a4a66040518163ffffffff1660e01b815260040160206040518083038186803b15801561096f57600080fd5b505afa158015610983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a79190614aaa565b6001600160a01b0316639be918e6826040518263ffffffff1660e01b81526004016109d2919061569b565b60206040518083038186803b1580156109ea57600080fd5b505afa1580156109fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a229190614f84565b610a2f5750505050610c88565b6040516301b2848560e51b81526000906001600160a01b0383169063365090a090610a5e90899060040161569b565b60206040518083038186803b158015610a7657600080fd5b505afa158015610a8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aae9190614aaa565b90506001600160a01b03811615610b58576040516370a0823160e01b81526001600160a01b038216906370a0823190610aeb908a9060040161569b565b60206040518083038186803b158015610b0357600080fd5b505afa158015610b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3b91906155b1565b15610b585760405162461bcd60e51b81526004016106df90615d10565b60405163cff027d960e01b81526000906001600160a01b0384169063cff027d990610b87908a9060040161569b565b60206040518083038186803b158015610b9f57600080fd5b505afa158015610bb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd79190614aaa565b90506001600160a01b03811615610c81576040516370a0823160e01b81526001600160a01b038216906370a0823190610c14908b9060040161569b565b60206040518083038186803b158015610c2c57600080fd5b505afa158015610c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6491906155b1565b15610c815760405162461bcd60e51b81526004016106df90615c71565b5050505050505b5050565b60008060606000610d0c886001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ccf57600080fd5b505afa158015610ce3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d079190614aaa565b611ebf565b6001600160a01b0316635464c40e896040518263ffffffff1660e01b8152600401610d37919061569b565b604080518083038186803b158015610d4e57600080fd5b505afa158015610d62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d869190615232565b9050610d988888888460200151611f5e565b919a90995090975095505050505050565b60006103ba838360200260040160ff166020611cef565b610dd06040820160208301614f68565b15610ded5760405162461bcd60e51b81526004016106df90615c0c565b6000610e2b836001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ccf57600080fd5b6001600160a01b0316635464c40e846040518263ffffffff1660e01b8152600401610e56919061569b565b604080518083038186803b158015610e6d57600080fd5b505afa158015610e81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea59190615232565b9050826001600160a01b031681600001516001600160a01b031614610edc5760405162461bcd60e51b81526004016106df90615a3e565b505050565b60005460ff1681565b600080610f02848460200260040160ff166020611cef565b9050610f1384600483016020611cef565b949350505050565b60006103218260006103c8565b50601290565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080836001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f8e57600080fd5b505afa158015610fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc69190614aaa565b90506000846001600160a01b0316631e50a4a66040518163ffffffff1660e01b815260040160206040518083038186803b15801561100357600080fd5b505afa158015611017573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103b9190614aaa565b9050611045613d92565b61104d613dc7565b600061105885611ebf565b90506040518060c00160405280826001600160a01b031663660d0d676040518163ffffffff1660e01b815260040160206040518083038186803b15801561109e57600080fd5b505afa1580156110b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d69190614aaa565b6001600160a01b03168152602001826001600160a01b031663d4fc42c66040518163ffffffff1660e01b815260040160206040518083038186803b15801561111d57600080fd5b505afa158015611131573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111559190614aaa565b6001600160a01b03168152602001866001600160a01b03166309ed48936040518163ffffffff1660e01b815260040160206040518083038186803b15801561119c57600080fd5b505afa1580156111b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d49190614aaa565b6001600160a01b03168152602001826001600160a01b031663b3f006746040518163ffffffff1660e01b815260040160206040518083038186803b15801561121b57600080fd5b505afa15801561122f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112539190614aaa565b6001600160a01b03168152602001826001600160a01b03166352dac6566040518163ffffffff1660e01b815260040160206040518083038186803b15801561129a57600080fd5b505afa1580156112ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d29190614aaa565b6001600160a01b03168152602001826001600160a01b0316626cc35e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561131857600080fd5b505afa15801561132c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113509190614aaa565b6001600160a01b03168152509250604051806080016040528084602001516001600160a01b0316815260200184600001516001600160a01b0316815260200184604001516001600160a01b03168152602001826001600160a01b0316815250915050600082602001516001600160a01b031663714af34b8460000151896040518363ffffffff1660e01b81526004016113ea92919061583b565b60806040518083038186803b15801561140257600080fd5b505afa158015611416573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143a91906153eb565b9050600061145289856020015186600001518b612323565b80519091501561172e57600081516001600160401b038111801561147557600080fd5b5060405190808252806020026020018201604052801561149f578160200160208202803683370190505b509050600060405180606001604052806114bd8787602001516124ca565b81526020016114d08787604001516124ca565b81526020016114e38787606001516124ca565b8152509050600083516001600160401b038111801561150157600080fd5b5060405190808252806020026020018201604052801561153b57816020015b611528613dee565b8152602001906001900390816115205790505b50905060005b84518110156115c3578282828151811061155757fe5b60200260200101819052506115a48d8d87848151811061157357fe5b6020026020010151600001516040015188858151811061158f57fe5b602002602001015160400151600001516125a2565b8482815181106115b057fe5b6020908102919091010152600101611541565b506020870151875160a089015160608a0151604051635fdfa28d60e11b81526000946001600160a01b03169363bfbf451a9361160a93919290918a9189919060040161587e565b60006040518083038186803b15801561162257600080fd5b505afa158015611636573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261165e9190810190614dbe565b905060005b815181101561172857600082828151811061167a57fe5b60200260200101519050600061168f826125ef565b905080156116bb576116b86116b18d84602001516000015160400151846127a1565b8f90612822565b9d505b604080830151015160200151156116ed576116ea6116b18d8b60400151856040015160400151602001516127a1565b9d505b60408083015181015101511561171e5761171b6116b18d8b60600151856040015160400151604001516127a1565b9d505b5050600101611663565b50505050505b602084015184516040516342a6f8d360e01b81526000926001600160a01b0316916342a6f8d39161176a91908e90869060001990600401615855565b60006040518083038186803b15801561178257600080fd5b505afa158015611796573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117be9190810190614c4d565b905060005b81518110156119645760008282815181106117da57fe5b6020026020010151602001519050600260088111156117f557fe5b602082015151600881111561180657fe5b14801561182c57508a6001600160a01b0316816000015160a001516001600160a01b0316145b8061187f57506000602082015151600881111561184557fe5b14801561187f57508a6001600160a01b0316816000015160e0015160008151811061186c57fe5b60200260200101516001600160a01b0316145b156118ac576118a96118a289836000015160c001518460200151606001516127a1565b8b90612822565b99505b6000816020015160c001511180156118dd57508a6001600160a01b0316816000015160a001516001600160a01b0316145b8061192857506000816020015160c0015111801561192857508a6001600160a01b0316816000015160e0015160008151811061191557fe5b60200260200101516001600160a01b0316145b1561195b576119586118a28961194a8a600001516001600160a01b031661287a565b846020015160c001516127a1565b99505b506001016117c3565b50600061197f86600001518c8660000151876040015161292f565b905080156119a3576119a0611999888660400151846127a1565b8a90612822565b98505b83606001516001600160a01b031684604001516001600160a01b0316146119fd5760006119de87600001518d8760000151886060015161292f565b905080156119fb576119f86118a2898760600151846127a1565b99505b505b600086600001516001600160a01b031663f069052a604051602001611a2190615ba7565b604051602081830303815290604052805190602001208e604051602001611a499291906157ab565b6040516020818303038152906040528051906020012060006000196040518463ffffffff1660e01b8152600401611a82939291906157e9565b60006040518083038186803b158015611a9a57600080fd5b505afa158015611aae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ad69190810190614c1b565b905060005b8151811015611c0257600088602001516001600160a01b0316631485d2978a60000151858581518110611b0a57fe5b60200260200101516040518363ffffffff1660e01b8152600401611b2f9291906156f0565b60006040518083038186803b158015611b4757600080fd5b505afa158015611b5b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b839190810190615329565b9050611bb7611bb08b611ba28c600001516001600160a01b031661287a565b8460200151608001516127a1565b8d90612822565b9b50611bd7611bb08b836000015160a001518460200151600001516127a1565b9b50611bf7611bb08b836000015160c001518460200151602001516127a1565b9b5050600101611adb565b5060008b6001600160a01b03166370a082318e6040518263ffffffff1660e01b8152600401611c31919061569b565b60206040518083038186803b158015611c4957600080fd5b505afa158015611c5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8191906155b1565b90508015611cbe57611cbb611cb4670de0b6b3a7640000611cae84611ca88c8c6000612a06565b90612b10565b90612b69565b8c90612822565b9a505b611ccd611cb48e8b898b612bcd565b9a50611cde611cb48e8b898c612db8565b9d9c50505050505050505050505050565b600081830184511015611d47576040805162461bcd60e51b815260206004820152601b60248201527a52656164696e67206279746573206f7574206f6620626f756e647360281b604482015290519081900360640190fd5b826020018401519050816020038015611d66576008810260020a820491505b509392505050565b60608182601f011015611db9576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b828284011015611e01576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b81830184511015611e4d576040805162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015290519081900360640190fd5b606082158015611e6c5760405191506000825260208201604052611eb6565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611ea5578051835260209283019201611e8d565b5050858452601f01601f1916604052505b50949350505050565b604051634f8419b960e01b81526000906001600160a01b03831690634f8419b990611f0e907f00000000000000000000000000000000000000000000000000000000000000009060040161569b565b60206040518083038186803b158015611f2657600080fd5b505afa158015611f3a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103219190614aaa565b60008060606000611f7f670de0b6b3a7640000611cae88611ca88c8c610f52565b905080611f8c5750612319565b8493506000886001600160a01b0316631e50a4a66040518163ffffffff1660e01b815260040160206040518083038186803b158015611fca57600080fd5b505afa158015611fde573d6000803e3d6000fd5b505050506040513d6020811015611ff457600080fd5b505160408051634df48c7360e11b81526001600160a01b038881166004830152915192935090831691639be918e691602480820192602092909190829003018186803b15801561204357600080fd5b505afa158015612057573d6000803e3d6000fd5b505050506040513d602081101561206d57600080fd5b50516120bf576040805162461bcd60e51b815260206004820152601c60248201527b1dda5d1a191c985dd85b08185cdcd95d081b9bdd08195b98589b195960221b604482015290519081900360640190fd5b6000856001600160a01b03166370a082318b6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561210e57600080fd5b505afa158015612122573d6000803e3d6000fd5b505050506040513d602081101561213857600080fd5b5051604080516314e03fdd60e11b81526001600160a01b038981166004830152602482018490529151929350600092918516916329c07fba91604480820192602092909190829003018186803b15801561219157600080fd5b505afa1580156121a5573d6000803e3d6000fd5b505050506040513d60208110156121bb57600080fd5b5051905080612211576040805162461bcd60e51b815260206004820152601e60248201527f6e6f7420656e6f75676820617661696c61626c652062616c616e63655f300000604482015290519081900360640190fd5b670de0b6b3a76400008910612268576040805162461bcd60e51b815260206004820152601860248201527734b73b30b634b2103bb4ba34323930bb903837b93a34b7b760411b604482015290519081900360640190fd5b61227681611cae8487612b10565b955060006122a461228f670de0b6b3a76400008c612f20565b6a0c097ce7bc90715b34b9f160241b90612b69565b90506122bc670de0b6b3a7640000611cae8984612b10565b965086831015612313576040805162461bcd60e51b815260206004820152601e60248201527f6e6f7420656e6f75676820617661696c61626c652062616c616e63655f310000604482015290519081900360640190fd5b50505050505b9450945094915050565b60606000846001600160a01b03166377cfb162858860006000196040518563ffffffff1660e01b815260040161235c9493929190615855565b60006040518083038186803b15801561237457600080fd5b505afa158015612388573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123b09190810190614ed8565b905080516001600160401b03811180156123c957600080fd5b5060405190808252806020026020018201604052801561240357816020015b6123f0613e20565b8152602001906001900390816123e85790505b5091506000805b82518110156124a957600083828151811061242157fe5b6020026020010151602001516040015111801561246a5750846001600160a01b031683828151811061244f57fe5b602002602001015160000151602001516001600160a01b0316145b156124a15782818151811061247b57fe5b602002602001015184838151811061248f57fe5b60209081029190910101526001909101905b60010161240a565b5081516000906124b99083612f20565b845103845250919695505050505050565b6124d2613e4d565b6060830151604051638d0cec5760e01b81526000916001600160a01b031690638d0cec579061250590869060040161569b565b6101206040518083038186803b15801561251e57600080fd5b505afa158015612532573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255691906154d5565b90506000612565858386612f7d565b90506040518060400160405280612582878585600001518961330f565b8152602001612597878585602001518961330f565b905295945050505050565b604080516001600160a01b039586166020808301919091529486168183015292909416606083015215156080808301919091528351808303909101815260a0909101909252815191012090565b60208082015101516040015160808201516000908112156126345761262d612622846040015160c001516020015161334b565b608085015190613393565b9050612683565b6000836080015112156126835761268060001961267a612675612666600019886080015161344b90919063ffffffff16565b604088015160c00151516134f4565b61334b565b9061344b565b90505b60008084606001516080015113156126c3576126bc6126ad856040015160c001516020015161334b565b60608601516080015190613393565b905061270f565b6000846060015160800151121561270f5761270c60001961267a6126756126fd60001989606001516080015161344b90919063ffffffff16565b604089015160c00151516134f4565b90505b600061271b8284613523565b90506000811315612737576127308482612822565b9350612767565b60006127458260001961344b565b905084811015612760576127598582612f20565b9450612765565b600094505b505b8385604001516101e0015110156127945760408501516101e0015161278d908590612f20565b9350612799565b600093505b505050919050565b6040516314e03fdd60e11b81526000906001600160a01b038516906329c07fba906127d290869086906004016156f0565b60206040518083038186803b1580156127ea57600080fd5b505afa1580156127fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1391906155b1565b6000828201838110156103ba576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b6000816001600160a01b03166321f8a7216040516020018080602001828103825260038152602001806215d39560ea1b815250602001915050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156128fd57600080fd5b505afa158015612911573d6000803e3d6000fd5b505050506040513d602081101561292757600080fd5b505192915050565b6000846001600160a01b031663bd02d0f560405160200161294f90615cde565b6040516020818303038152906040528051906020012085858860405160200161297b94939291906157c2565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016129ad91906157a2565b60206040518083038186803b1580156129c557600080fd5b505afa1580156129d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129fd91906155b1565b95945050505050565b60008084600001516001600160a01b031663095ce6c5866020015186612a308989602001516124ca565b612a3e8a8a604001516124ca565b612a4c8b8b606001516124ca565b604051602001612a5b90615d9d565b604051602081830303815290604052805190602001208a6040518863ffffffff1660e01b8152600401612a949796959493929190615954565b6101a06040518083038186803b158015612aad57600080fd5b505afa158015612ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae59190615173565b5090506000811315612b0557612b008164e8d4a51000612b69565b6129fd565b600095945050505050565b600082612b1f57506000610321565b82820282848281612b2c57fe5b04146103ba5760405162461bcd60e51b8152600401808060200182810382526021815260200180615ea26021913960400191505060405180910390fd5b6000808211612bbc576040805162461bcd60e51b815260206004820152601a602482015279536166654d6174683a206469766973696f6e206279207a65726f60301b604482015290519081900360640190fd5b818381612bc557fe5b049392505050565b60008082602001516001600160a01b031663f069052a604051602001612bf290615d3f565b6040516020818303038152906040528051906020012088604051602001612c1a9291906157ab565b6040516020818303038152906040528051906020012060006000196040518463ffffffff1660e01b8152600401612c53939291906157e9565b60006040518083038186803b158015612c6b57600080fd5b505afa158015612c7f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612ca79190810190614c1b565b905060005b8151811015612dae57600084600001516001600160a01b031663ceeea3bf8660200151858581518110612cdb57fe5b60200260200101516040518363ffffffff1660e01b8152600401612d009291906156f0565b60006040518083038186803b158015612d1857600080fd5b505afa158015612d2c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d549190810190615468565b9050612d7a612d7388611ba288602001516001600160a01b031661287a565b8590612822565b9350612da3612d73670de0b6b3a7640000611cae846020015160000151611ca88a8c6000612a06565b935050600101612cac565b5050949350505050565b6040808301805160808401518451845160608101865287516001600160a01b03908116825294518516602082015293891684860152935162eb654b60e41b8152600094612e8194899493736d175ae43ff994f9dcbd074a4264538bf4ff3e3493630eb654b093612e2c9390916004016156af565b60206040518083038186803b158015612e4457600080fd5b505af4158015612e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7c91906155b1565b6127a1565b905082606001516001600160a01b031683604001516001600160a01b031614610f1357606080840180516080850151855160408051958601815288516001600160a01b039081168752945185166020870152938a1685850152925162eb654b60e41b81526129fd94612f19948a9493736d175ae43ff994f9dcbd074a4264538bf4ff3e3493630eb654b093612e2c93916004016156af565b8290612822565b600082821115612f77576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b612f85613e4d565b600183604001516002811115612f9757fe5b14156130685760008360600151600001516001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015612fe057600080fd5b505afa158015612ff4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130189190615618565b9050613060600085608001516040518060400160405280886060015181526020018860a001518152506130588560ff166012612f2090919063ffffffff16565b600a0a613588565b9150506103ba565b60028360400151600281111561307a57fe5b141561309b57613094600084608001518560a00151613643565b90506103ba565b600084604001516001600160a01b031663b4fb1279846040518263ffffffff1660e01b81526004016130cd919061569b565b60206040518083038186803b1580156130e557600080fd5b505afa1580156130f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061311d9190614aaa565b604051631536292360e21b81529091506001600160a01b038216906354d8a48c9061314d90600090600401615797565b604080518083038186803b15801561316457600080fd5b505afa925050508015613194575060408051601f3d908101601f1916820190925261319191810190615289565b60015b61324f576000816001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b1580156131d357600080fd5b505afa1580156131e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061320b91906155c9565b505050915050600081136132315760405162461bcd60e51b81526004016106df90615a6b565b604051806040016040528082815260200182815250925050506103ba565b816001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561328857600080fd5b505afa9250505080156132b8575060408051601f3d908101601f191682019092526132b591810190614aaa565b60015b6132d45760405162461bcd60e51b81526004016106df906159ea565b806001600160a01b0316856001600160a01b0316146133055760405162461bcd60e51b81526004016106df90615a17565b5091506103ba9050565b602083015180613334576020850151613331906001600160a01b0316836136d2565b90505b6129fd838268327cb2734119d3b7a9601e1b613809565b6000600160ff1b821061338f5760405162461bcd60e51b8152600401808060200182810382526028815260200180615eea6028913960400191505060405180910390fd5b5090565b6000816133e7576040805162461bcd60e51b815260206004820181905260248201527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604482015290519081900360640190fd5b816000191480156133fb5750600160ff1b83145b156134375760405162461bcd60e51b8152600401808060200182810382526021815260200180615e816021913960400191505060405180910390fd5b600082848161344257fe5b05949350505050565b60008261345a57506000610321565b8260001914801561346e5750600160ff1b82145b156134aa5760405162461bcd60e51b8152600401808060200182810382526027815260200180615ec36027913960400191505060405180910390fd5b828202828482816134b757fe5b05146103ba5760405162461bcd60e51b8152600401808060200182810382526027815260200180615ec36027913960400191505060405180910390fd5b6000821561351a57613515600161350f84611cae8784612f20565b90612822565b6103ba565b50600092915050565b60008282018183128015906135385750838112155b8061354d575060008312801561354d57508381125b6103ba5760405162461bcd60e51b8152600401808060200182810382526021815260200180615e606021913960400191505060405180910390fd5b613590613e4d565b60008061359e8587866138b8565b9250509150600082116135c35760405162461bcd60e51b81526004016106df90615d70565b86156136085760408051808201909152806135e76402540be400611cae8686612f20565b81526020016135ff6402540be400611cae8686612822565b90529250612dae565b6040805180820190915280613622846402540be400612b69565b8152602001613636846402540be400612b69565b9052979650505050505050565b61364b613e4d565b600080613658858561392a565b9250509150806000141561367e5760405162461bcd60e51b81526004016106df90615b77565b85156136b15760408051808201909152806136998484612f20565b81526020016136a88484612822565b905292506136c9565b60405180604001604052808381526020018381525092505b50509392505050565b60408051602080820181905260158284015274282924a1a2afa322a2a22fa6aaa62a24a82624a2a960591b6060808401919091528351808403909101815260808301845280519082012060a08301526001600160a01b0384811660c0808501919091528451808503909101815260e0840180865281519184019190912063bd02d0f560e01b90915260e4840152925160009384939087169263bd02d0f59261010480840193829003018186803b15801561378b57600080fd5b505afa15801561379f573d6000803e3d6000fd5b505050506040513d60208110156137b557600080fd5b50519050806103ba576040805162461bcd60e51b815260206004820152601b60248201527a32b6b83a3c90383934b1b2903332b2b21036bab63a34b83634b2b960291b604482015290519081900360640190fd5b600080806000198587098686029250828110908390030390508061383f576000841161383457600080fd5b5082900490506103ba565b80841161384b57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60008060008060006138ca8887613aa7565b915091506000806000806138de8c8c613bc9565b99509195509350915086905060008261391357858410613907578499508398506001905061390e565b8699508598505b61391a565b8699508598505b5050505050505093509350939050565b600080806001600160a01b0385166139545760405162461bcd60e51b81526004016106df90615c3b565b8351602085015160405163052571af60e51b81526000926001600160a01b0389169263a4ae35e09261398a9291906004016157ff565b60806040518083038186803b1580156139a257600080fd5b505afa1580156139b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139da91906152a4565b90506000816000015160070b138015613a005750600081602001516001600160401b0316115b8015613a1b57506008613a19826040015160030b613d7f565b145b613a375760405162461bcd60e51b81526004016106df90615b45565b846040015160030b613a60826020015160070b836000015160070b61339390919063ffffffff16565b1215613a7e5760405162461bcd60e51b81526004016106df90615bd5565b80606001519250806000015160070b935080602001516001600160401b03169150509250925092565b81515160009081906001600160a01b038116613ad55760405162461bcd60e51b81526004016106df90615b10565b600080826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b158015613b1157600080fd5b505afa158015613b25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b4991906155c9565b50935050925050809350613b7487600001516020015163ffffffff168561282290919063ffffffff16565b421115613b935760405162461bcd60e51b81526004016106df90615ad9565b60008213613bb35760405162461bcd60e51b81526004016106df90615a6b565b613bbd8287612b10565b94505050509250929050565b60008080806001600160a01b038516613bf45760405162461bcd60e51b81526004016106df90615c3b565b602080870151805191015160405163052571af60e51b81526001600160a01b0388169263a4ae35e092613c29926004016157ff565b60806040518083038186803b158015613c4157600080fd5b505afa925050508015613c71575060408051601f3d908101601f19168201909252613c6e918101906152a4565b60015b613c7e5760019150613d76565b806060015193506000816000015160070b138015613ca95750600081602001516001600160401b0316115b8015613cbc57506000816040015160030b125b8015613cd05750601219816040015160030b135b15613d6f57613cfc816040015160120160030b600a0a826000015160070b612b1090919063ffffffff16565b945086602001516040015160030b613d2b826020015160070b836000015160070b61339390919063ffffffff16565b1215613d3a5760019250613d6a565b613d67816040015160120160030b600a0a82602001516001600160401b0316612b1090919063ffffffff16565b91505b613d74565b600192505b505b92959194509250565b60008082121561338f5781600003610321565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6040518060600160405280613e01613e4d565b8152602001613e0e613e4d565b8152602001613e1b613e4d565b905290565b6040518060600160405280613e33613e67565b8152602001613e40613e87565b8152602001613e1b613eda565b604051806040016040528060008152602001600081525090565b604080516060810182526000808252602082018190529181019190915290565b604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60408051602081019091526000815290565b80516103c381615e2a565b600082601f830112613f07578081fd5b81516020613f1c613f1783615e0d565b615dea565b8281528181019085830183850287018401881015613f38578586fd5b855b85811015613f5f578151613f4d81615e2a565b84529284019290840190600101613f3a565b5090979650505050505050565b600082601f830112613f7c578081fd5b81516020613f8c613f1783615e0d565b8281528181019085830183850287018401881015613fa8578586fd5b855b85811015613f5f57815184529284019290840190600101613faa565b600082601f830112613fd6578081fd5b81356001600160401b03811115613fe957fe5b613ffc601f8201601f1916602001615dea565b818152846020838601011115614010578283fd5b816020850160208301379081016020019190915292915050565b8051600381106103c357600080fd5b8051600981106103c357600080fd5b8051600381900b81146103c357600080fd5b600061012080838503121561406d578182fd5b61407681615dea565b91505061408282613eec565b815261409060208301613eec565b60208201526140a160408301613eec565b60408201526140b260608301613eec565b60608201526140c360808301613eec565b60808201526140d460a08301613eec565b60a08201526140e560c08301613eec565b60c082015260e08201516001600160401b038082111561410457600080fd5b61411085838601613ef7565b60e08401526101009150818401518181111561412b57600080fd5b61413786828701613ef7565b8385015250505092915050565b6000610100808385031215614157578182fd5b61416081615dea565b91505061416c82613eec565b815261417a60208301613eec565b602082015261418b60408301613eec565b604082015261419c60608301613eec565b60608201526141ad60808301613eec565b60808201526141be60a08301613eec565b60a08201526141cf60c08301613eec565b60c082015260e08201516001600160401b038111156141ed57600080fd5b6141f984828501613ef7565b60e08301525092915050565b600060e08284031215614216578081fd5b61422060e0615dea565b905061422b82613eec565b815261423960208301613eec565b602082015261424a60408301613eec565b604082015261425b60608301613eec565b606082015261426c60808301613eec565b608082015260a08201516001600160401b038082111561428b57600080fd5b61429785838601613ef7565b60a084015260c08401519150808211156142b057600080fd5b506142bd84828501613ef7565b60c08301525092915050565b600060c082840312156142da578081fd5b60405160c081018181106001600160401b03821117156142f657fe5b80604052508091508251815260208301516020820152604083015161431a81615e42565b80604083015250606083015160608201526080830151608082015260a083015160a08201525092915050565b600060208284031215614357578081fd5b604051602081018181106001600160401b038211171561437357fe5b8060405250809150825161438681615e42565b905292915050565b60006080828403121561439f578081fd5b604051608081018181106001600160401b03821117156143bb57fe5b806040525080915082516143ce81615e42565b815260208301516143de81615e42565b602082015260408301516143f181615e42565b6040820152606083015161440481615e42565b6060919091015292915050565b600060e08284031215614422578081fd5b60405160e081018181106001600160401b038211171561443e57fe5b8060405250809150825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c08201525092915050565b60006101808083850312156144a0578182fd5b6144a981615dea565b9150506144b582614039565b81526144c36020830161402a565b602082015260408201516040820152606082015160608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e082015261010080830151818301525061012080830151818301525061014080830151818301525061016080830151818301525092915050565b600061014080838503121561454d578182fd5b61455681615dea565b915050815181526020820151602082015260408201516040820152606082015160608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e082015261010080830151818301525061012080830151818301525092915050565b6000606082840312156145d2578081fd5b604051606081018181106001600160401b03821117156145ee57fe5b6040528251815290508061460460208401614a63565b602082015261461560408401614a63565b60408201525092915050565b600060808284031215614632578081fd5b604051608081018181106001600160401b038211171561464e57fe5b8060405250809150825181526020830151602082015260408301516040820152606083015160608201525092915050565b60006105408284031215614691578081fd5b61469c610220615dea565b90506146a8838361485f565b81526101406146b98482850161480b565b60208301526101a06146cd85828601614799565b60408401526146e0856102608601614621565b60608401526146f3856102e086016148f4565b6080840152614706856103408601614621565b60a0840152614719856103c08601614953565b60c084015261040084015160e0840152610420840151610100840152610440840151610120840152610460840151828401526104808401516101608401526104a08401516101808401526104c08401518184015250506104e08201516101c08201526105008201516101e082015261052082015161020082015292915050565b600060c082840312156147aa578081fd5b60405160c081018181106001600160401b03821117156147c657fe5b8060405250809150825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201525092915050565b60006060828403121561481c578081fd5b604051606081018181106001600160401b038211171561483857fe5b80604052508091508251815260208301516020820152604083015160408201525092915050565b6000610140808385031215614872578182fd5b61487b81615dea565b9150508151815261488e60208301613eec565b602082015261489f60408301613eec565b6040820152606082015160608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e082015261010080830151818301525061012080830151818301525092915050565b600060608284031215614905578081fd5b604051606081018181106001600160401b038211171561492157fe5b8060405250809150825161493481615e2a565b8082525060208301516020820152604083015160408201525092915050565b600060408284031215614964578081fd5b604051604081018181106001600160401b038211171561498057fe5b604052825181526020928301519281019290925250919050565b60008183036101c08112156149ad578182fd5b604051606081016001600160401b0382821081831117156149ca57fe5b8160405282945060608412156149df57600080fd5b60c08301935081841081851117156149f357fe5b508260405284519250614a0583615e2a565b918252602084015191614a1783615e2a565b82608083015260408501519250614a2d83615e2a565b60a082018390528152614a43856060860161453a565b6020820152614a56856101a08601614346565b6040820152505092915050565b805163ffffffff811681146103c357600080fd5b80516001600160501b03811681146103c357600080fd5b600060208284031215614a9f578081fd5b81356103ba81615e2a565b600060208284031215614abb578081fd5b81516103ba81615e2a565b60008060408385031215614ad8578081fd5b8235614ae381615e2a565b91506020830135614af381615e2a565b809150509250929050565b60008060008060608587031215614b13578182fd5b8435614b1e81615e2a565b93506020850135614b2e81615e2a565b925060408501356001600160401b0380821115614b49578384fd5b818701915087601f830112614b5c578384fd5b813581811115614b6a578485fd5b886020828501011115614b7b578485fd5b95989497505060200194505050565b60008060008060808587031215614b9f578182fd5b8435614baa81615e2a565b93506020850135614bba81615e2a565b9250604085013591506060850135614bd181615e2a565b939692955090935050565b6000808284036060811215614bef578283fd5b8335614bfa81615e2a565b92506040601f1982011215614c0d578182fd5b506020830190509250929050565b600060208284031215614c2c578081fd5b81516001600160401b03811115614c41578182fd5b610f1384828501613f6c565b600060208284031215614c5e578081fd5b81516001600160401b0380821115614c74578283fd5b818401915084601f830112614c87578283fd5b8151614c95613f1782615e0d565b818152602080820191908501865b84811015614db05781518701601f196040828d0382011215614cc357898afd5b604051604081018181108a82111715614cd857fe5b60409081526020840151825283015189811115614cf3578b8cfd5b9290920191610240838e0383011215614d0a578a8bfd5b6040519150608082018281108a82111715614d2157fe5b604052602083015189811115614d35578b8cfd5b614d448e602083870101614144565b835250614d548d6040850161448d565b6020830152614d678d6101c0850161438e565b604083015261024083015189811115614d7e578b8cfd5b614d8d8e602083870101613f6c565b606084015250602081810192909252865294850194929092019150600101614ca3565b509098975050505050505050565b60006020808385031215614dd0578182fd5b82516001600160401b0380821115614de6578384fd5b818501915085601f830112614df9578384fd5b8151614e07613f1782615e0d565b81815284810190848601610840808502870188018b1015614e26578889fd5b8896505b84871015614ec95780828c031215614e40578889fd5b6040805160e081018181108982111715614e5657fe5b825283518152614e688d8b860161499a565b8a820152614e7a8d6101e0860161467f565b82820152614e8c8d61072086016142c9565b60608201526107e0840151608082015261080084015160a082015261082084015160c0820152855250600196909601959287019290810190614e2a565b50909998505050505050505050565b60006020808385031215614eea578182fd5b82516001600160401b03811115614eff578283fd5b8301601f81018513614f0f578283fd5b8051614f1d613f1782615e0d565b818152838101908385016101c0808502860187018a1015614f3c578788fd5b8795505b84861015614db057614f528a8361499a565b8452600195909501949286019290810190614f40565b600060208284031215614f79578081fd5b81356103ba81615e42565b600060208284031215614f95578081fd5b81516103ba81615e42565b600060208284031215614fb1578081fd5b5035919050565b600060208284031215614fc9578081fd5b81356001600160401b03811115614fde578182fd5b610f1384828501613fc6565b60008060408385031215614ffc578182fd5b82356001600160401b03811115615011578283fd5b61501d85828601613fc6565b95602094909401359450505050565b600080600060608486031215615040578081fd5b83356001600160401b03811115615055578182fd5b61506186828701613fc6565b9660208601359650604090950135949350505050565b60008060408385031215615089578182fd5b82356001600160401b0381111561509e578283fd5b6150aa85828601613fc6565b9250506020830135614af381615e50565b6000806000606084860312156150cf578081fd5b83356001600160401b038111156150e4578182fd5b6150f086828701613fc6565b935050602084013561510181615e50565b929592945050506040919091013590565b600080600060608486031215615126578081fd5b83356001600160401b0381111561513b578182fd5b61514786828701613fc6565b935050602084013561515881615e50565b9150604084013561516881615e50565b809150509250925092565b6000808284036101a0811215615187578283fd5b8351925061018080601f198301121561519e578283fd5b6151a781615dea565b91506020850151825260408501516020830152606085015160408301526080850151606083015260a0850151608083015260c085015160a083015260e085015160c08301526101008086015160e08401526101208087015182850152610140915081870151818501525061016080870151828501528287015181850152505050809150509250929050565b600060408284031215615243578081fd5b604051604081018181106001600160401b038211171561525f57fe5b604052825161526d81615e2a565b8152602083015161527d81615e2a565b60208201529392505050565b60006040828403121561529a578081fd5b6103ba8383614953565b6000608082840312156152b5578081fd5b604051608081016001600160401b0382821081831117156152d257fe5b81604052845191508160070b82146152e8578384fd5b90825260208401519080821682146152fe578384fd5b50602082015261531060408401614048565b6040820152606083015160608201528091505092915050565b60006020828403121561533a578081fd5b81516001600160401b0380821115615350578283fd5b908301906101408286031215615364578283fd5b60405160808101818110838211171561537957fe5b60405282518281111561538a578485fd5b6153968782860161405a565b8252506153a68660208501614411565b60208201526153b9866101008501614346565b6040820152610120830151828111156153d0578485fd5b6153dc87828601613f6c565b60608301525095945050505050565b6000608082840312156153fc578081fd5b604051608081018181106001600160401b038211171561541857fe5b604052825161542681615e2a565b8152602083015161543681615e2a565b6020820152604083015161544981615e2a565b6040820152606083015161545c81615e2a565b60608201529392505050565b600060208284031215615479578081fd5b81516001600160401b038082111561548f578283fd5b9083019061014082860312156154a3578283fd5b6040516080810181811083821117156154b857fe5b6040528251828111156154c9578485fd5b61539687828601614205565b60008183036101208112156154e8578182fd5b6040805160c081016001600160401b03828210818311171561550657fe5b90835285519061551582615e2a565b8183526020870151602084015261552d84880161402a565b8484015283605f1986011215615541578586fd5b835194508385019150848210818311171561555857fe5b5090915260608401519061556b82615e2a565b81835261557a60808601614a63565b602084015282606082015261559160a08601613eec565b60808201526155a38660c087016145c1565b60a082015295945050505050565b6000602082840312156155c2578081fd5b5051919050565b600080600080600060a086880312156155e0578283fd5b6155e986614a77565b945060208601519350604086015192506060860151915061560c60808701614a77565b90509295509295909350565b600060208284031215615629578081fd5b81516103ba81615e50565b6001600160a01b03169052565b60008151808452815b818110156156665760208185018101518683018201520161564a565b818111156156775782602083870101525b50601f01601f19169290920160200192915050565b80518252602090810151910152565b6001600160a01b0391909116815260200190565b6001600160a01b0393841681529183166020808401919091528151841660408085019190915290820151841660608401520151909116608082015260a00190565b6001600160a01b03929092168252602082015260400190565b60006060820160018060a01b03808716845260208681860152604060608187015283875180865260808801915060808482028901019550838901875b8281101561578657898803607f190184528151805188168952860151868901869052615773868a0182615641565b9850509285019290850190600101615745565b50959b9a5050505050505050505050565b901515815260200190565b90815260200190565b9182526001600160a01b0316602082015260400190565b9384526001600160a01b039283166020850152908216604084015216606082015260800190565b9283526020830191909152604082015260600190565b91825263ffffffff16602082015260400190565b6001600160e01b031991909116815260200190565b6000602082526103ba6020830184615641565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b038681168252851660208083019190915260a06040808401829052865191840182905260009260c09283860190898301865b828110156158d3578151845292840192908401906001016158b7565b5050508581036060870152875180825282890191830190865b8181101561593357835161590184825161568c565b858101516159118886018261568c565b50860151615922608085018261568c565b5092840192918601916001016158ec565b5050809550505050505061594a6080830184615634565b9695505050505050565b60006101a08201905060018060a01b03808a1683528089511660208401528060208a01511660408401528060408a01511660608401528060608a0151166080840152506159a460a083018861568c565b6159b160e083018761568c565b6159bf61012083018661568c565b8361016083015282151561018083015298975050505050505050565b61ffff91909116815260200190565b60208082526013908201527219985a5b1959081d1bc819d95d08185cdcd95d606a1b604082015260600190565b6020808252600d908201526c1a5b9d985b1a5908185cdcd95d609a1b604082015260600190565b6020808252601390820152721b9bdd0819db5e081dda1a5d195b1a5cdd1959606a1b604082015260600190565b6020808252601f908201527f4f6e636861696e206f7261636c6520707269636520697320696e76616c696400604082015260600190565b6020808252601d908201527f63616e6e6f742072656d6f7665206e6f6e2d656d707479206173736574000000604082015260600190565b6020808252601d908201527f4f6e636861696e206f7261636c65207072696365206973207374616c65000000604082015260600190565b6020808252601b908201527a4f6e636861696e206f7261636c65207a65726f206164647265737360281b604082015260600190565b602080825260189082015277496e76616c69642050797468206f7261636c65206461746160401b604082015260600190565b60208082526016908201527513d99998da185a5b881c1c9a58d9481a5b9d985b1a5960521b604082015260600190565b6020808252601490820152731050d0d3d5539517d1115413d4d25517d31254d560621b604082015260600190565b6020808252601d908201527f5079746820707269636520636f6e666964656e636520746f6f206c6f77000000604082015260600190565b60208082526015908201527419195c1bdcda5d081b9bdd081cdd5c1c1bdc9d1959605a1b604082015260600190565b6020808252601c908201527b4f6666636861696e206f7261636c65207a65726f206164647265737360201b604082015260600190565b6020808252601e908201527f7769746864726177204161766520636f6c6c61746572616c2066697273740000604082015260600190565b6020808252601c908201527b1d5b9cdd5c1c1bdc9d1959081cdc195b99195c88185c1c1c9bdd985b60221b604082015260600190565b60208082526018908201527710d31052535050931157d1955391125391d7d05353d5539560421b604082015260600190565b6020808252601590820152741c995c185e4810585d99481919589d08199a5c9cdd605a1b604082015260600190565b6020808252601790820152761050d0d3d5539517d5d2551211149055d05317d31254d5604a1b604082015260600190565b6020808252601390820152720d2dcecc2d8d2c840e0e4d2c6ca9ad2dc9ac2f606b1b604082015260600190565b6020808252601e908201527f4d41585f504e4c5f464143544f525f464f525f5749544844524157414c530000604082015260600190565b61ffff9290921682521515602082015260400190565b6040518181016001600160401b0381118282101715615e0557fe5b604052919050565b60006001600160401b03821115615e2057fe5b5060209081020190565b6001600160a01b0381168114615e3f57600080fd5b50565b8015158114615e3f57600080fd5b60ff81168114615e3f57600080fdfe5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f775369676e6564536166654d6174683a206469766973696f6e206f766572666c6f77536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e74323536a2646970667358221220c682ab318efd24545ad96cdd7289b6569a2efb4d5466156d5d6b1457b895616d64736f6c6343000706003300000000000000000000000087d66368cd08a7ca42252f5ab44b2fb6d1fb8d15