0 txs
323 calls
constructor
No constructor.
functions
_APPROVE_PROXY
viewfunction _APPROVE_PROXY() view returns (address)
_WETH
viewfunction _WETH() view returns (address)
_WNATIVE_RELAY
viewfunction _WNATIVE_RELAY() view returns (address)
commissionRateLimit
viewfunction commissionRateLimit() view returns (uint256)
DENOMINATOR
viewfunction DENOMINATOR() view returns (uint256)
version
viewfunction version() view returns (string)
smartSwapByInvest
payablefunction smartSwapByInvest(tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData, address to) payable returns (uint256 returnAmount)
smartSwapByInvestWithRefund
payablefunction smartSwapByInvestWithRefund(tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData, address to, address refundTo) payable returns (uint256 returnAmount)
smartSwapByOrderId
payablefunction smartSwapByOrderId(uint256 orderId, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData) payable returns (uint256 returnAmount)
smartSwapTo
payablefunction smartSwapTo(uint256 orderId, address receiver, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[] extraData) payable returns (uint256 returnAmount)
swapWrap
payablefunction swapWrap(uint256 orderId, uint256 rawdata) payable
swapWrapToWithBaseRequest
payablefunction swapWrapToWithBaseRequest(uint256 orderId, address receiver, tuple baseRequest) payable
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes)
uniswapV3SwapTo
payablefunction uniswapV3SwapTo(uint256 receiver, uint256 amount, uint256 minReturn, uint256[] pools) payable returns (uint256 returnAmount)
uniswapV3SwapToWithBaseRequest
payablefunction uniswapV3SwapToWithBaseRequest(uint256 orderId, address receiver, tuple baseRequest, uint256[] pools) payable returns (uint256 returnAmount)
unxswapByOrderId
payablefunction unxswapByOrderId(uint256 srcToken, uint256 amount, uint256 minReturn, bytes32[] pools) payable returns (uint256 returnAmount)
unxswapTo
payablefunction unxswapTo(uint256 srcToken, uint256 amount, uint256 minReturn, address receiver, bytes32[] pools) payable returns (uint256 returnAmount)
unxswapToWithBaseRequest
payablefunction unxswapToWithBaseRequest(uint256 orderId, address receiver, tuple baseRequest, bytes32[] pools) payable returns (uint256 returnAmount)
events
CommissionFromTokenRecord
event CommissionFromTokenRecord(address fromTokenAddress, uint256 commissionAmount, address referrerAddress)
CommissionToTokenRecord
event CommissionToTokenRecord(address toTokenAddress, uint256 commissionAmount, address referrerAddress)
OrderRecord
event OrderRecord(address fromToken, address toToken, address sender, uint256 fromAmount, uint256 returnAmount)
SwapOrderId
event SwapOrderId(uint256 id)
errors
SafeTransferFailed
error SafeTransferFailed()
creation bytecode
0x608060405234801561001057600080fd5b50614bcb806100206000396000f3fe60806040526004361061010d5760003560e01c8063918f867411610095578063b881547711610064578063b8815477146102e5578063ca68d8f6146102f8578063e0af361614610310578063e99bfa9514610332578063fa461e331461034557600080fd5b8063918f8674146102945780639871efa4146102ac57806398d2ac62146102bf578063b80c2f09146102d257600080fd5b806344014e98116100dc57806344014e98146101c357806354fd4d50146101d6578063591b3d08146102195780636aa476451461022c57806373679b6b1461026c57600080fd5b806301617fab1461016457806303b87e5f1461017757806308298b5a1461019d5780630d5f0e3b146101b057600080fd5b3661015f5732330361015d5760405162461bcd60e51b81526020600482015260146024820152731155120819195c1bdcda5d081c995a9958dd195960621b60448201526064015b60405180910390fd5b005b600080fd5b61015d610172366004613d55565b610365565b61018a610185366004613dff565b610391565b6040519081526020015b60405180910390f35b61018a6101ab366004613ecb565b610442565b61018a6101be366004613f3d565b610484565b61018a6101d1366004613f9d565b6104c6565b3480156101e257600080fd5b5061020c6040518060400160405280600a81526020016976312e302e352d74656560b01b81525081565b6040516101949190614042565b61018a610227366004614637565b61076b565b34801561023857600080fd5b50610254731d948e5d85b7987ae664b2dc0f34dcf1adc576fc81565b6040516001600160a01b039091168152602001610194565b34801561027857600080fd5b5061025473bb686278c6eb5b0a9cc4406f8db5a79bfaf53a9981565b3480156102a057600080fd5b5061018a633b9aca0081565b61018a6102ba366004613f3d565b6109d1565b61015d6102cd3660046146f9565b610a08565b61018a6102e0366004614738565b610b1d565b61018a6102f3366004613f9d565b610b7a565b34801561030457600080fd5b5061018a6301c9c38081565b34801561031c57600080fd5b50610254600080516020614b1683398151915281565b61018a6103403660046147ee565b610dcf565b34801561035157600080fd5b5061015d61036036600461489e565b610ddf565b600160ff1b81166fffffffffffffffffffffffffffffffff821661038b8433848461102e565b50505050565b60008760800135428110156103b85760405162461bcd60e51b81526004016101549061491d565b6040518b8152600080516020614b768339815191529060200160405180910390a161043333808c6103ee368e90038e018e614945565b8c8c8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061042e92508d91508e9050614961565b611432565b9b9a5050505050505050505050565b60405160a087901c8152600090600080516020614b768339815191529060200160405180910390a1610479878787338888886114ed565b979650505050505050565b60405160a086901c8152600090600080516020614b768339815191529060200160405180910390a16104bc3387600088888888611585565b9695505050505050565b60008360800135428110156104ed5760405162461bcd60e51b81526004016101549061491d565b604051878152600080516020614b768339815191529060200160405180910390a160008361055d5760405162461bcd60e51b815260206004820152601c60248201527f706f6f6c73206d7573742062652067726561746572207468616e2030000000006044820152606401610154565b600061056a600186614984565b9050600080600160fd1b88888581811061058657610586614997565b905060200201351611905080156105ad57600080516020614b3683398151915292506106cc565b60006001600160a01b038888858181106105c9576105c9614997565b905060200201351690506000600160ff1b8989868181106105ec576105ec614997565b905060200201351660001490508061066557816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561063c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066091906149ad565b6106c7565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c791906149ad565b945050505b50506001600160a01b0381166106e860408801602089016149ca565b6001600160a01b03161461073e5760405162461bcd60e51b815260206004820152601f60248201527f746f546f6b656e206d69736d617463682077697468206c61737420706f6f6c006044820152606401610154565b61075f336001600160a01b038916883560408a013560608b01358a8a611585565b98975050505050505050565b60008660800151428110156107925760405162461bcd60e51b81526004016101549061491d565b87516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed1981016107f85760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21039b7bab931b2903a37b5b2b760611b6044820152606401610154565b6001600160a01b0384166108475760405162461bcd60e51b8152602060048201526016602482015275726566756e64546f206973206164647265737328302960501b6044820152606401610154565b6001600160a01b0385166108905760405162461bcd60e51b815260206004820152601060248201526f746f206973206164647265737328302960801b6044820152606401610154565b60008960400151116108db5760405162461bcd60e51b8152602060048201526014602482015273066726f6d546f6b656e416d6f756e7420697320360641b6044820152606401610154565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610922573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094691906149e7565b905060005b89518110156109ad578a60400151828b838151811061096c5761096c614997565b602002602001015161097e9190614a00565b6109889190614a17565b8a828151811061099a5761099a614997565b602090810291909101015260010161094b565b5060408a018190526109c38a8a8a30898b6117a0565b9a9950505050505050505050565b60405160a086901c8152600090600080516020614b768339815191529060200160405180910390a16104bc868686333388886114ed565b600081356001600160a01b038116600080516020614b36833981519152148015610a575750600080516020614b16833981519152610a4c60408501602086016149ca565b6001600160a01b0316145b15610a655760009150610b06565b6001600160a01b038116600080516020614b16833981519152148015610ab05750600080516020614b36833981519152610aa560408501602086016149ca565b6001600160a01b0316145b15610abe5760019150610b06565b60405162461bcd60e51b815260206004820152601c60248201527f53776170577261703a20696e76616c696420746f6b656e2070616972000000006044820152606401610154565b610b16858584866040013561102e565b5050505050565b6000876080013542811015610b445760405162461bcd60e51b81526004016101549061491d565b6040518a8152600080516020614b768339815191529060200160405180910390a16109c33380806103ee368e90038e018e614945565b6000836080013542811015610ba15760405162461bcd60e51b81526004016101549061491d565b604051878152600080516020614b768339815191529060200160405180910390a1600083610c115760405162461bcd60e51b815260206004820152601c60248201527f706f6f6c73206d7573742062652067726561746572207468616e2030000000006044820152606401610154565b60008585610c20600182614984565b818110610c2f57610c2f614997565b6020029190910135915050600160fe1b811615801590610c5f57600080516020614b368339815191529250610d45565b6001600160a01b038216600160ff1b8316151580610cde57816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd991906149ad565b610d40565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4091906149ad565b945050505b50506001600160a01b038116610d6160408801602089016149ca565b6001600160a01b031614610db75760405162461bcd60e51b815260206004820152601f60248201527f746f546f6b656e206d69736d617463682077697468206c61737420706f6f6c006044820152606401610154565b61075f863560408801356060890135338b8a8a6114ed565b60006104bc86868686868761076b565b610e80565b3d6000803e3d6000fd5b67a9059cbb70a0823160c01b815230816008015260206000602483600401855afa610e1b57610e1b610de4565b6000518015610e465760a435600483015260248201819052610e466020600060448582885af1610e4b565b505050565b80610e5857610e58610de4565b600160005114601f3d11163d151780610e7c57633c9fd93960e21b60005260046000fd5b5050565b604051601581017306ff0b40e9091053eee51fa1d482ce5d852f523360611b825260206000600484335afa610eb757610eb7610de4565b6020806004808501335afa610ece57610ece610de4565b60206040600460088501335afa610ee757610ee7610de4565b6000806000881360018114610f03576020519250879150610f0c565b60005192508891505b507fffdb1d10011ad0ff90774d0c6bb92e5c5c8b4461f700000000000000000000008452606060002083527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460208401526001600160a01b0360558520169250338314610f8457635960139160e11b60005260046000fd5b60843592507306ff0b40e9091053eee51fa1d482ce5d852f523360611b845230831460018114610ff657826014860152836034860152336054860152816074860152610ff1602060006084601089016000731d948e5d85b7987ae664b2dc0f34dcf1adc576fc5af1610e4b565b611023565b336010860152816030860152611019602060006044600c89016000885af1610e4b565b6110238386610dee565b505050505050505050565b600081116110735760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74206d757374206265203e20360741b6044820152606401610154565b600061107d611ad7565b905060008361109a57600080516020614b368339815191526110aa565b600080516020614b168339815191525b90506000806110bc8484338a89611bd8565b91509150851561127e5760405163052f523360e11b8152600080516020614b16833981519152600482015233602482015273bb686278c6eb5b0a9cc4406f8db5a79bfaf53a99604482015260648101869052731d948e5d85b7987ae664b2dc0f34dcf1adc576fc90630a5ea46690608401600060405180830381600087803b15801561114757600080fd5b505af115801561115b573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b81526004810188905273bb686278c6eb5b0a9cc4406f8db5a79bfaf53a999250632e1a7d4d9150602401600060405180830381600087803b1580156111ac57600080fd5b505af11580156111c0573d6000803e3d6000fd5b505050506001600160a01b0382163014611279576000826001600160a01b03164760405160006040518083038185875af1925050503d8060008114611221576040519150601f19603f3d011682016040523d82523d6000602084013e611226565b606091505b50509050806112775760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610154565b505b611358565b83516112cc578434146112cc5760405162461bcd60e51b81526020600482015260166024820152751d985b1d59481b9bdd08195c5d585b08185b5bdd5b9d60521b6044820152606401610154565b600080516020614b168339815191526001600160a01b031663d0e30db0866040518263ffffffff1660e01b81526004016000604051808303818588803b15801561131557600080fd5b505af1158015611329573d6000803e3d6000fd5b505050506001600160a01b0383163014905061135857611358600080516020614b168339815191528387612183565b60006113658589846121b3565b9050600080516020614b768339815191528960405161138691815260200190565b60405180910390a1600080516020614b56833981519152876113b657600080516020614b368339815191526113c6565b600080516020614b168339815191525b886113df57600080516020614b168339815191526113ef565b600080516020614b368339815191525b604080516001600160a01b0393841681529290911660208301523290820152606081018890526080810188905260a00160405180910390a1505050505050505050565b60006001600160a01b0385166114785760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610154565b6000611482611ad7565b90506000806114ab8361149f89600001516001600160a01b031690565b8c8b8b60400151611bd8565b90925090508960006114c1898989858f896117a0565b905060006114d0868c866121b3565b90506114dc8183614984565b9d9c50505050505050505050505050565b60006001600160a01b0384166115335760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610154565b600061153d611ad7565b9050600080611558836001600160a01b038d168a8a8e611bd8565b9150915060006115766001600160a01b038d168c8c8a8a8e896125a7565b905060006114d0858a856121b3565b600080611590611ad7565b9050600034156115af5750600080516020614b368339815191526116d4565b60006001600160a01b03868660008181106115cc576115cc614997565b905060200201351690506000600160ff1b878760008181106115f0576115f0614997565b90506020020135166000149050801561166c57816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611641573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166591906149ad565b92506116d1565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ce91906149ad565b92505b50505b6001600160a01b0388161561174f57806001600160a01b0316886001600160a01b03161461174f5760405162461bcd60e51b815260206004820152602260248201527f66726f6d546f6b656e206d69736d61746368207769746820666972737420706f6044820152611bdb60f21b6064820152608401610154565b60008061175f84848e8e8d611bd8565b9150915060006117738d848c8c8c8c612dce565b90506000611782868e856121b3565b905061178e8183614984565b9e9d5050505050505050505050505050565b604086015160009087906118015760405162461bcd60e51b815260206004820152602260248201527f526f7574653a2066726f6d546f6b656e416d6f756e74206d757374206265203e604482015261020360f41b6064820152608401610154565b805160208201516001600160a01b039182169161181f9116856132e5565b925061182a81613379565b1561189957600080516020614b168339815191526001600160a01b031663d0e30db083604001516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561187c57600080fd5b505af1158015611890573d6000803e3d6000fd5b50505050503095505b6000805b89518110156118d5578981815181106118b8576118b8614997565b6020026020010151826118cb9190614a39565b915060010161189d565b5082604001518111156119485760405162461bcd60e51b815260206004820152603560248201527f526f7574653a206e756d626572206f6620626174636865732073686f756c64206044820152741899480f0f48199c9bdb551bdad95b905b5bdd5b9d605a1b6064820152608401610154565b50865188511461198c5760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610154565b60005b87518110156119f5576119ed8787876119b487602001516001600160a01b0316613379565b8d86815181106119c6576119c6614997565b60200260200101518d87815181106119e0576119e0614997565b6020026020010151613395565b60010161198f565b50611a0482602001518561350d565b60208201518390611a1e906001600160a01b0316866132e5565b611a289190614984565b92508160600151831015611a775760405162461bcd60e51b8152602060048201526016602482015275135a5b881c995d1d5c9b881b9bdd081c995858da195960521b6044820152606401610154565b60208083015160408085015181516001600160a01b038087168252909316938301939093523290820152606081019190915260808101849052600080516020614b568339815191529060a00160405180910390a150509695505050505050565b6040805161010081018252600060a080830182905260c0830191909152651111057e155560d11b36601f198101356001600160d01b03198116928314651e51057e155560d11b8414811786526522220afc2bbb60d01b8414653ca20afc2bbb60d01b8514811760208801529482901c65ffffffffffff16968601969096526001600160a01b039081166060860152603f1990910135600160ff1b8116151560e0860152908116608085015292939091176001808214908114611ba65760008560a0015260008560c00152611bd1565b6060360335935065ffffffffffff60a01b841660a01c8560a001526001600160a01b0384168560c001525b5050505090565b600080866020015115611bfd5730611bf48860800151306137d5565b91509150612179565b8651611c0e57508290506000612179565b611f0a565b80820281158282048414178402611c325763ad251c276000526004601cfd5b9290920492915050565b600082821015611c54576346e72d036000526004601cfd5b500390565b62461bcd60e51b600052600160e51b6020528060405250806000fd5b60008060008085855af180610e4657610e4660607c1c20636f6d6d697373696f6e2077697468206574686572206572726f72611c59565b6040516084810160405263052f523360e11b81528160048201528260248201528360448201528460648201526000806084836000731d948e5d85b7987ae664b2dc0f34dcf1adc576fc5af1905080610b1657610b1660577c13636c61696d20746f6b656e73206661696c6564000000000000000000611c59565b600080604051604881016040526ba9059cbba9059cbb70a0823160a01b815230600c82015260206000602460088401875afa80611d8057611d806058740519d95d0818985b185b98d953d98819985a5b195960421b611c59565b600051898801611dab670de0b6b3a764000083611da684670de0b6b3a76400008e611c13565b611c13565b95505080851115611dde57611dde60597c15696e76616c696420616d6f756e74315363616c656400000000000000611c59565b8660088401528460288401526020600060446004860160008a5af1915081601f3d1160016000511416151615611e17573d863b15171591505b81611e4457611e44605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00611c59565b8815611eb957611e548582611c3c565b93508860048401528360248401526020600060448560008a5af1915081601f3d1160016000511416151615611e8c573d863b15171591505b81611eb957611eb9605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00611c59565b5050509550959350505050565b604051606081016040528181528260208201528360408201527f0d3b1268ca3dbb6d3d8a0ea35f44f8f9d58cf578d732680b71b6904fb2733e0d606082a150505050565b608087015160e088015160a0890151600091901515898414600080516020614b3683398151915285148b151617611f6357611f63605b7c17746f6b656e20616e6420737263206e6f74206d617463680000000000611c59565b610100600080516020614b36833981519152851402601083028201019250505060008060008060408d015160a08e01516301c9c3808183011115611fc957611fc9605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400611c59565b60608f01519550808201633b9aca0003828c0204935060c08f01519450808201633b9aca0003818c02049250505084610100811461205c57610101811461207f57610110811461205c57610111811461207f5780156120c557600181146120dc576010811461210a57601181146121365761205760526e0e696e76616c69642073746174757360701b611c59565b61216a565b6120668386611c75565b6120578584600080516020614b36833981519152611ec6565b6120898386611c75565b6120a28584600080516020614b36833981519152611ec6565b6120ac8285611c75565b6120578483600080516020614b36833981519152611ec6565b6120d183868e8a611cac565b612057858489611ec6565b6120e883868e8a611cac565b6120f3858489611ec6565b6120ff82858e8a611cac565b612057848389611ec6565b61211683308e8a611cac565b61212460008085888b611d26565b5061213086828a611ec6565b5061216a565b612144828401308e8a611cac565b612151828585888b611d26565b61215c87838b611ec6565b61216786828b611ec6565b50505b50505050505050836000915091505b9550959350505050565b6121968363a9059cbb60e01b8484613855565b610e465760405163fb7f507960e01b815260040160405180910390fd5b600083602001516121c6575060006125a0565b604084015160a08501516301c9c380818301111561220657612206605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400611c59565b6080860151606087015160405160608101604052600080516020614b3683398151915283146001811461245d57604051604c81016040526fa9059cbba9059cbba9059cbb70a0823160801b8152306010820152602060006024600c8401885afa8061228e5761228e6058740519d95d0818985b185b98d953d98819985a5b195960421b611c59565b6000518a8110156122b2576122b2604d6a029cdd588819985a5b195960921b611c59565b8a81039050633b9aca0089820204995085600c84015289602c8401526020600060446008860160008b5af1915081601f3d11600160005114161516156122fb573d873b15171591505b8161232857612328605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00611c59565b868552896020860152856040860152600080516020614af6833981519152606086a187156123ea5760c08d0151633b9aca0089830204808c019b508160088601528060288601526020600060446004880160008d5af1935083601f3d116001600051141615161561239c573d893b15171593505b836123c9576123c9605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00611c59565b88875260208701526040860152600080516020614af6833981519152606086a15b6001600160a01b038c166004840152899003602483015260206000604484828a5af1905080601f3d11600160005114161516156124295750843b153d17155b806124565761245660607c1c7472616e7366657220746f6b656e207265636569766572206661696c611c59565b5050612599565b8747101561247e5761247e604d6a029cdd588819985a5b195960921b611c59565b874703633b9aca008782020497506000806000808b885af1806124c3576124c3605d7c197472616e73666572206574682072656665726572206661696c000000611c59565b858452886020850152846040850152600080516020614af6833981519152606085a186156125555760c08c0151633b9aca0083890204998a0199600080808084865af18061253357612533605d7c197472616e73666572206574682072656665726572206661696c000000611c59565b5087865260208601526040850152600080516020614af6833981519152606085a15b6000806000808c86038f60601b60601c5af190508061259657612596605e7c1a7472616e7366657220657468207265636569766572206661696c0000611c59565b50505b5050505050505b9392505050565b60006127d7565b828152600060206000600484600401865afa6125e3576125e36054700419d95d081d1bdad95b8819985a5b195960621b611c59565b505060005192915050565b6770a082310dfe168160c01b815260008060206000600485600401875afa61263157612631605672049d1bdad95b8c0818d85b1b0819985a5b195960521b611c59565b600051915083836004015260206000602485855afa6126725761267260597c1562616c616e63654f662063616c6c206661696c656400000000000000611c59565b60005190509250929050565b6770a08231d21220a760c01b815260008060206000600485600401875afa61263157612631605672049d1bdad95b8c4818d85b1b0819985a5b195960521b611c59565b668b0367c240bc6b60c21b8152600060406000600484600401875afa6127095761270960587c1472657365727665732063616c6c206661696c65640000000000000000611c59565b60005160205186801561273557891561272d57612726878661267e565b8390039650505b90919061274c565b881561274c5761274587866125ee565b8490039650505b50668b0367c240bc6b60c21b8452898502633b9aca0092909202820191020490508480156127865781600484015260006024840152612794565b600060048401528160248401525b50886044830152608060648301526000608483015260008060a4846000885af161075f5761075f605470041cddd85c0818d85b1b0819985a5b195960621b611c59565b8460208502810185806127fe576127fe604e6b0b656d70747920706f6f6c7360901b611c59565b5060405182358b15600181146128a85734156128345761283460557111696e76616c6964206d73672e76616c756560581b611c59565b63052f523360e11b83528c60048401528760248401526001600160a01b03821660448401528b60648401526000806084856000731d948e5d85b7987ae664b2dc0f34dcf1adc576fc5af16128a3576128a36056720498db185a5b481d1bdad95b8819985a5b195960521b611c59565b612975565b60018c3410036128d2576128d260557111696e76616c6964206d73672e76616c756560581b611c59565b670a9059cbbd0e30db60c41b835260008060048086018f600080516020614b168339815191525af161291f5761291f6056720499195c1bdcda5d081155120819985a5b195960521b611c59565b6001600160a01b03821683600401528b8360240152602060006044856000600080516020614b168339815191525af161297557612975605874051d1c985b9cd9995c8815d155120819985a5b195960421b611c59565b508a9450602084015b838110156129d45780356129c86001600160a01b03821663ffffffff60a01b851660a01c600160fd1b8616600160fc1b8716600160ff1b88166001600160a01b0389168d8b6126c1565b9650915060200161297e565b5060009350600160fe1b81168015612b225760009450612a213063ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a6126c1565b9550672e1a7d4da9059cbb60c01b835273bb686278c6eb5b0a9cc4406f8db5a79bfaf53a996008840152856028840152602060006044856004016000600080516020614b168339815191525af1612a9557612a95605874051d1c985b9cd9995c8815d155120819985a5b195960421b611c59565b85600484015260206000602485600073bb686278c6eb5b0a9cc4406f8db5a79bfaf53a995af1612ae757612ae760577c13776974686472617720455448206661696c6564000000000000000000611c59565b600080600080898b5af1612b1d57612b1d60577c137472616e7366657220455448206661696c6564000000000000000000611c59565b612d60565b60009350600160ff1b82168015612bd457600160fc1b831615612bcf576770a082310dfe168160c01b8452602060006004866004016001600160a01b0387165afa612b8857612b88605672049d1bdad95b8c0818d85b1b0819985a5b195960521b611c59565b600051955087846004015260206000602486895afa612bc957612bc960567c15746f6b656e302062616c616e6365206661696c656400000000000000611c59565b60005194505b612c70565b600160fd1b831615612c70576770a08231d21220a760c01b8452602060006004866004016001600160a01b0387165afa612c2957612c29605672049d1bdad95b8c4818d85b1b0819985a5b195960521b611c59565b600051955087846004015260206000602486895afa612c6a57612c6a60597c15746f6b656e312062616c616e6365206661696c656400000000000000611c59565b60005194505b50612ca88763ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a6126c1565b95508460001060018114612d1157600160ff1b83168015612ce957612ce26770a082310dfe168160c01b6001600160a01b038616876125ae565b9650612d0b565b612d086770a08231d21220a760c01b6001600160a01b038616876125ae565b96505b50612d5e565b6770a082310dfe168160c01b845287846004015260206000602486895afa612d5657612d566058740519d95d0818985b185b98d953d98819985a5b195960421b611c59565b846000510396505b505b505088841015612d9257612d92605a7c164d696e2072657475726e206e6f742072656163686564000000000000611c59565b8a8152826020820152326040820152896060820152836080820152600080516020614b5683398151915260a082a1505050979650505050505050565b60006131e6565b6000856001600160ff1b031015612df757630b3f79fd60e41b60005260046000fd5b604051600160ff1b8616156001600160a01b0387168160018114612e8b57630251596160e31b845260048401868152600060208201528a604082015273fffd8963efd1fc6a506488495d951d5263988d25606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af180612e7f5760206000fd5b5060206000803e612eee565b630251596160e31b845260048401868152600160208201528a60408201526401000276a4606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af180612ee65760206000fd5b5060208060003e5b505050506000519050600160ff1b811015612f14576322323ba760e21b60005260046000fd5b1960010195945050505050565b600181341003612f3c57631841b4e160e01b60005260046000fd5b60008060008084600080516020614b168339815191525af180610e7c57610e7c60577c1357455448206465706f736974206661696c6564000000000000000000611c59565b60405160048101672e1a7d4da9059cbb60c01b825273bb686278c6eb5b0a9cc4406f8db5a79bfaf53a9960048201528360248201526000806044836000600080516020614b168339815191525af1905080612ffe57612ffe60587c147472616e736665722077657468206661696c65640000000000000000611c59565b836004830152600080602484600073bb686278c6eb5b0a9cc4406f8db5a79bfaf53a995af19050806130525761305260587c1477697468647261772077657468206661696c65640000000000000000611c59565b60008060008087875af190508061038b5761038b605571045cd95b9908195d1a195c8819985a5b1959605a1b611c59565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b8152600080600483865afa9050806130d2576130d26055710459d95d081d1bdad95b8c0819985a5b1959605a1b611c59565b5060206000803e505060005190565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b81526000806004808401865afa9050806130d2576130d26054710459d95d081d1bdad95b8c4819985a5b1959605a1b611c59565b600080516020614b368339815191528034613178578235600160ff1b8116156001811461316957613162826130e1565b9350613175565b61317282613083565b93505b50505b8335600160fd1b166131b5578335600160ff1b811615600181146131a65761319f82613083565b92506131b2565b6131af826130e1565b92505b50505b60405182600052816020523260405285608052600080516020614b5683398151915260a06000a16040525050505050565b82601f19602084028201018380613208576333f3e07b60e11b60005260046000fd5b50886000341180156132215761321d89612f21565b309a505b5087606052825b8281101561324b5761323e898235848e30612dd5565b309b509850602001613228565b506000600160fd1b83351611806001811461326b57801561328a5761329b565b6132798a8535858f30612dd5565b9550613285868c612f81565b61329b565b6132988a8535858f8f612dd5565b95505b505050858310156132ce576132ce605a7c164d696e2072657475726e206e6f742072656163686564000000000000611c59565b6132d9838284613132565b50509695505050505050565b60006132f083613379565b1561330657506001600160a01b03811631613373565b6040516370a0823160e01b81526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa15801561334c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061337091906149e7565b90505b92915050565b6001600160a01b0316600080516020614b368339815191521490565b60006133c5826000815181106133ad576133ad614997565b6020026020010151608001516001600160a01b031690565b905060008060008451905060005b81811015613500578015613411576133f68682815181106133ad576133ad614997565b945061340b6001600160a01b038616306132e5565b9650309a505b3061341d600184614984565b82148015613429575088155b156134355750886134cd565b613440600184614984565b82108015613476575086613455836001614a39565b8151811061346557613465614997565b602002602001015160200151516001145b156134c85786613487836001614a39565b8151811061349757613497614997565b6020026020010151602001516000815181106134b5576134b5614997565b60200260200101519050600194506134cd565b600094505b6134f48c8c838b8b87815181106134e6576134e6614997565b6020026020010151896138a9565b508392506001016133d3565b5050505050505050505050565b61351f826001600160a01b0316613379565b15613747576040516370a0823160e01b8152306004820152600090600080516020614b16833981519152906370a0823190602401602060405180830381865afa158015613570573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061359491906149e7565b9050801561368d5760405163a9059cbb60e01b815273bb686278c6eb5b0a9cc4406f8db5a79bfaf53a99600482015260248101829052600080516020614b168339815191529063a9059cbb906044016020604051808303816000875af1158015613602573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136269190614a4c565b50604051632e1a7d4d60e01b81526004810182905273bb686278c6eb5b0a9cc4406f8db5a79bfaf53a9990632e1a7d4d90602401600060405180830381600087803b15801561367457600080fd5b505af1158015613688573d6000803e3d6000fd5b505050505b6001600160a01b0382163014610e465747801561038b576000836001600160a01b03168260405160006040518083038185875af1925050503d80600081146136f1576040519150601f19603f3d011682016040523d82523d6000602084013e6136f6565b606091505b5050905080610b165760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610154565b6001600160a01b0381163014610e7c576040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa15801561379e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137c291906149e7565b90508015610e4657610e46838383612183565b6000600080516020614b3683398151915283146001811461384957604051602481016040526370a0823160e01b815283600482015260206000602483885afa90508061383e5761383e6058740519d95d0818985b185b98d953d98819985a5b195960421b611c59565b50600051915061384e565b823191505b5092915050565b60006040518481528360048201528260248201526020600060448360008a5af191505080156138a1573d801561389757600160005114601f3d1116915061389f565b6000863b1191505b505b949350505050565b6000805b835151811015613a56576000846040015182815181106138cf576138cf614997565b602002602001015160001b90506000806000806138f689608001516001600160a01b031690565b6001600160a01b0386169450600160ff1b8616935061ffff60a087901c16925090506139228288614a39565b89515190975061393490600190614984565b860361399b5761271087111561399b5760405162461bcd60e51b815260206004820152602660248201527f746f74616c5765696768742063616e206e6f7420657863656564203130303030604482015265081b1a5b5a5d60d21b6064820152608401610154565b876139f657600082612710146139c7576127106139b8848d614a00565b6139c29190614a17565b6139c9565b8a5b90506139f48e8b6020015189815181106139e5576139e5614997565b60200260200101518484613a60565b505b5050613a408188600001518681518110613a1257613a12614997565b60200260200101518b858b606001518981518110613a3257613a32614997565b60200260200101518f613b00565b5050508080613a4e90614a69565b9150506138ad565b5050505050505050565b306001600160a01b03851603613a8057613a7b828483612183565b61038b565b60405163052f523360e11b81526001600160a01b03808416600483015280861660248301528416604482015260648101829052731d948e5d85b7987ae664b2dc0f34dcf1adc576fc90630a5ea46690608401600060405180830381600087803b158015613aec57600080fd5b505af1158015613a56573d6000803e3d6000fd5b8515613c0557600080866001600160a01b0316636f7929f260e01b878787604051602401613b3093929190614a82565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613b7e6001600160a01b038616650f2882bf0b3360d21b614a39565b604051602001613b8f929190614ab7565b60408051601f1981840301815290829052613ba991614ad9565b6000604051808303816000865af19150503d8060008114613be6576040519150601f19603f3d011682016040523d82523d6000602084013e613beb565b606091505b509150915081613bfe57613bfe81613d05565b5050613cfd565b600080866001600160a01b03166330e6ae3160e01b878787604051602401613c2f93929190614a82565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613c7d6001600160a01b038616650f2882bf0b3360d21b614a39565b604051602001613c8e929190614ab7565b60408051601f1981840301815290829052613ca891614ad9565b6000604051808303816000865af19150503d8060008114613ce5576040519150601f19603f3d011682016040523d82523d6000602084013e613cea565b606091505b509150915081613a5657613a5681613d05565b505050505050565b805115613d1457805160208201fd5b60405162461bcd60e51b81526020600482015260136024820152721859185c1d1bdc8818d85b1b0819985a5b1959606a1b6044820152606401610154565b50565b60008060408385031215613d6857600080fd5b50508035926020909101359150565b6001600160a01b0381168114613d5257600080fd5b8035613d9781613d77565b919050565b600060a08284031215613dae57600080fd5b50919050565b60008083601f840112613dc657600080fd5b5081356001600160401b03811115613ddd57600080fd5b6020830191508360208260051b8501011115613df857600080fd5b9250929050565b60008060008060008060008060006101408a8c031215613e1e57600080fd5b8935985060208a0135613e3081613d77565b9750613e3f8b60408c01613d9c565b965060e08a01356001600160401b0380821115613e5b57600080fd5b613e678d838e01613db4565b90985096506101008c0135915080821115613e8157600080fd5b613e8d8d838e01613db4565b90965094506101208c0135915080821115613ea757600080fd5b50613eb48c828d01613db4565b915080935050809150509295985092959850929598565b60008060008060008060a08789031215613ee457600080fd5b8635955060208701359450604087013593506060870135613f0481613d77565b925060808701356001600160401b03811115613f1f57600080fd5b613f2b89828a01613db4565b979a9699509497509295939492505050565b600080600080600060808688031215613f5557600080fd5b85359450602086013593506040860135925060608601356001600160401b03811115613f8057600080fd5b613f8c88828901613db4565b969995985093965092949392505050565b60008060008060006101008688031215613fb657600080fd5b853594506020860135613fc881613d77565b9350613fd78760408801613d9c565b925060e08601356001600160401b03811115613f8057600080fd5b60005b8381101561400d578181015183820152602001613ff5565b50506000910152565b6000815180845261402e816020860160208601613ff2565b601f01601f19169290920160200192915050565b6020815260006125a06020830184614016565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b038111828210171561408d5761408d614055565b60405290565b60405161014081016001600160401b038111828210171561408d5761408d614055565b604051601f8201601f191681016001600160401b03811182821017156140de576140de614055565b604052919050565b600060a082840312156140f857600080fd5b61410061406b565b905081358152602082013561411481613d77565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b60006001600160401b0382111561415857614158614055565b5060051b60200190565b600082601f83011261417357600080fd5b813560206141886141838361413f565b6140b6565b82815260059290921b840181019181810190868411156141a757600080fd5b8286015b848110156141c257803583529183019183016141ab565b509695505050505050565b600082601f8301126141de57600080fd5b813560206141ee6141838361413f565b82815260059290921b8401810191818101908684111561420d57600080fd5b8286015b848110156141c257803561422481613d77565b8352918301918301614211565b600082601f83011261424257600080fd5b81356001600160401b0381111561425b5761425b614055565b61426e601f8201601f19166020016140b6565b81815284602083860101111561428357600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f8301126142b157600080fd5b813560206142c16141838361413f565b82815260059290921b840181019181810190868411156142e057600080fd5b8286015b848110156141c25780356001600160401b038111156143035760008081fd5b6143118986838b0101614231565b8452509183019183016142e4565b600061432d6141838461413f565b838152905060208101600584901b830185101561434957600080fd5b825b8460051b84018110156144b9576001600160401b03808235111561436e57600080fd5b8135850187601f82011261438157600080fd5b61438e614183823561413f565b81358082526020808301929160051b8401018a8111156143ad57600080fd5b602084015b818110156144a25785813511156143c857600080fd5b8035850160a0818e03601f190112156143e057600080fd5b6143e861406b565b87602083013511156143f957600080fd5b61440b8e6020808501358501016141cd565b8152876040830135111561441e57600080fd5b6144318e602060408501358501016141cd565b6020820152876060830135111561444757600080fd5b61445a8e60206060850135850101614162565b6040820152876080830135111561447057600080fd5b6144838e602060808501358501016142a0565b606082015260a0919091013560808201528452602093840193016143b2565b50508552505060209283019291909101905061434b565b50509392505050565b600082601f8301126144d357600080fd5b6125a08383356020850161431f565b8015158114613d5257600080fd5b8035613d97816144e2565b600082601f83011261450c57600080fd5b8135602061451c6141838361413f565b82815260059290921b8401810191818101908684111561453b57600080fd5b8286015b848110156141c25780356001600160401b038082111561455f5760008081fd5b90880190610140828b03601f190181131561457a5760008081fd5b614582614093565b8784013581526040614595818601613d8c565b8983015260606145a6818701613d8c565b82840152608091506145b9828701613d8c565b818401525060a0808601358284015260c0915081860135818401525060e0808601358284015261010091508186013581840152506101206145fb8187016144f0565b8383015292850135928484111561461457600091508182fd5b6146228e8b86890101614231565b9083015250865250505091830191830161453f565b600080600080600080610140878903121561465157600080fd5b61465b88886140e6565b955060a08701356001600160401b038082111561467757600080fd5b6146838a838b01614162565b965060c089013591508082111561469957600080fd5b6146a58a838b016144c2565b955060e08901359150808211156146bb57600080fd5b506146c889828a016144fb565b9350506101008701356146da81613d77565b91506101208701356146eb81613d77565b809150509295509295509295565b600080600060e0848603121561470e57600080fd5b83359250602084013561472081613d77565b915061472f8560408601613d9c565b90509250925092565b600080600080600080600080610120898b03121561475557600080fd5b883597506147668a60208b01613d9c565b965060c08901356001600160401b038082111561478257600080fd5b61478e8c838d01613db4565b909850965060e08b01359150808211156147a757600080fd5b6147b38c838d01613db4565b90965094506101008b01359150808211156147cd57600080fd5b506147da8b828c01613db4565b999c989b5096995094979396929594505050565b6000806000806000610120868803121561480757600080fd5b61481187876140e6565b945060a08601356001600160401b038082111561482d57600080fd5b61483989838a01614162565b955060c088013591508082111561484f57600080fd5b61485b89838a016144c2565b945060e088013591508082111561487157600080fd5b5061487e888289016144fb565b92505061010086013561489081613d77565b809150509295509295909350565b600080600080606085870312156148b457600080fd5b843593506020850135925060408501356001600160401b03808211156148d957600080fd5b818701915087601f8301126148ed57600080fd5b8135818111156148fc57600080fd5b88602082850101111561490e57600080fd5b95989497505060200194505050565b6020808252600e908201526d149bdd5d194e88195e1c1a5c995960921b604082015260600190565b600060a0828403121561495757600080fd5b6125a083836140e6565b60006125a036848461431f565b634e487b7160e01b600052601160045260246000fd5b818103818111156133735761337361496e565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156149bf57600080fd5b81516125a081613d77565b6000602082840312156149dc57600080fd5b81356125a081613d77565b6000602082840312156149f957600080fd5b5051919050565b80820281158282048414176133735761337361496e565b600082614a3457634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156133735761337361496e565b600060208284031215614a5e57600080fd5b81516125a0816144e2565b600060018201614a7b57614a7b61496e565b5060010190565b6001600160a01b03848116825283166020820152606060408201819052600090614aae90830184614016565b95945050505050565b60008351614ac9818460208801613ff2565b9190910191825250602001919050565b60008251614aeb818460208701613ff2565b919091019291505056fef171268de859ec269c52bbfac94dcb7715e784de194342abb284bf34fd30b32d000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1bb43f2da90e35f7b0cf38521ca95a49e68eb42fac49924930a5bd73cdf7576c7724394874fdd8ad13292ec739b441f85c6559f10dc4141b8d4c0fa4cbf55bdba26469706673582212203b58a6490c5ad315d156172b4f1adb445dda2de9c4a70d9a9910a129732b3e2d64736f6c63430008110033