0 txs
2.9k calls
constructor
constructor(address _aaveLendingPool, address _swapper, address _onchainSwapRouter, uint256 _mismatchDelta, uint256 _mismatchDeltaDenominator, uint256 _slippageToleranceDenominator)
functions
aaveLendingPool
viewfunction aaveLendingPool() view returns (address)
convert32toAddress
purefunction convert32toAddress(bytes32 data) pure returns (address o)
flashloanProcessing
viewfunction flashloanProcessing(address _pool, address _repayAsset, uint256 _repayAmount, uint256 _premium, bytes _params) view returns (tuple[] transactions)
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) 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)
onchainSwapRouter
viewfunction onchainSwapRouter() view returns (address)
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) view
swapper
viewfunction swapper() view returns (address)
txGuard
purefunction txGuard(address, address, bytes) pure returns (uint16 txType, bool)
withdrawProcessing
viewfunction withdrawProcessing(address _pool, address, uint256 _portion, address _to, bytes _swapData) view returns (address withdrawAsset, uint256 withdrawBalance, tuple[] transactions)
withdrawProcessing
viewfunction withdrawProcessing(address _pool, address, uint256 _portion, address _to) view returns (address withdrawAsset, uint256 withdrawBalance, tuple[] transactions)
calculateSwapDataParams
nonpayablefunction calculateSwapDataParams(address _pool, uint256 _poolTokenAmount, uint256 _slippageTolerance) returns (tuple swapDataParams)
events
No events.
errors
No errors.
creation bytecode
0x6101406040523480156200001257600080fd5b506040516200444b3803806200444b83398101604081905262000035916200011c565b6001600160a01b038616158015906200005657506001600160a01b03851615155b80156200006b57506001600160a01b03841615155b620000935760405162461bcd60e51b81526004016200008a90620001b8565b60405180910390fd5b600082118015620000a45750818311155b620000c35760405162461bcd60e51b81526004016200008a9062000181565b6001600160601b0319606096871b811660805294861b851660a0529290941b90921660c05260e0919091526101009190915261012052620001e1565b80516001600160a01b03811681146200011757600080fd5b919050565b60008060008060008060c0878903121562000135578182fd5b6200014087620000ff565b95506200015060208801620000ff565b94506200016060408801620000ff565b9350606087015192506080870151915060a087015190509295509295509295565b60208082526016908201527f6e756d657261746f72206d757374206265206c65737300000000000000000000604082015260600190565b6020808252600f908201526e696e76616c6964206164647265737360881b604082015260600190565b60805160601c60a05160601c60c05160601c60e05161010051610120516141b862000293600039806111f25280611618525080610890528061224e528061230e52508061227252806123325250806105b9528061201052806120f65250806104b75280611c675280611d20525080610c0e528061170b52806117c152806118515280611b255280611eb052806123e2528061262352806128bf5280612aac5280612b4c5280612dda52506141b86000f3fe608060405234801561001057600080fd5b50600436106101075760003560e01c8063056f626f1461010c57806309ff5c7d146101375780631053f952146101575780631eba307714610177578063293d8063146101975780632b3297f9146101b757806341dc16c3146101bf578063445fad1f146101d25780636179309d146101da57806368901513146101fb5780636d5fae541461020e5780636f8ae20214610223578063759f32831461023657806382f86acc14610256578063989dccf814610269578063998546e314610289578063c3c6279f1461029c578063cf54aaa0146102af578063d4fac45d146102c2578063db896b57146102d5578063e9d337b8146102e8575b600080fd5b61011f61011a3660046132ea565b6102f0565b60405161012e93929190613c66565b60405180910390f35b61014a610145366004613707565b61031f565b60405161012e9190613cd7565b61016a61016536600461374b565b6103b2565b60405161012e9190613cf5565b61018a610185366004613630565b61044c565b60405161012e9190613b7f565b6101aa6101a536600461367a565b610453565b60405161012e9190613ce0565b61018a6104b5565b61014a6101cd3660046137a2565b6104d9565b61018a6105b7565b6101ed6101e8366004613236565b6105db565b60405161012e929190613ffa565b61016a610209366004613648565b6105e7565b61022161021c3660046131fe565b610602565b005b61011f610231366004613298565b61064b565b6102496102443660046133df565b610677565b60405161012e9190613f8f565b61014a610264366004613707565b610914565b61027c610277366004613366565b61092b565b60405161012e9190613cc4565b61014a610297366004613707565b610b1d565b6101aa6102aa366004613648565b610b4e565b61014a6102bd3660046131c6565b610b5b565b61014a6102d03660046131fe565b610b61565b61014a6102e33660046136bc565b610b8d565b61018a610c0c565b600080606061030d8887876103068c8b8a610c30565b6000610d06565b9250925092505b955095509592505050565b600080610337848460200260040160ff166020610b8d565b9050600061034a85600484016020610b8d565b905080610393576040805162461bcd60e51b8152602060048201526012602482015271696e707574206973206e6f7420617272617960701b604482015290519081900360640190fd5b6103a7856020808402850160040190610b8d565b925050505b92915050565b6060601482106103fa576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081bd9999cd95d60921b604482015290519081900360640190fd5b816020029150600061041985848660200260040160ff16016020610b8d565b9050600061042e868584016004016020610b8d565b90506104408660248487010183610d61565b925050505b9392505050565b805b919050565b600081600401835110156104ac576040805162461bcd60e51b815260206004820152601b60248201527a52656164696e67206279746573206f7574206f6620626f756e647360281b604482015290519081900360640190fd5b50016020015190565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806104f1858560200260040160ff166020610b8d565b9050600061050486600484016020610b8d565b90508061054d576040805162461bcd60e51b8152602060048201526012602482015271696e707574206973206e6f7420617272617960701b604482015290519081900360640190fd5b60ff8416811161059d576040805162461bcd60e51b815260206004820152601660248201527534b73b30b634b21030b93930bc903837b9b4ba34b7b760511b604482015290519081900360640190fd5b610440866020600160ff8816018102850160040190610b8d565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008094509492505050565b60606103ac60048084510384610d619092919063ffffffff16565b60008061060e84610eb2565b91509150816000148015610620575080155b6106455760405162461bcd60e51b815260040161063c90613d95565b60405180910390fd5b50505050565b6000806060610658613044565b610666888787846001610d06565b935093509350509450945094915050565b61067f61306b565b836001600160a01b031663cc3c6df66040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156106ba57600080fd5b505af11580156106ce573d6000803e3d6000fd5b50505050600080856001600160a01b0316631e50a4a66040518163ffffffff1660e01b815260040160206040518083038186803b15801561070e57600080fd5b505afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074691906131e2565b6001600160a01b031663ced72f876040518163ffffffff1660e01b815260040160a06040518083038186803b15801561077e57600080fd5b505afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b691906139d3565b9450945050505060008211156107e7576107e46107dd826107d788866110ce565b90611127565b869061118b565b94505b600061086f876001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561082557600080fd5b505afa158015610839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085d91906138d3565b6107d788670de0b6b3a76400006110ce565b905061087c8782876111e8565b935060005b845151811015610909576108e57f00000000000000000000000000000000000000000000000000000000000000006107d76108bd82600161118b565b88518051869081106108cb57fe5b6020026020010151602001516110ce90919063ffffffff16565b85518051839081106108f357fe5b6020908102919091018101510152600101610881565b505050509392505050565b6000610445838360200260040160ff166020610b8d565b60606000808061093d858701876138eb565b925092509250600060405180606001604052808b6001600160a01b031681526020018a815260200189815250905060006109778c83611683565b90506000836109905761098b8d8787611913565b61099f565b61099f8d878560000151611dda565b905080518251016001600160401b03811180156109bb57600080fd5b506040519080825280602002602001820160405280156109f557816020015b6109e261308a565b8152602001906001900390816109da5790505b5096506000805b8351821015610a8157838281518110610a1157fe5b602002602001015160000151898281518110610a2957fe5b60209081029190910101516001600160a01b0390911690528351849083908110610a4f57fe5b602002602001015160200151898281518110610a6757fe5b6020908102919091018101510152600191820191016109fc565b600091505b8251821015610b0b57828281518110610a9b57fe5b602002602001015160000151898281518110610ab357fe5b60209081029190910101516001600160a01b0390911690528251839083908110610ad957fe5b602002602001015160200151898281518110610af157fe5b602090810291909101810151015260019182019101610a86565b50505050505050509695505050505050565b600080610b35848460200260040160ff166020610b8d565b9050610b4684600483016020610b8d565b949350505050565b60006103ac826000610453565b50601290565b6000806000610b6f85610eb2565b9150915080821115610b85576103a7828261118b565b505092915050565b600081830184511015610be5576040805162461bcd60e51b815260206004820152601b60248201527a52656164696e67206279746573206f7574206f6620626f756e647360281b604482015290519081900360640190fd5b826020018401519050816020038015610c04576008810260020a820491505b509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610c38613044565b81806020019051810190610c4c9190613803565b90506000610c5f858584604001516111e8565b905060008260000151806020019051810190610c7b91906134ec565b8251518151919250908114610ca25760405162461bcd60e51b815260040161063c90613df8565b60005b81811015610ce957610ce1838281518110610cbc57fe5b602002602001015185600001518381518110610cd457fe5b60200260200101516121f3565b600101610ca5565b50610cfc846020015184602001516122d9565b5050509392505050565b60008060606000610d1789896123bc565b80519091506001600160a01b0316610d4357610d3489888a6125ac565b91506000809350935050610314565b610d5089898389896127d5565b905193509050955095509592505050565b60608182601f011015610dac576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b828284011015610df4576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b81830184511015610e40576040805162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015290519081900360640190fd5b606082158015610e5f5760405191506000825260208201604052610ea9565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610e98578051835260209283019201610e80565b5050858452601f01601f1916604052505b50949350505050565b600080600080610ec1856129b1565b915091506000806000806000808a6001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0757600080fd5b505afa158015610f1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3f91906131e2565b905060005b878110156110c057888181518110610f5857fe5b6020026020010151600001519650610f708c88612aa5565b909450925083151580610f8257508215155b156110b85760405163b3596f0760e01b81526001600160a01b0383169063b3596f0790610fb3908a90600401613b7f565b60206040518083038186803b158015610fcb57600080fd5b505afa158015610fdf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100391906138d3565b9450866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561103e57600080fd5b505afa158015611052573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110769190613a12565b60ff169550611097611090600a88900a6107d788886110ce565b8c90612d0d565b9a506110b56110ae600a88900a6107d788876110ce565b8b90612d0d565b99505b600101610f44565b505050505050505050915091565b6000826110dd575060006103ac565b828202828482816110ea57fe5b04146104455760405162461bcd60e51b81526004018080602001828103825260218152602001806141626021913960400191505060405180910390fd5b600080821161117a576040805162461bcd60e51b815260206004820152601a602482015279536166654d6174683a206469766973696f6e206279207a65726f60301b604482015290519081900360640190fd5b81838161118357fe5b049392505050565b6000828211156111e2576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6111f061306b565b7f00000000000000000000000000000000000000000000000000000000000000008211156112305760405162461bcd60e51b815260040161063c90613d08565b600061123c85856123bc565b80519091506001600160a01b03166112545750610445565b60008060006112638888612d65565b915091506000816001600160401b038111801561127f57600080fd5b506040519080825280602002602001820160405280156112b957816020015b6112a66130a2565b81526020019060019003908161129e5790505b50905060005b828110156113355785600001516001600160a01b03168482815181106112e157fe5b6020026020010151600001516001600160a01b03161461132d5783818151811061130757fe5b602002602001015182868151811061131b57fe5b60209081029190910101526001909401935b6001016112bf565b506000611342838661118b565b8251038252508552505060408051630f28525360e11b815290516000916001600160a01b03891691631e50a4a691600480820192602092909190829003018186803b15801561139057600080fd5b505afa1580156113a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c891906131e2565b90506000805b8381101561149e57611494836001600160a01b03166329c07fba886000015184815181106113f857fe5b6020026020010151600001518960000151858151811061141457fe5b6020026020010151602001516040518363ffffffff1660e01b815260040161143d929190613c2a565b60206040518083038186803b15801561145557600080fd5b505afa158015611469573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148d91906138d3565b8390612d0d565b91506001016113ce565b506000886001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156114da57600080fd5b505afa1580156114ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151291906131e2565b855160405163b3596f0760e01b81526001600160a01b03929092169163b3596f079161154091600401613b7f565b60206040518083038186803b15801561155857600080fd5b505afa15801561156c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159091906138d3565b9050600085600001516001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156115d157600080fd5b505afa1580156115e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116099190613a12565b60ff16600a0a905060006116587f00000000000000000000000000000000000000000000000000000000000000006107d7611644828d61118b565b611652876107d78a896110ce565b906110ce565b96516020808a0180516001600160a01b03909316909252905101969096525050505050509392505050565b6040805160028082526060828101909352816020015b6116a161308a565b8152602001906001900390816116995790505090506000806117896116e285604001516116dc600288602001516110ce90919063ffffffff16565b90612d0d565b8551604051636eb1769f60e11b81526001600160a01b039091169063dd62ed3e90611733908a907f000000000000000000000000000000000000000000000000000000000000000090600401613b93565b60206040518083038186803b15801561174b57600080fd5b505afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178391906138d3565b9061301b565b9150915083600001518360008151811061179f57fe5b60209081029190910101516001600160a01b03909116905263095ea7b360e01b7f0000000000000000000000000000000000000000000000000000000000000000836117ed576000196117ef565b825b604051602401611800929190613c2a565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050508360008151811061184057fe5b6020026020010151602001819052507f00000000000000000000000000000000000000000000000000000000000000008360018151811061187d57fe5b6020908102919091018101516001600160a01b0390921690915284519085015160405163573ade8160e01b926118bc9290916002908a90602401613c96565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050836001815181106118fc57fe5b602002602001015160200181905250505092915050565b60606000806119228686612d65565b9150915061192e61306b565b604080516001808252818301909252600091816020015b61194d6130b9565b81526020019060019003908161194557505086518051919250611978918101602090810191016134ec565b8160008151811061198557fe5b6020026020010151600001819052506000816000815181106119a357fe5b6020026020010151602001516000019060028111156119be57fe5b908160028111156119cb57fe5b905250808252602080870151908301528051600090829082906119ea57fe5b602090810291909101015151519050611a0860016116dc8684612d0d565b6001600160401b0381118015611a1d57600080fd5b50604051908082528060200260200182016040528015611a5757816020015b611a4461308a565b815260200190600190039081611a3c5790505b5095506000806000805b87811015611bf85785600081518110611a7657fe5b6020026020010151600001518381518110611a8d57fe5b6020026020010151600001516001600160a01b0316898281518110611aae57fe5b6020026020010151600001516001600160a01b03161415611b085785600081518110611ad657fe5b6020026020010151600001518381518110611aed57fe5b60200260200101516020015191508280600101935050611b23565b888181518110611b1457fe5b60200260200101516020015191505b7f00000000000000000000000000000000000000000000000000000000000000008a8581518110611b5057fe5b60209081029190910101516001600160a01b0390911690528851631a4ca37b60e21b908a9083908110611b7f57fe5b602002602001015160000151838f604051602401611b9f93929190613c43565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050508a8581518110611bde57fe5b602090810291909101810151015260019384019301611a61565b5060005b84811015611d1d5786518051600090611c1157fe5b6020026020010151600001518181518110611c2857fe5b6020026020010151600001518a8581518110611c4057fe5b60209081029190910101516001600160a01b0390911690528651805163095ea7b360e01b917f000000000000000000000000000000000000000000000000000000000000000091600090611c9057fe5b6020026020010151600001518381518110611ca757fe5b602002602001015160200151604051602401611cc4929190613c2a565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050508a8581518110611d0357fe5b602090810291909101810151015260019384019301611bfc565b507f0000000000000000000000000000000000000000000000000000000000000000898481518110611d4b57fe5b60209081029190910101516001600160a01b039091169052604051630bffcd2560e41b90611d7d908890602401613e81565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050898481518110611dbc57fe5b60200260200101516020018190525050505050505050509392505050565b6060600080611de98686612d65565b90925090506000611dfb8260036110ce565b9050806001600160401b0381118015611e1357600080fd5b50604051908082528060200260200182016040528015611e4d57816020015b611e3a61308a565b815260200190600190039081611e325790505b5060408051600280825260608201835292965060009290916020830190803683370190505090508581600181518110611e8257fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506000805b848110156121d3577f0000000000000000000000000000000000000000000000000000000000000000878381518110611edb57fe5b60209081029190910101516001600160a01b0390911690528551631a4ca37b60e21b90879083908110611f0a57fe5b602002602001015160000151878381518110611f2257fe5b6020026020010151602001518c604051602401611f4193929190613c43565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050878381518110611f8057fe5b6020026020010151602001819052508180600101925050876001600160a01b0316868281518110611fad57fe5b6020026020010151600001516001600160a01b0316146121cb57858181518110611fd357fe5b602002602001015160000151878381518110611feb57fe5b60209081029190910101516001600160a01b039091169052855163095ea7b360e01b907f00000000000000000000000000000000000000000000000000000000000000009088908490811061203c57fe5b602002602001015160200151604051602401612059929190613c2a565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505087838151811061209857fe5b60200260200101516020018190525081806001019250508581815181106120bb57fe5b602002602001015160000151836000815181106120d457fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000087838151811061212157fe5b60209081029190910101516001600160a01b03909116905285516338ed173960e01b9087908390811061215057fe5b6020026020010151602001516000858d600019604051602401612177959493929190614010565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050508783815181106121b657fe5b60209081029190910181015101526001909101905b600101611ea6565b5060006121e0848361118b565b8751038752509498975050505050505050565b805182516001600160a01b039081169116146122215760405162461bcd60e51b815260040161063c90613dcc565b8060200151826020015111156122495760405162461bcd60e51b815260040161063c90613e2b565b6122a47f00000000000000000000000000000000000000000000000000000000000000006107d77f000000000000000000000000000000000000000000000000000000000000000084602001516110ce90919063ffffffff16565b602080840151908301516122b79161118b565b11156122d55760405162461bcd60e51b815260040161063c90613d68565b5050565b805182516001600160a01b039081169116146123075760405162461bcd60e51b815260040161063c90613d3c565b60006123647f00000000000000000000000000000000000000000000000000000000000000006107d77f000000000000000000000000000000000000000000000000000000000000000085602001516110ce90919063ffffffff16565b60208301519091506123769082612d0d565b83602001511115801561239b57506020820151612393908261118b565b836020015110155b6123b75760405162461bcd60e51b815260040161063c90613e54565b505050565b6123c46130a2565b6000806123d0856129b1565b915091506000805b828110156125a2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663365090a085838151811061241b57fe5b6020026020010151600001516040518263ffffffff1660e01b81526004016124439190613b7f565b60206040518083038186803b15801561245b57600080fd5b505afa15801561246f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249391906131e2565b91506001600160a01b0382161561259a576040516370a0823160e01b81526001600160a01b038316906370a08231906124d0908a90600401613b7f565b60206040518083038186803b1580156124e857600080fd5b505afa1580156124fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252091906138d3565b602086018190521561259a576000612541670de0b6b3a7640000600161118b565b905061256a670de0b6b3a76400006107d7836116dc8b8b602001516110ce90919063ffffffff16565b6020870152845185908390811061257d57fe5b6020908102919091010151516001600160a01b03168652506125a2565b6001016123d8565b5050505092915050565b60606000806125bb8685612d65565b91509150806002026001600160401b03811180156125d857600080fd5b5060405190808252806020026020018201604052801561261257816020015b6125ff61308a565b8152602001906001900390816125f75790505b5092506000805b82811015610909577f000000000000000000000000000000000000000000000000000000000000000085838151811061264e57fe5b60209081029190910101516001600160a01b0390911690528351631a4ca37b60e21b9085908390811061267d57fe5b60200260200101516000015185838151811061269557fe5b6020026020010151602001518a6040516024016126b493929190613c43565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050508583815181106126f357fe5b602002602001015160200181905250818060010192505083818151811061271657fe5b60200260200101516000015185838151811061272e57fe5b60209081029190910101516001600160a01b039091169052835163a9059cbb60e01b90889086908490811061275f57fe5b60200260200101516020015160405160240161277c929190613c2a565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050508583815181106127bb57fe5b602090810291909101810151015260019182019101612619565b604080516001808252818301909252606091600091906020808301908036833701905050905084600001518160008151811061280d57fe5b6001600160a01b03929092166020928302919091019091015260408051600180825281830190925260009181602001602082028036833701905050905085602001518160008151811061285c57fe5b602090810291909101015260408051600180825281830190925260009181602001602082028036833701905050604080516001808252818301909252919250816020015b6128a861308a565b8152602001906001900390816128a05790505093507f0000000000000000000000000000000000000000000000000000000000000000846000815181106128eb57fe5b6020026020010151600001906001600160a01b031690816001600160a01b03168152505063ab9c4b5d60e01b898484848d8d8c8c6040516020016129319392919061404f565b60408051601f198184030181529082905261295696959493929160c490602401613bad565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050508460008151811061299657fe5b60200260200101516020018190525050505095945050505050565b60606000826001600160a01b0316631e50a4a66040518163ffffffff1660e01b815260040160206040518083038186803b1580156129ee57600080fd5b505afa158015612a02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2691906131e2565b6001600160a01b031663e5406dbf6040518163ffffffff1660e01b815260040160006040518083038186803b158015612a5e57600080fd5b505afa158015612a72573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612a9a9190810190613413565b915081519050915091565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cff027d9856040518263ffffffff1660e01b8152600401612af69190613b7f565b60206040518083038186803b158015612b0e57600080fd5b505afa158015612b22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b4691906131e2565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663365090a0866040518263ffffffff1660e01b8152600401612b969190613b7f565b60206040518083038186803b158015612bae57600080fd5b505afa158015612bc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be691906131e2565b90506001600160a01b03821615612c76576040516370a0823160e01b81526001600160a01b038316906370a0823190612c23908990600401613b7f565b60206040518083038186803b158015612c3b57600080fd5b505afa158015612c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7391906138d3565b93505b6001600160a01b03811615612d04576040516370a0823160e01b81526001600160a01b038216906370a0823190612cb1908990600401613b7f565b60206040518083038186803b158015612cc957600080fd5b505afa158015612cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0191906138d3565b92505b50509250929050565b600082820183811015610445576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b60606000806000612d75866129b1565b91509150806001600160401b0381118015612d8f57600080fd5b50604051908082528060200260200182016040528015612dc957816020015b612db66130a2565b815260200190600190039081612dae5790505b5093506000805b82811015612ffb577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cff027d9858381518110612e1357fe5b6020026020010151600001516040518263ffffffff1660e01b8152600401612e3b9190613b7f565b60206040518083038186803b158015612e5357600080fd5b505afa158015612e67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8b91906131e2565b91506001600160a01b03821615612ff3576040516370a0823160e01b81526001600160a01b038316906370a0823190612ec8908b90600401613b7f565b60206040518083038186803b158015612ee057600080fd5b505afa158015612ef4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f1891906138d3565b868681518110612f2457fe5b60200260200101516020018181525050858581518110612f4057fe5b602002602001015160200151600014612ff357612f6f670de0b6b3a76400006107d7898989815181106108cb57fe5b868681518110612f7b57fe5b60200260200101516020018181525050858581518110612f9757fe5b60200260200101516020015160001415612fb057612ff3565b838181518110612fbc57fe5b602002602001015160000151868681518110612fd457fe5b60209081029190910101516001600160a01b0390911690526001909401935b600101612dd0565b506000613008838661118b565b9050808651038652505050509250929050565b6000808383018481101561303657600080925092505061303d565b6001925090505b9250929050565b60405180606001604052806060815260200161305e6130a2565b8152602001600081525090565b6040518060400160405280606081526020016130856130a2565b905290565b60408051808201909152600081526060602082015290565b604080518082019091526000808252602082015290565b604051806040016040528060608152602001613085604080518082019091528060008152602001606081525090565b803561044e81614144565b60008083601f840112613104578182fd5b5081356001600160401b0381111561311a578182fd5b60208301915083602082850101111561303d57600080fd5b600082601f830112613142578081fd5b8135613155613150826140df565b61409f565b818152846020838601011115613169578283fd5b816020850160208301379081016020019190915292915050565b600082601f830112613193578081fd5b81516131a1613150826140df565b8181528460208386010111156131b5578283fd5b610b46826020830160208701614100565b6000602082840312156131d7578081fd5b81356104458161412c565b6000602082840312156131f3578081fd5b81516104458161412c565b60008060408385031215613210578081fd5b823561321b8161412c565b9150602083013561322b8161412c565b809150509250929050565b6000806000806060858703121561324b578182fd5b84356132568161412c565b935060208501356132668161412c565b925060408501356001600160401b03811115613280578283fd5b61328c878288016130f3565b95989497509550505050565b600080600080608085870312156132ad578182fd5b84356132b88161412c565b935060208501356132c88161412c565b92506040850135915060608501356132df8161412c565b939692955090935050565b600080600080600060a08688031215613301578283fd5b853561330c8161412c565b9450602086013561331c8161412c565b93506040860135925060608601356133338161412c565b915060808601356001600160401b0381111561334d578182fd5b61335988828901613132565b9150509295509295909350565b60008060008060008060a0878903121561337e578384fd5b86356133898161412c565b955060208701356133998161412c565b9450604087013593506060870135925060808701356001600160401b038111156133c1578182fd5b6133cd89828a016130f3565b979a9699509497509295939492505050565b6000806000606084860312156133f3578081fd5b83356133fe8161412c565b95602085013595506040909401359392505050565b60006020808385031215613425578182fd5b82516001600160401b038082111561343b578384fd5b818501915085601f83011261344e578384fd5b815161345c613150826140c2565b818152848101908486016040808502870188018b101561347a578889fd5b8896505b848710156134dd5780828c031215613494578889fd5b805181810181811088821117156134a757fe5b825282516134b48161412c565b8152828901516134c381614144565b818a0152845260019690960195928701929081019061347e565b50909998505050505050505050565b6000602082840312156134fd578081fd5b81516001600160401b0380821115613513578283fd5b818401915084601f830112613526578283fd5b8151613534613150826140c2565b818152602080820191908501865b848110156136225781518701601f196060828d038201121561356257898afd5b604051606081018181108a8211171561357757fe5b60405260208301516135888161412c565b8152604083015160208201526060830151898111156135a5578b8cfd5b92909201916040838e03830112156135bb578a8bfd5b6040519150604082018281108a821117156135d257fe5b604090815260208401518352830151898111156135ed578b8cfd5b6135fc8e602083870101613183565b602084810191909152604083019390935250865294850194929092019150600101613542565b509098975050505050505050565b600060208284031215613641578081fd5b5035919050565b600060208284031215613659578081fd5b81356001600160401b0381111561366e578182fd5b610b4684828501613132565b6000806040838503121561368c578182fd5b82356001600160401b038111156136a1578283fd5b6136ad85828601613132565b95602094909401359450505050565b6000806000606084860312156136d0578081fd5b83356001600160401b038111156136e5578182fd5b6136f186828701613132565b9660208601359650604090950135949350505050565b60008060408385031215613719578182fd5b82356001600160401b0381111561372e578283fd5b61373a85828601613132565b925050602083013561322b81614152565b60008060006060848603121561375f578081fd5b83356001600160401b03811115613774578182fd5b61378086828701613132565b935050602084013561379181614152565b929592945050506040919091013590565b6000806000606084860312156137b6578081fd5b83356001600160401b038111156137cb578182fd5b6137d786828701613132565b93505060208401356137e881614152565b915060408401356137f881614152565b809150509250925092565b600060208284031215613814578081fd5b81516001600160401b038082111561382a578283fd5b90830190818503608081121561383e578384fd5b6040805160608101818110858211171561385457fe5b8252845184811115613864578687fd5b61387089828801613183565b82525081601f1984011215613883578586fd5b81519250818301838110858211171561389857fe5b8252602085015193506138aa8461412c565b838352818501516020840152826020820152606085015182820152809550505050505092915050565b6000602082840312156138e4578081fd5b5051919050565b6000806000606084860312156138ff578081fd5b8335925060208401356001600160401b038082111561391c578283fd5b908501908187036080811215613930578384fd5b6040805160608101818110858211171561394657fe5b8252843584811115613956578687fd5b6139628b828801613132565b82525081601f1984011215613975578586fd5b81519250818301838110858211171561398a57fe5b82526020850135935061399c8461412c565b838352818501356020840152826020820152606085013582820152809650506139c68189016130e8565b9450505050509250925092565b600080600080600060a086880312156139ea578283fd5b5050835160208501516040860151606087015160809097015192989197509594509092509050565b600060208284031215613a23578081fd5b815161044581614152565b6000815180845260208085019450808401835b83811015613a665781516001600160a01b031687529582019590820190600101613a41565b509495945050505050565b6000815180845260208085018081965082840281019150828601855b85811015613ad4578284038952815180516001600160a01b031685528501516040868601819052613ac081870183613b10565b9a87019a9550505090840190600101613a8d565b5091979650505050505050565b6000815180845260208085019450808401835b83811015613a6657815187529582019590820190600101613af4565b60008151808452613b28816020860160208601614100565b601f01601f19169290920160200192915050565b80516001600160a01b03168252602090810151910152565b6000815160038110613b6257fe5b80845250602082015160406020850152610b466040850182613b10565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b600060018060a01b03808a16835260e06020840152613bcf60e084018a613a2e565b8381036040850152613be1818a613ae1565b90508381036060850152613bf58189613ae1565b9050818716608085015283810360a0850152613c118187613b10565b9250505060ff831660c083015298975050505050505050565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b600060018060a01b038516825283602083015260606040830152613c8d6060830184613a71565b95945050505050565b6001600160a01b039485168152602081019390935260ff919091166040830152909116606082015260800190565b6000602082526104456020830184613a71565b90815260200190565b6001600160e01b031991909116815260200190565b6000602082526104456020830184613b10565b6020808252601a9082015279696e76616c696420736c69707061676520746f6c6572616e636560301b604082015260600190565b6020808252601290820152710c8e6e840c2e6e6cae840dad2e6dac2e8c6d60731b604082015260600190565b6020808252601390820152720e6e4c640c2dadeeadce840dad2e6dac2e8c6d606b1b604082015260600190565b6020808252601d908201527f63616e6e6f742072656d6f7665206e6f6e2d656d707479206173736574000000604082015260600190565b6020808252601290820152710e6e4c640c2e6e6cae840dad2e6dac2e8c6d60731b604082015260600190565b6020808252601990820152780e6eec2e040c8c2e8c240d8cadccee8d040dad2e6dac2e8c6d603b1b604082015260600190565b6020808252600f908201526e0c2dadeeadce840e8dede40d0d2ced608b1b604082015260600190565b6020808252601390820152720c8e6e840c2dadeeadce840dad2e6dac2e8c6d606b1b604082015260600190565b600060208083526080830184516060808487015282825180855260a08801915060a086820289010194508584019350865b81811015613f7857888603609f190183528451805160408089528151818a0181905290918a82028a01880191908b0190888b01908d5b81811015613f49578c8503605f19018352835180516001600160a01b031686528e8101518f8701528601518686018c905280518c8701528e015160808601879052613f3660a0870182613b10565b955050928d0192918d0191600101613ee8565b5050505091890151888303898b015291613f638184613b54565b98505050948701945091860191600101613eb2565b50505050918501519150610b466040850183613b3c565b6020808252825160608383015280516080840181905260009291820190839060a08601905b80831015613fdd57613fc7828551613b3c565b6040820191508484019350600183019250613fb4565b509286015192613ff06040870185613b3c565b9695505050505050565b61ffff9290921682521515602082015260400190565b600086825260ff8616602083015260a0604083015261403260a0830186613a2e565b6001600160a01b0394909416606083015250608001529392505050565b60008482526060602083015283516080606084015261407160e0840182613b10565b905060208501516140856080850182613b3c565b5060409485015160c0840152921515919093015292915050565b6040518181016001600160401b03811182821017156140ba57fe5b604052919050565b60006001600160401b038211156140d557fe5b5060209081020190565b60006001600160401b038211156140f257fe5b50601f01601f191660200190565b60005b8381101561411b578181015183820152602001614103565b838111156106455750506000910152565b6001600160a01b038116811461414157600080fd5b50565b801515811461414157600080fd5b60ff8116811461414157600080fdfe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220df374de4c91f19bd64f344c6779310717ef3991637988aac66cb30d31ce88fd064736f6c63430007060033000000000000000000000000a238dd80c259a72e81d7e4664a9801593f98d1c50000000000000000000000004f754e0f0924afd74980886b0b479fa1d7c58d0d0000000000000000000000009be950d8bff36f09e5d460271859f94c7c58344c000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000002710