0 txs
43 calls
constructor
constructor(address _WETH)
functions
calcRoutes
viewfunction calcRoutes(bytes path, address _to) view returns (tuple[] routes)
getPairInfo
viewfunction getPairInfo(address tokenA, address tokenB, uint24 fee, uint16 protocolId) view returns (address pair, address token0, address token1, address factory)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
protocolRoutes
viewfunction protocolRoutes(uint16) view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
quote
viewfunction quote(uint256 amountIn, bytes path) view returns (uint256 amountOut)
trackedPairs
viewfunction trackedPairs(address) view returns (uint256)
WETH
viewfunction WETH() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
addProtocolRoute
nonpayablefunction addProtocolRoute(address protocol)
clearToken
nonpayablefunction clearToken(address token, address to, uint256 minAmt)
externalCall
nonpayablefunction externalCall(address sender, uint128[] amounts, uint256 lpTokens, bytes _data)
getAmountsIn
nonpayablefunction getAmountsIn(uint256 amountOut, bytes path) returns (uint256[] amounts, tuple[] routes)
getAmountsOut
nonpayablefunction getAmountsOut(uint256 amountIn, bytes path) returns (uint256[] amounts, tuple[] routes)
initialize
nonpayablefunction initialize()
refundETH
payablefunction refundETH() payable
removeProtocolRoute
nonpayablefunction removeProtocolRoute(uint16 protocolId)
renounceOwnership
nonpayablefunction renounceOwnership()
sendTokensCallback
nonpayablefunction sendTokensCallback(address[] tokens, uint256[] amounts, address payee, bytes data)
swapExactETHForTokens
payablefunction swapExactETHForTokens(uint256 amountOutMin, bytes path, address to, uint256 deadline) payable
swapExactTokensForETH
nonpayablefunction swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, bytes path, address to, uint256 deadline)
swapExactTokensForTokens
nonpayablefunction swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, bytes path, address to, uint256 deadline)
trackPair
nonpayablefunction trackPair(address token0, address token1, uint24 fee, uint16 protocolId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unTrackPair
nonpayablefunction unTrackPair(address token0, address token1, uint24 fee, uint16 protocolId)
unwrapWETH
payablefunction unwrapWETH(uint256 minAmt, address to) payable
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
AddProtocolRoute
event AddProtocolRoute(uint16 indexed protocolId, address protocol)
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
ExternalCallSwap
event ExternalCallSwap(address indexed sender, address indexed caller, uint256 indexed tokenId, address tokenIn, address tokenOut, uint256 amountIn, uint256 amountOut)
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
RemoveProtocolRoute
event RemoveProtocolRoute(uint16 indexed protocolId, address protocol)
TrackPair
event TrackPair(address indexed pair, address token0, address token1, uint24 fee, address factory, uint16 protocolId)
UnTrackPair
event UnTrackPair(address indexed pair, address token0, address token1, uint24 fee, address factory, uint16 protocolId)
Upgraded
event Upgraded(address indexed implementation)
errors
NotEnoughTokens
error NotEnoughTokens()
NotEnoughWETH
error NotEnoughWETH()
NotGammaPool
error NotGammaPool()
NotWETH
error NotWETH()
ST_Fail
error ST_Fail()
STE_Fail
error STE_Fail()
STF_Fail
error STF_Fail()
creation bytecode
0x60c0604052306080523480156200001557600080fd5b506040516200490e3803806200490e8339810160408190526200003891620000d0565b6001600160a01b03811660a052620000503362000057565b5062000102565b600180546001600160a01b0319169055620000728162000075565b50565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600060208284031215620000e357600080fd5b81516001600160a01b0381168114620000fb57600080fd5b9392505050565b60805160a0516147926200017c600039600081816101d60152818161052f015281816106730152818161204b015281816123c001528181612472015281816132d90152818161331f0152613396015260008181610c5901528181610c9901528181610d3801528181610d780152610e0b01526147926000f3fe6080604052600436106101c65760003560e01c806377d2b771116100f7578063a7ee23ff11610095578063e16d9ce511610064578063e16d9ce514610591578063e30c3978146105a4578063f2fde38b146105c2578063fee9574a146105e257600080fd5b8063a7ee23ff146104fd578063ad5c46481461051d578063ccbe764a14610551578063ddbf4ba31461057157600080fd5b806387693675116100d1578063876936751461045c5780638da5cb5b1461046f5780638ee8884c146104a7578063992d91ed146104dd57600080fd5b806377d2b7711461041257806379ba5097146104325780638129fc1c1461044757600080fd5b8063635248eb11610164578063715018a61161013e578063715018a61461036a5780637376de141461037f578063753e26971461039f578063773f27d7146103bf57600080fd5b8063635248eb146102f95780636464a1eb1461032657806365e31e071461034a57600080fd5b80632aa4a9e5116101a05780632aa4a9e5146102835780633659cfe6146102b15780634f1ef286146102d157806352d1902d146102e457600080fd5b8063058dbb311461021b57806312210e8a1461023b57806325ee976a1461024357600080fd5b3661021657336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461021457604051635724f38560e01b815260040160405180910390fd5b005b600080fd5b34801561022757600080fd5b50610214610236366004613b88565b610602565b61021461074a565b34801561024f57600080fd5b5061027061025e366004613bfa565b60036020526000908152604090205481565b6040519081526020015b60405180910390f35b34801561028f57600080fd5b506102a361029e366004613ce1565b61075c565b60405161027a929190613dc8565b3480156102bd57600080fd5b506102146102cc366004613bfa565b610c4f565b6102146102df366004613e15565b610d2e565b3480156102f057600080fd5b50610270610dfe565b34801561030557600080fd5b50610319610314366004613e4e565b610eb1565b60405161027a9190613e9f565b34801561033257600080fd5b50610214610341366004613ef6565b50505050505050565b34801561035657600080fd5b50610214610365366004613bfa565b611389565b34801561037657600080fd5b50610214611523565b34801561038b57600080fd5b5061021461039a366004613b88565b611535565b3480156103ab57600080fd5b506102146103ba366004613fa4565b6115b2565b3480156103cb57600080fd5b506103df6103da366004614050565b611ae7565b604080516001600160a01b039586168152938516602085015291841691830191909152909116606082015260800161027a565b34801561041e57600080fd5b5061027061042d3660046140ac565b611ca5565b34801561043e57600080fd5b50610214611dfc565b34801561045357600080fd5b50610214611e73565b61021461046a3660046140f7565b611fe3565b34801561047b57600080fd5b506000546201000090046001600160a01b03165b6040516001600160a01b03909116815260200161027a565b3480156104b357600080fd5b5061048f6104c236600461415d565b6002602052600090815260409020546001600160a01b031681565b3480156104e957600080fd5b506102146104f8366004614050565b6120ff565b34801561050957600080fd5b5061021461051836600461415d565b612185565b34801561052957600080fd5b5061048f7f000000000000000000000000000000000000000000000000000000000000000081565b34801561055d57600080fd5b5061021461056c36600461417a565b61228d565b34801561057d57600080fd5b5061021461058c366004614050565b612332565b61021461059f3660046141bb565b6123a8565b3480156105b057600080fd5b506001546001600160a01b031661048f565b3480156105ce57600080fd5b506102146105dd366004613bfa565b6124e5565b3480156105ee57600080fd5b506102a36105fd366004613ce1565b61255d565b804281101561062c5760405162461bcd60e51b8152600401610623906141e0565b60405180910390fd5b600061066f86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250309250610eb1915050565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681600183516106aa919061422d565b815181106106ba576106ba614240565b6020026020010151604001516001600160a01b0316146107285760405162461bcd60e51b815260206004820152602360248201527f556e6976657273616c526f757465723a20414d4f554e545f4f55545f4e4f545f60448201526208aa8960eb1b6064820152608401610623565b61073488888333612a1c565b506107406000856123a8565b5050505050505050565b471561075a5761075a3347612dd6565b565b606080602d835110158015610788575060196014845161077c919061422d565b610786919061426c565b155b6107a45760405162461bcd60e51b815260040161062390614280565b6107ad83612e4a565b6001600160401b038111156107c4576107c4613c17565b6040519080825280602002602001820160405280156107fd57816020015b6107ea613ae7565b8152602001906001900390816107e25790505b50905061080983612e4a565b6108149060016142b7565b6001600160401b0381111561082b5761082b613c17565b604051908082528060200260200182016040528015610854578160200160208202803683370190505b509150600060018251610867919061422d565b905084836108768360016142b7565b8151811061088657610886614240565b6020026020010181815250505b600061089e85612e82565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091528451919250908490849081106108f7576108f7614240565b602002602001018190525061091361090e86612ed4565b612f33565b86868151811061092557610925614240565b602002602001015160200187878151811061094257610942614240565b602002602001015160400188888151811061095f5761095f614240565b602002602001015160600189898151811061097c5761097c614240565b60200260200101516080018462ffffff1662ffffff168152508461ffff1661ffff16815250846001600160a01b03166001600160a01b0316815250846001600160a01b03166001600160a01b031681525050505050600260008484815181106109e7576109e7614240565b60200260200101516060015161ffff1661ffff16815260200190815260200160002060009054906101000a90046001600160a01b0316838381518110610a2f57610a2f614240565b602002602001015160e001906001600160a01b031690816001600160a01b03168152505060006001600160a01b0316838381518110610a7057610a70614240565b602002602001015160e001516001600160a01b031603610aa25760405162461bcd60e51b8152600401610623906142ca565b828281518110610ab457610ab4614240565b602002602001015160e001516001600160a01b03166358bc781e85846001610adc91906142b7565b81518110610aec57610aec614240565b6020026020010151858581518110610b0657610b06614240565b602002602001015160200151868681518110610b2457610b24614240565b602002602001015160400151878781518110610b4257610b42614240565b6020026020010151608001516040518563ffffffff1660e01b8152600401610b6d9493929190614311565b6060604051808303816000875af1158015610b8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb0919061433b565b868581518110610bc257610bc2614240565b60200260200101868681518110610bdb57610bdb614240565b6020026020010151600001878781518110610bf857610bf8614240565b602090810291909101015162ffffff9093166080909301929092526001600160a01b039092169052528015610c3757610c3085612f94565b9450610c3d565b50610c47565b5060001901610893565b509250929050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c975760405162461bcd60e51b81526004016106239061437e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610ce0600080516020614716833981519152546001600160a01b031690565b6001600160a01b031614610d065760405162461bcd60e51b8152600401610623906143ca565b610d0f81612fbf565b60408051600080825260208201909252610d2b91839190612fc7565b50565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610d765760405162461bcd60e51b81526004016106239061437e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610dbf600080516020614716833981519152546001600160a01b031690565b6001600160a01b031614610de55760405162461bcd60e51b8152600401610623906143ca565b610dee82612fbf565b610dfa82826001612fc7565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e9e5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610623565b5060008051602061471683398151915290565b6060602d835110158015610edc5750601960148451610ed0919061422d565b610eda919061426c565b155b610ef85760405162461bcd60e51b815260040161062390614280565b610f0183612e4a565b6001600160401b03811115610f1857610f18613c17565b604051908082528060200260200182016040528015610f5157816020015b610f3e613ae7565b815260200190600190039081610f365790505b50905060005b6000610f6285612e82565b604080516101008101825260008082526020820181905291810182905260608101829052608081018290526001600160a01b03871660a082015260c0810182905260e0810191909152845191925090849084908110610fc357610fc3614240565b6020026020010181905250610fda61090e86613132565b868681518110610fec57610fec614240565b602002602001015160200187878151811061100957611009614240565b602002602001015160400188888151811061102657611026614240565b602002602001015160600189898151811061104357611043614240565b60200260200101516080018462ffffff1662ffffff168152508461ffff1661ffff16815250846001600160a01b03166001600160a01b0316815250846001600160a01b03166001600160a01b031681525050505050600260008484815181106110ae576110ae614240565b60200260200101516060015161ffff1661ffff16815260200190815260200160002060009054906101000a90046001600160a01b03168383815181106110f6576110f6614240565b602002602001015160e001906001600160a01b031690816001600160a01b03168152505060006001600160a01b031683838151811061113757611137614240565b602002602001015160e001516001600160a01b0316036111695760405162461bcd60e51b8152600401610623906142ca565b82828151811061117b5761117b614240565b602002602001015160e001516001600160a01b031663e84c21568484815181106111a7576111a7614240565b6020026020010151602001518585815181106111c5576111c5614240565b6020026020010151604001518686815181106111e3576111e3614240565b6020908102919091010151608001516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015262ffffff1660448201526064016040805180830381865afa158015611248573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126c9190614416565b84848151811061127e5761127e614240565b602002602001015160000185858151811061129b5761129b614240565b60209081029190910101516001600160a01b0392831660c090910152911690528115611322578282815181106112d3576112d3614240565b602002602001015160c00151836001846112ed919061422d565b815181106112fd576112fd614240565b602002602001015160a001906001600160a01b031690816001600160a01b0316815250505b80156113385761133185613148565b945061133e565b50611347565b50600101610f57565b826001600160a01b031682828151811061136357611363614240565b602002602001015160a001516001600160a01b03161461138257600080fd5b5092915050565b611391613173565b6001600160a01b0381166113b75760405162461bcd60e51b815260040161062390614445565b6000816001600160a01b031663da1f12ab6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141b919061447c565b905060008161ffff16116114415760405162461bcd60e51b815260040161062390614499565b61ffff81166000908152600260205260409020546001600160a01b0316156114bb5760405162461bcd60e51b815260206004820152602760248201527f556e6976657273616c526f757465723a2050524f544f434f4c5f524f5554455f604482015266125117d554d15160ca1b6064820152608401610623565b61ffff811660008181526002602090815260409182902080546001600160a01b0319166001600160a01b03871690811790915591519182527f5eef14173b9f502de5da2300eb099358ad090b4f3a3a9f713e154cb8accc24b591015b60405180910390a25050565b61152b613173565b61075a60006131d4565b80428110156115565760405162461bcd60e51b8152600401610623906141e0565b600061159986868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250610eb1915050565b90506115a788888333612a1c565b505050505050505050565b82156116005760405162461bcd60e51b815260206004820152601d60248201527f45787465726e616c43616c6c3a20496e76616c6964206465706f7369740000006044820152606401610623565b600061160e828401846144e3565b9050428160400151101561165c5760405162461bcd60e51b8152602060048201526015602482015274115e1d195c9b985b10d85b1b0e8811561412549151605a1b6044820152606401610623565b600061166c826080015130610eb1565b905060008160008151811061168357611683614240565b6020026020010151602001519050600082600184516116a2919061422d565b815181106116b2576116b2614240565b602090810291909101015160409081015190516370a0823160e01b81523060048201529091506000906001600160a01b038416906370a0823190602401602060405180830381865afa15801561170c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117309190614577565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038416906370a0823190602401602060405180830381865afa15801561177a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179e9190614577565b90508a8a60008181106117b3576117b3614240565b90506020020160208101906117c89190614590565b6001600160801b0316821015801561181057508a8a60018181106117ee576117ee614240565b90506020020160208101906118039190614590565b6001600160801b03168110155b8061188657508a8a600181811061182957611829614240565b905060200201602081019061183e9190614590565b6001600160801b0316821015801561188657508a8a600081811061186457611864614240565b90506020020160208101906118799190614590565b6001600160801b03168110155b6118de5760405162461bcd60e51b815260206004820152602360248201527f45787465726e616c43616c6c3a20496e76616c696420746f6b656e20616d6f756044820152626e747360e81b6064820152608401610623565b8551158015906118ef575085518210155b6119475760405162461bcd60e51b815260206004820152602360248201527f45787465726e616c43616c6c3a20496e73756666696369656e7420616d6f756e6044820152623a24b760e91b6064820152608401610623565b85516020870151339160009161195f91908930612a1c565b6040516370a0823160e01b81523060048201529091506001600160a01b038716906370a0823190602401602060405180830381865afa1580156119a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ca9190614577565b6040516370a0823160e01b81523060048201529094506001600160a01b038616906370a0823190602401602060405180830381865afa158015611a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a359190614577565b92508315611a4857611a488683866131ed565b8215611a5957611a598583856131ed565b8760600151826001600160a01b03168f6001600160a01b03167f4bd4f75dbbdb5df2d66dc673e149468997a8cf51911124181ad09c029bafcb9489898d6000015187604051611acf94939291906001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b60405180910390a45050505050505050505050505050565b60008080806001600160a01b038816611b125760405162461bcd60e51b815260040161062390614445565b6001600160a01b038716611b385760405162461bcd60e51b815260040161062390614445565b61ffff85166000908152600260205260409020546001600160a01b031680611bac5760405162461bcd60e51b815260206004820152602160248201527f556e6976657273616c526f757465723a20524f5554455f4e4f545f5345545f556044820152600560fc1b6064820152608401610623565b604051634a2cf2d560e11b81526001600160a01b038a81166004830152898116602483015262ffffff89166044830152821690639459e5aa90606401606060405180830381865afa158015611c05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2991906145b9565b809550819650829750505050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9791906145fb565b915050945094509450949050565b600080611ce984848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250309250610eb1915050565b905060005b8151811015611df257818181518110611d0957611d09614240565b602002602001015160e001516001600160a01b0316631d21451b87848481518110611d3657611d36614240565b602002602001015160200151858581518110611d5457611d54614240565b602002602001015160400151868681518110611d7257611d72614240565b6020026020010151608001516040518563ffffffff1660e01b8152600401611d9d9493929190614311565b602060405180830381865afa158015611dba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dde9190614577565b955080611dea81614618565b915050611cee565b5093949350505050565b60015433906001600160a01b03168114611e6a5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610623565b610d2b816131d4565b600054610100900460ff1615808015611e935750600054600160ff909116105b80611ead5750303b158015611ead575060005460ff166001145b611f105760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610623565b6000805460ff191660011790558015611f33576000805461ff0019166101001790555b6000546201000090046001600160a01b031615611f925760405162461bcd60e51b815260206004820152601c60248201527f556e6976657273616c526f757465723a20494e495449414c495a4544000000006044820152606401610623565b611f9b336131d4565b8015610d2b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b80428110156120045760405162461bcd60e51b8152600401610623906141e0565b600061204786868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250610eb1915050565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168160008151811061208657612086614240565b6020026020010151602001516001600160a01b0316146120f35760405162461bcd60e51b815260206004820152602260248201527f556e6976657273616c526f757465723a20414d4f554e545f494e5f4e4f545f456044820152610a8960f31b6064820152608401610623565b61074034888330612a1c565b612107613173565b60008061211686868686611ae7565b6001600160a01b0384166000818152600360205260409081902042905551939a509198509294509192507fcb14e2fb0cbbdcbfb00f4df8055ec6f0cd85689163976cc617ea78f153c8d3c6906121759089908990899087908a90614631565b60405180910390a2505050505050565b61218d613173565b60008161ffff16116121b15760405162461bcd60e51b815260040161062390614499565b61ffff81166000908152600260205260409020546001600160a01b031661222c5760405162461bcd60e51b815260206004820152602960248201527f556e6976657273616c526f757465723a2050524f544f434f4c5f524f5554455f604482015268125117d5539554d15160ba1b6064820152608401610623565b61ffff811660008181526002602090815260409182902080546001600160a01b0319811690915591516001600160a01b0390921680835292917fe9f7c5de6320b5d2b5c5556aed95c251805f29bd738fec50c6108c1bb17a2a479101611517565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156122d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f89190614577565b90508181101561231b576040516308aeed0f60e21b815260040160405180910390fd5b801561232c5761232c8484836131ed565b50505050565b61233a613173565b60008061234986868686611ae7565b6001600160a01b0384166000818152600360205260408082209190915551939a509198509294509192507ff7bfd13ec1809b2ff3c550d6fb1d343dba49815d9b3b1d7710145ccb17091e05906121759089908990899087908a90614631565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561240f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124339190614577565b9050828110156124565760405163d666767760e01b815260040160405180910390fd5b80156124e057604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b1580156124be57600080fd5b505af11580156124d2573d6000803e3d6000fd5b505050506124e08282612dd6565b505050565b6124ed613173565b600180546001600160a01b0383166001600160a01b031990911681179091556125256000546001600160a01b03620100009091041690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b606080602d835110158015612589575060196014845161257d919061422d565b612587919061426c565b155b6125a55760405162461bcd60e51b815260040161062390614280565b6125ae83612e4a565b6001600160401b038111156125c5576125c5613c17565b6040519080825280602002602001820160405280156125fe57816020015b6125eb613ae7565b8152602001906001900390816125e35790505b50905061260a83612e4a565b6126159060016142b7565b6001600160401b0381111561262c5761262c613c17565b604051908082528060200260200182016040528015612655578160200160208202803683370190505b509150838260008151811061266c5761266c614240565b60200260200101818152505060005b600061268685612e82565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091528451919250908490849081106126df576126df614240565b60200260200101819052506126f661090e86613132565b86868151811061270857612708614240565b602002602001015160200187878151811061272557612725614240565b602002602001015160400188888151811061274257612742614240565b602002602001015160600189898151811061275f5761275f614240565b60200260200101516080018462ffffff1662ffffff168152508461ffff1661ffff16815250846001600160a01b03166001600160a01b0316815250846001600160a01b03166001600160a01b031681525050505050600260008484815181106127ca576127ca614240565b60200260200101516060015161ffff1661ffff16815260200190815260200160002060009054906101000a90046001600160a01b031683838151811061281257612812614240565b602002602001015160e001906001600160a01b031690816001600160a01b03168152505060006001600160a01b031683838151811061285357612853614240565b602002602001015160e001516001600160a01b0316036128855760405162461bcd60e51b8152600401610623906142ca565b82828151811061289757612897614240565b602002602001015160e001516001600160a01b0316638fb643088584815181106128c3576128c3614240565b60200260200101518585815181106128dd576128dd614240565b6020026020010151602001518686815181106128fb576128fb614240565b60200260200101516040015187878151811061291957612919614240565b6020026020010151608001516040518563ffffffff1660e01b81526004016129449493929190614311565b6060604051808303816000875af1158015612963573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612987919061433b565b866129938660016142b7565b815181106129a3576129a3614240565b602002602001018686815181106129bc576129bc614240565b60200260200101516000018787815181106129d9576129d9614240565b602090810291909101015162ffffff9093166080909301929092526001600160a01b039092169052528015610c3757612a1185613148565b94505060010161267b565b6000808511612a6d5760405162461bcd60e51b815260206004820152601f60248201527f556e6976657273616c526f757465723a205a45524f5f414d4f554e545f494e006044820152606401610623565b612ab583600081518110612a8357612a83614240565b6020026020010151602001518385600081518110612aa357612aa3614240565b602002602001015160c00151886132d7565b600060018451612ac5919061422d565b90506000848281518110612adb57612adb614240565b602002602001015160a0015190506000858381518110612afd57612afd614240565b6020026020010151604001516001600160a01b03166370a08231836040518263ffffffff1660e01b8152600401612b4391906001600160a01b0391909116815260200190565b602060405180830381865afa158015612b60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b849190614577565b905060005b838111612cc057868181518110612ba257612ba2614240565b602002602001015160e001516001600160a01b0316639eb82f6a888381518110612bce57612bce614240565b602002602001015160200151898481518110612bec57612bec614240565b6020026020010151604001518a8581518110612c0a57612c0a614240565b6020026020010151608001518b8681518110612c2857612c28614240565b602090810291909101015160a001516040516001600160e01b031960e087901b1681526001600160a01b039485166004820152928416602484015262ffffff9091166044830152919091166064820152608401600060405180830381600087803b158015612c9557600080fd5b505af1158015612ca9573d6000803e3d6000fd5b505050508080612cb890614618565b915050612b89565b5080868481518110612cd457612cd4614240565b6020026020010151604001516001600160a01b03166370a08231846040518263ffffffff1660e01b8152600401612d1a91906001600160a01b0391909116815260200190565b602060405180830381865afa158015612d37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d5b9190614577565b612d65919061422d565b935086841015612dcb5760405162461bcd60e51b815260206004820152602b60248201527f556e6976657273616c526f757465723a20494e53554646494349454e545f4f5560448201526a1514155517d05353d5539560aa1b6064820152608401610623565b505050949350505050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612e23576040519150601f19603f3d011682016040523d82523d6000602084013e612e28565b606091505b50509050806124e0576040516325e5592160e21b815260040160405180910390fd5b60006003612e5a600260146142b7565b612e6491906142b7565b60148351612e72919061422d565b612e7c919061466c565b92915050565b60006003612e92600260146142b7565b612e9c91906142b7565b60146003612eab6002836142b7565b612eb591906142b7565b612ebf91906142b7565b612ec991906142b7565b825110159050919050565b6060612e7c60146003612ee86002836142b7565b612ef291906142b7565b612efc91906142b7565b8351612f08919061422d565b60146003612f176002836142b7565b612f2191906142b7565b612f2b91906142b7565b8491906133e8565b6000808080612f42858261353f565b9350612f4f8560146135f3565b9150612f67612f60600260146142b7565b869061369e565b9050612f8b6003612f7a600260146142b7565b612f8491906142b7565b869061353f565b92509193509193565b6060612e7c60006003612fa9600260146142b7565b612fb391906142b7565b8451612f2b919061422d565b610d2b613173565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612ffa576124e083613749565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613054575060408051601f3d908101601f1916820190925261305191810190614577565b60015b6130b75760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610623565b60008051602061471683398151915281146131265760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610623565b506124e08383836137e5565b6060612e7c600060146003612f176002836142b7565b6060612e7c600361315b600260146142b7565b61316591906142b7565b6003612fa9600260146142b7565b6000546001600160a01b036201000090910416331461075a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610623565b600180546001600160a01b0319169055610d2b8161380a565b6040516001600160a01b03838116602483015260448201839052600091829186169060640160408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b1790525161324791906146a4565b6000604051808303816000865af19150503d8060008114613284576040519150601f19603f3d011682016040523d82523d6000602084013e613289565b606091505b50915091508180156132b35750805115806132b35750808060200190518101906132b391906146c0565b6132d05760405163847ea61d60e01b815260040160405180910390fd5b5050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161480156133185750804710155b156133c1577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561337857600080fd5b505af115801561338c573d6000803e3d6000fd5b50505050506133bc7f000000000000000000000000000000000000000000000000000000000000000083836131ed565b61232c565b306001600160a01b038416036133dc576133bc8483836131ed565b61232c84848484613865565b6060816133f681601f6142b7565b10156134355760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610623565b8261344083826142b7565b101561347f5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610623565b61348982846142b7565b845110156134cd5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610623565b6060821580156134ec5760405191506000825260208201604052613536565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561352557805183526020928301920161350d565b5050858452601f01601f1916604052505b50949350505050565b60008161354d8160146142b7565b10156135905760405162461bcd60e51b8152602060048201526012602482015271746f416464726573735f6f766572666c6f7760701b6044820152606401610623565b61359b8260146142b7565b835110156135e35760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606401610623565b500160200151600160601b900490565b6000816136018160026142b7565b10156136435760405162461bcd60e51b8152602060048201526011602482015270746f55696e7431365f6f766572666c6f7760781b6044820152606401610623565b61364e8260026142b7565b835110156136955760405162461bcd60e51b8152602060048201526014602482015273746f55696e7431365f6f75744f66426f756e647360601b6044820152606401610623565b50016002015190565b6000816136ac8160036142b7565b10156136ee5760405162461bcd60e51b8152602060048201526011602482015270746f55696e7432345f6f766572666c6f7760781b6044820152606401610623565b6136f98260036142b7565b835110156137405760405162461bcd60e51b8152602060048201526014602482015273746f55696e7432345f6f75744f66426f756e647360601b6044820152606401610623565b50016003015190565b6001600160a01b0381163b6137b65760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610623565b60008051602061471683398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6137ee83613958565b6000825111806137fb5750805b156124e05761232c8383613998565b600080546001600160a01b038381166201000081810262010000600160b01b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6040516001600160a01b038481166024830152838116604483015260648201839052600091829187169060840160408051601f198184030181529181526020820180516001600160e01b03166323b872dd60e01b179052516138c791906146a4565b6000604051808303816000865af19150503d8060008114613904576040519150601f19603f3d011682016040523d82523d6000602084013e613909565b606091505b509150915081801561393357508051158061393357508080602001905181019061393391906146c0565b6139505760405163e5c4a34160e01b815260040160405180910390fd5b505050505050565b61396181613749565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606139bd8383604051806060016040528060278152602001614736602791396139c4565b9392505050565b6060600080856001600160a01b0316856040516139e191906146a4565b600060405180830381855af49150503d8060008114613a1c576040519150601f19603f3d011682016040523d82523d6000602084013e613a21565b606091505b5091509150613a3286838387613a3c565b9695505050505050565b60608315613aab578251600003613aa4576001600160a01b0385163b613aa45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610623565b5081613ab5565b613ab58383613abd565b949350505050565b815115613acd5781518083602001fd5b8060405162461bcd60e51b815260040161062391906146e2565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b60008083601f840112613b3d57600080fd5b5081356001600160401b03811115613b5457600080fd5b602083019150836020828501011115613b6c57600080fd5b9250929050565b6001600160a01b0381168114610d2b57600080fd5b60008060008060008060a08789031215613ba157600080fd5b863595506020870135945060408701356001600160401b03811115613bc557600080fd5b613bd189828a01613b2b565b9095509350506060870135613be581613b73565b80925050608087013590509295509295509295565b600060208284031215613c0c57600080fd5b81356139bd81613b73565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b0381118282101715613c4f57613c4f613c17565b60405290565b600082601f830112613c6657600080fd5b81356001600160401b0380821115613c8057613c80613c17565b604051601f8301601f19908116603f01168101908282118183101715613ca857613ca8613c17565b81604052838152866020858801011115613cc157600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060408385031215613cf457600080fd5b8235915060208301356001600160401b03811115613d1157600080fd5b613d1d85828601613c55565b9150509250929050565b600081518084526020808501945080840160005b83811015613dbd57815180516001600160a01b039081168952848201518116858a01526040808301518216908a015260608083015161ffff16908a015260808083015162ffffff16908a015260a0808301518216908a015260c0808301518216908a015260e09182015116908801526101009096019590820190600101613d3b565b509495945050505050565b604080825283519082018190526000906020906060840190828701845b82811015613e0157815184529284019290840190600101613de5565b50505083810382850152613a328186613d27565b60008060408385031215613e2857600080fd5b8235613e3381613b73565b915060208301356001600160401b03811115613d1157600080fd5b60008060408385031215613e6157600080fd5b82356001600160401b03811115613e7757600080fd5b613e8385828601613c55565b9250506020830135613e9481613b73565b809150509250929050565b6020815260006139bd6020830184613d27565b60008083601f840112613ec457600080fd5b5081356001600160401b03811115613edb57600080fd5b6020830191508360208260051b8501011115613b6c57600080fd5b60008060008060008060006080888a031215613f1157600080fd5b87356001600160401b0380821115613f2857600080fd5b613f348b838c01613eb2565b909950975060208a0135915080821115613f4d57600080fd5b613f598b838c01613eb2565b909750955060408a01359150613f6e82613b73565b90935060608901359080821115613f8457600080fd5b50613f918a828b01613b2b565b989b979a50959850939692959293505050565b60008060008060008060808789031215613fbd57600080fd5b8635613fc881613b73565b955060208701356001600160401b0380821115613fe457600080fd5b613ff08a838b01613eb2565b909750955060408901359450606089013591508082111561401057600080fd5b5061401d89828a01613b2b565b979a9699509497509295939492505050565b62ffffff81168114610d2b57600080fd5b61ffff81168114610d2b57600080fd5b6000806000806080858703121561406657600080fd5b843561407181613b73565b9350602085013561408181613b73565b925060408501356140918161402f565b915060608501356140a181614040565b939692955090935050565b6000806000604084860312156140c157600080fd5b8335925060208401356001600160401b038111156140de57600080fd5b6140ea86828701613b2b565b9497909650939450505050565b60008060008060006080868803121561410f57600080fd5b8535945060208601356001600160401b0381111561412c57600080fd5b61413888828901613b2b565b909550935050604086013561414c81613b73565b949793965091946060013592915050565b60006020828403121561416f57600080fd5b81356139bd81614040565b60008060006060848603121561418f57600080fd5b833561419a81613b73565b925060208401356141aa81613b73565b929592945050506040919091013590565b600080604083850312156141ce57600080fd5b823591506020830135613e9481613b73565b60208082526018908201527f556e6976657273616c526f757465723a20455850495245440000000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b81810381811115612e7c57612e7c614217565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60008261427b5761427b614256565b500690565b6020808252601d908201527f556e6976657273616c526f757465723a20494e56414c49445f50415448000000604082015260600190565b80820180821115612e7c57612e7c614217565b60208082526027908201527f556e6976657273616c526f757465723a2050524f544f434f4c5f524f5554455f6040820152661393d517d4d15560ca1b606082015260800190565b9384526001600160a01b0392831660208501529116604083015262ffffff16606082015260800190565b60008060006060848603121561435057600080fd5b83519250602084015161436281613b73565b60408501519092506143738161402f565b809150509250925092565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6000806040838503121561442957600080fd5b825161443481613b73565b6020840151909250613e9481613b73565b6020808252601d908201527f556e6976657273616c526f757465723a205a45524f5f41444452455353000000604082015260600190565b60006020828403121561448e57600080fd5b81516139bd81614040565b6020808252602a908201527f556e6976657273616c526f757465723a20494e56414c49445f50524f544f434f6040820152691317d493d5551157d25160b21b606082015260800190565b6000602082840312156144f557600080fd5b81356001600160401b038082111561450c57600080fd5b9083019060a0828603121561452057600080fd5b614528613c2d565b8235815260208301356020820152604083013560408201526060830135606082015260808301358281111561455c57600080fd5b61456887828601613c55565b60808301525095945050505050565b60006020828403121561458957600080fd5b5051919050565b6000602082840312156145a257600080fd5b81356001600160801b03811681146139bd57600080fd5b6000806000606084860312156145ce57600080fd5b83516145d981613b73565b60208501519093506145ea81613b73565b604085015190925061437381613b73565b60006020828403121561460d57600080fd5b81516139bd81613b73565b60006001820161462a5761462a614217565b5060010190565b6001600160a01b039586168152938516602085015262ffffff929092166040840152909216606082015261ffff909116608082015260a00190565b60008261467b5761467b614256565b500490565b60005b8381101561469b578181015183820152602001614683565b50506000910152565b600082516146b6818460208701614680565b9190910192915050565b6000602082840312156146d257600080fd5b815180151581146139bd57600080fd5b6020815260008251806020840152614701816040850160208701614680565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122078a8add866631ccbcaa8a955eee50bd1e39a82d57d583aaacc4f5aac3e9a430264736f6c63430008150033000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2