0 txs
259 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[], address to, address refundTo) payable returns (uint256 returnAmount)
smartSwapByOrderId
payablefunction smartSwapByOrderId(uint256 orderId, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[]) payable returns (uint256 returnAmount)
smartSwapTo
payablefunction smartSwapTo(uint256 orderId, address receiver, tuple baseRequest, uint256[] batchesAmount, tuple[][] batches, tuple[]) 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
0x608060405234801561001057600080fd5b50614edd806100206000396000f3fe60806040526004361061010d5760003560e01c8063918f867411610095578063b881547711610064578063b8815477146102e5578063ca68d8f6146102f8578063e0af361614610310578063e99bfa951461032b578063fa461e331461033e57600080fd5b8063918f8674146102945780639871efa4146102ac57806398d2ac62146102bf578063b80c2f09146102d257600080fd5b806344014e98116100dc57806344014e98146101c357806354fd4d50146101d6578063591b3d08146102195780636aa476451461022c57806373679b6b1461026c57600080fd5b806301617fab1461016457806303b87e5f1461017757806308298b5a1461019d5780630d5f0e3b146101b057600080fd5b3661015f5732330361015d5760405162461bcd60e51b81526020600482015260146024820152731155120819195c1bdcda5d081c995a9958dd195960621b60448201526064015b60405180910390fd5b005b600080fd5b61015d610172366004614087565b61035e565b61018a610185366004614131565b61038a565b6040519081526020015b60405180910390f35b61018a6101ab3660046141fd565b61043b565b61018a6101be36600461426f565b610561565b61018a6101d13660046142cf565b6105ba565b3480156101e257600080fd5b5061020c6040518060400160405280600a81526020016976312e302e352d74656560b01b81525081565b6040516101949190614374565b61018a610227366004614969565b6106e3565b34801561023857600080fd5b50610254732949a7b2771cc70ecd400871236d345979e1c5e781565b6040516001600160a01b039091168152602001610194565b34801561027857600080fd5b5061025473f828bc75b2b63dac9dd84642acce1bb88e84253181565b3480156102a057600080fd5b5061018a633b9aca0081565b61018a6102ba36600461426f565b61093b565b61015d6102cd366004614a2b565b610955565b61018a6102e0366004614a6a565b610a5c565b61018a6102f33660046142cf565b610ab9565b34801561030457600080fd5b5061018a6301c9c38081565b34801561031c57600080fd5b506102546006602160991b0181565b61018a610339366004614b20565b610cb9565b34801561034a57600080fd5b5061015d610359366004614bd0565b610cc9565b600160ff1b81166fffffffffffffffffffffffffffffffff821661038484338484610f18565b50505050565b60008760800135428110156103b15760405162461bcd60e51b815260040161015490614c4f565b6040518b8152600080516020614e888339815191529060200160405180910390a161042c33808c6103e7368e90038e018e614c77565b8c8c8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061042792508d91508e9050614c93565b6112d3565b9b9a5050505050505050505050565b60405160a087901c8152600090600080516020614e888339815191529060200160405180910390a160008061047460003411868661139c565b91509150600061048a8a6001600160a01b031690565b9050826001600160a01b0316816001600160a01b03161480156104c457506001600160a01b038316600080516020614e4883398151915214155b806104f757506001600160a01b0381161580156104f757506001600160a01b038316600080516020614e48833981519152145b6105435760405162461bcd60e51b815260206004820152601760248201527f756e78737761703a20746f6b656e206d69736d617463680000000000000000006044820152606401610154565b61055383838b8b338c8c8c61169a565b9a9950505050505050505050565b60405160a086901c8152600090600080516020614e888339815191529060200160405180910390a160008061059a60003411868661176f565b915091506105ae338984848b8b8b8b611a63565b98975050505050505050565b60008360800135428110156105e15760405162461bcd60e51b815260040161015490614c4f565b604051878152600080516020614e888339815191529060200160405180910390a160008061061360003411878761176f565b90925090506001600160a01b03821661063388356001600160a01b031690565b6001600160a01b031614801561066957506001600160a01b03811661065e6040890160208a01614ca0565b6001600160a01b0316145b6106b55760405162461bcd60e51b815260206004820152601960248201527f756e697377617056333a20746f6b656e206d69736d61746368000000000000006044820152606401610154565b6106d633896001600160a01b031684848b604001358c606001358c8c611a63565b9998505050505050505050565b600086608001514281101561070a5760405162461bcd60e51b815260040161015490614c4f565b87516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed1981016107705760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21039b7bab931b2903a37b5b2b760611b6044820152606401610154565b6001600160a01b0384166107bf5760405162461bcd60e51b8152602060048201526016602482015275726566756e64546f206973206164647265737328302960501b6044820152606401610154565b6001600160a01b0385166108085760405162461bcd60e51b815260206004820152601060248201526f746f206973206164647265737328302960801b6044820152606401610154565b60008960400151116108535760405162461bcd60e51b8152602060048201526014602482015273066726f6d546f6b656e416d6f756e7420697320360641b6044820152606401610154565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561089a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108be9190614cbd565b905060005b8951811015610925578a60400151828b83815181106108e4576108e4614cd6565b60200260200101516108f69190614d02565b6109009190614d19565b8a828151811061091257610912614cd6565b60209081029190910101526001016108c3565b5060408a018190526105538a8a8a30898b611aad565b600061094b86868633878761043b565b9695505050505050565b600081356001600160a01b038116600080516020614e4883398151915214801561099d57506006602160991b016109926040850160208601614ca0565b6001600160a01b0316145b156109ab5760009150610a45565b6001600160a01b0381166006602160991b011480156109ef5750600080516020614e488339815191526109e46040850160208601614ca0565b6001600160a01b0316145b156109fd5760019150610a45565b60405162461bcd60e51b815260206004820152601c60248201527f53776170577261703a20696e76616c696420746f6b656e2070616972000000006044820152606401610154565b610a558585848660400135610f18565b5050505050565b6000876080013542811015610a835760405162461bcd60e51b815260040161015490614c4f565b6040518a8152600080516020614e888339815191529060200160405180910390a16105533380806103e7368e90038e018e614c77565b6000836080013542811015610ae05760405162461bcd60e51b815260040161015490614c4f565b604051878152600080516020614e888339815191529060200160405180910390a1600080610b1260003411878761139c565b90925090506001600160a01b038735811690831681148015610b4b57506001600160a01b038316600080516020614e4883398151915214155b80610b7e57506001600160a01b038116158015610b7e57506001600160a01b038316600080516020614e48833981519152145b610bca5760405162461bcd60e51b815260206004820152601b60248201527f756e78737761703a2066726f6d546f6b656e206d69736d6174636800000000006044820152606401610154565b6001600160a01b038216610be460408a0160208b01614ca0565b6001600160a01b0316148015610c1157506001600160a01b038216600080516020614e4883398151915214155b80610c5557506000610c2960408a0160208b01614ca0565b6001600160a01b0316148015610c5557506001600160a01b038216600080516020614e48833981519152145b610ca15760405162461bcd60e51b815260206004820152601960248201527f756e78737761703a20746f546f6b656e206d69736d61746368000000000000006044820152606401610154565b61055383838a604001358b60600135338e8d8d61169a565b600061094b8686868686876106e3565b610d6a565b3d6000803e3d6000fd5b67a9059cbb70a0823160c01b815230816008015260206000602483600401855afa610d0557610d05610cce565b6000518015610d305760a435600483015260248201819052610d306020600060448582885af1610d35565b505050565b80610d4257610d42610cce565b600160005114601f3d11163d151780610d6657633c9fd93960e21b60005260046000fd5b5050565b604051601581017306ff0b40e9091053eee51fa1d482ce5d852f523360611b825260206000600484335afa610da157610da1610cce565b6020806004808501335afa610db857610db8610cce565b60206040600460088501335afa610dd157610dd1610cce565b6000806000881360018114610ded576020519250879150610df6565b60005192508891505b507fff33128a8fc17869897dce68ed026d694621f6fdfd00000000000000000000008452606060002083527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460208401526001600160a01b0360558520169250338314610e6e57635960139160e11b60005260046000fd5b60843592507306ff0b40e9091053eee51fa1d482ce5d852f523360611b845230831460018114610ee057826014860152836034860152336054860152816074860152610edb602060006084601089016000732949a7b2771cc70ecd400871236d345979e1c5e75af1610d35565b610f0d565b336010860152816030860152610f03602060006044600c89016000885af1610d35565b610f0d8386610cd8565b505050505050505050565b60008111610f5d5760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74206d757374206265203e20360741b6044820152606401610154565b6000610f67611ddd565b9050600083610f8457600080516020614e48833981519152610f8d565b6006602160991b015b9050600084610fa3576006602160991b01610fb3565b600080516020614e488339815191525b9050610fc0838383611ede565b600080610fcf85338a89611f90565b91509150861561118a5760405163052f523360e11b81526006602160991b01600482015233602482015273f828bc75b2b63dac9dd84642acce1bb88e842531604482015260648101879052732949a7b2771cc70ecd400871236d345979e1c5e790630a5ea46690608401600060405180830381600087803b15801561105357600080fd5b505af1158015611067573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b81526004810189905273f828bc75b2b63dac9dd84642acce1bb88e8425319250632e1a7d4d9150602401600060405180830381600087803b1580156110b857600080fd5b505af11580156110cc573d6000803e3d6000fd5b505050506001600160a01b0382163014611185576000826001600160a01b03164760405160006040518083038185875af1925050503d806000811461112d576040519150601f19603f3d011682016040523d82523d6000602084013e611132565b606091505b50509050806111835760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610154565b505b611256565b84516111d8578534146111d85760405162461bcd60e51b81526020600482015260166024820152751d985b1d59481b9bdd08195c5d585b08185b5bdd5b9d60521b6044820152606401610154565b6006602160991b016001600160a01b031663d0e30db0876040518263ffffffff1660e01b81526004016000604051808303818588803b15801561121a57600080fd5b505af115801561122e573d6000803e3d6000fd5b505050506001600160a01b03831630149050611256576112566006602160991b0183886124e6565b611261858983612516565b50604051898152600080516020614e888339815191529060200160405180910390a1604080516001600160a01b03868116825285166020820152328183015260608101889052608081018890529051600080516020614e688339815191529181900360a00190a1505050505050505050565b60006001600160a01b0385166113195760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610154565b6000611323611ddd565b90506113478161133d87600001516001600160a01b031690565b8760200151611ede565b60008061135a838b8a8a60400151611f90565b9092509050896000611370898989858f89611aad565b9050600061137f868c86612516565b905061138b8183614d3b565b9d9c50505050505050505050505050565b600080826113ec5760405162461bcd60e51b815260206004820152601c60248201527f706f6f6c73206d7573742062652067726561746572207468616e2030000000006044820152606401610154565b60006001600160a01b038585600081811061140957611409614cd6565b9050602002013560001c1690506000600160ff1b8686600081811061143057611430614cd6565b9050602002013560001c16600014159050806114ad57816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611484573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a89190614d4e565b61150f565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150f9190614d4e565b93506001600160a01b0384166006602160991b0114801561152d5750865b1561154457600080516020614e4883398151915293505b60008686611553600182614d3b565b81811061156257611562614cd6565b60200291909101359150506001600160a01b038116600160ff1b82161515806115ec57816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e79190614d4e565b61164e565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561162a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164e9190614d4e565b9550600160fe1b831615156001600160a01b0387166006602160991b011480156116755750805b1561168c57600080516020614e4883398151915296505b505050505050935093915050565b60006001600160a01b0384166116e05760405162461bcd60e51b815260206004820152600b60248201526a6e6f74206164647228302960a81b6044820152606401610154565b60006116ea611ddd565b90506116f7818b8b611ede565b6000806117068389898d611f90565b909250905060006117426001600160a01b038e16600080516020614e4883398151915214611734578d611737565b60005b8c8c8a8a8e8961290a565b90506000611751858a85612516565b905061175d8183614d3b565b9e9d5050505050505050505050505050565b600080826117bf5760405162461bcd60e51b815260206004820152601c60248201527f706f6f6c73206d7573742062652067726561746572207468616e2030000000006044820152606401610154565b60006001600160a01b03858560008181106117dc576117dc614cd6565b905060200201351690506000600160ff1b8686600081811061180057611800614cd6565b905060200201351660001490508061187957816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611850573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118749190614d4e565b6118db565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118db9190614d4e565b93506001600160a01b0384166006602160991b011480156118f95750865b1561191057600080516020614e4883398151915293505b6000868661191f600182614d3b565b81811061192e5761192e614cd6565b60200291909101359150506001600160a01b038116600160ff1b821615806119b757816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561198e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b29190614d4e565b611a19565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a199190614d4e565b9550600160fd1b831615156001600160a01b0387166006602160991b011480156116755750801561168c57600080516020614e488339815191529650505050505050935093915050565b600080611a6e611ddd565b9050611a7b818989611ede565b600080611a8a838d8d8b611f90565b915091506000611a9e8d848b8b8b8b61311c565b90506000611751858e85612516565b60408601516000908790611b0e5760405162461bcd60e51b815260206004820152602260248201527f526f7574653a2066726f6d546f6b656e416d6f756e74206d757374206265203e604482015261020360f41b6064820152608401610154565b805160208201516001600160a01b0391821691611b2c911685613625565b9250611b37816136b9565b15611b9f576006602160991b016001600160a01b031663d0e30db083604001516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611b8257600080fd5b505af1158015611b96573d6000803e3d6000fd5b50505050503095505b6000805b8951811015611bdb57898181518110611bbe57611bbe614cd6565b602002602001015182611bd19190614d6b565b9150600101611ba3565b508260400151811115611c4e5760405162461bcd60e51b815260206004820152603560248201527f526f7574653a206e756d626572206f6620626174636865732073686f756c64206044820152741899480f0f48199c9bdb551bdad95b905b5bdd5b9d605a1b6064820152608401610154565b508651885114611c925760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610154565b60005b8751811015611cfb57611cf3878787611cba87602001516001600160a01b03166136b9565b8d8681518110611ccc57611ccc614cd6565b60200260200101518d8781518110611ce657611ce6614cd6565b60200260200101516136d5565b600101611c95565b50611d0a82602001518561384d565b60208201518390611d24906001600160a01b031686613625565b611d2e9190614d3b565b92508160600151831015611d7d5760405162461bcd60e51b8152602060048201526016602482015275135a5b881c995d1d5c9b881b9bdd081c995858da195960521b6044820152606401610154565b60208083015160408085015181516001600160a01b038087168252909316938301939093523290820152606081019190915260808101849052600080516020614e688339815191529060a00160405180910390a150509695505050505050565b6040805161010081018252600060a080830182905260c0830191909152651111057e155560d11b36601f198101356001600160d01b03198116928314651e51057e155560d11b8414811786526522220afc2bbb60d01b8414653ca20afc2bbb60d01b8514811760208801529482901c65ffffffffffff16968601969096526001600160a01b039081166060860152603f1990910135600160ff1b8116151560e0860152908116608085015292939091176001808214908114611eac5760008560a0015260008560c00152611ed7565b6060360335935065ffffffffffff60a01b841660a01c8560a001526001600160a01b0384168560c001525b5050505090565b82518015611f015750816001600160a01b031683608001516001600160a01b0316145b80611f2d575082602001518015611f2d5750806001600160a01b031683608001516001600160a01b0316145b80611f4457508251158015611f4457508260200151155b610d305760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420636f6d6d697373696f6e20696e666f0000000000000000006044820152606401610154565b600080856020015115611fb55730611fac876080015130613b07565b915091506124dd565b8551611fc6575082905060006124dd565b6122c2565b80820281158282048414178402611fea5763ad251c276000526004601cfd5b9290920492915050565b60008282101561200c576346e72d036000526004601cfd5b500390565b62461bcd60e51b600052600160e51b6020528060405250806000fd5b60008060008085855af180610d3057610d3060607c1c20636f6d6d697373696f6e2077697468206574686572206572726f72612011565b6040516084810160405263052f523360e11b81528160048201528260248201528360448201528460648201526000806084836000732949a7b2771cc70ecd400871236d345979e1c5e75af1905080610a5557610a5560577c13636c61696d20746f6b656e73206661696c6564000000000000000000612011565b600080604051604881016040526ba9059cbba9059cbb70a0823160a01b815230600c82015260206000602460088401875afa80612138576121386058740519d95d0818985b185b98d953d98819985a5b195960421b612011565b600051898801612163670de0b6b3a76400008361215e84670de0b6b3a76400008e611fcb565b611fcb565b955050808511156121965761219660597c15696e76616c696420616d6f756e74315363616c656400000000000000612011565b8660088401528460288401526020600060446004860160008a5af1915081601f3d11600160005114161516156121cf573d863b15171591505b816121fc576121fc605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00612011565b88156122715761220c8582611ff4565b93508860048401528360248401526020600060448560008a5af1915081601f3d1160016000511416151615612244573d863b15171591505b8161227157612271605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00612011565b5050509550959350505050565b604051606081016040528181528260208201528360408201527f0d3b1268ca3dbb6d3d8a0ea35f44f8f9d58cf578d732680b71b6904fb2733e0d606082a150505050565b608086015160e087015160a08801516040890151601090920281151501600080516020614e488339815191528414610100020191600091829182918291906301c9c380828201111561233657612336605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400612011565b60608e015160c08f01519096509450818101633b9aca0003918b0282900493508a020490508461010081146123c05761010181146123e35761011081146123c05761011181146123e35780156124295760018114612440576010811461246e576011811461249a576123bb60526e0e696e76616c69642073746174757360701b612011565b6124ce565b6123ca838661202d565b6123bb8584600080516020614e4883398151915261227e565b6123ed838661202d565b6124068584600080516020614e4883398151915261227e565b612410828561202d565b6123bb8483600080516020614e4883398151915261227e565b61243583868e8a612064565b6123bb85848961227e565b61244c83868e8a612064565b61245785848961227e565b61246382858e8a612064565b6123bb84838961227e565b61247a83308e8a612064565b61248860008085888b6120de565b5061249486828a61227e565b506124ce565b6124a8828401308e8a612064565b6124b5828585888b6120de565b6124c087838b61227e565b6124cb86828b61227e565b50505b50505050505050836000915091505b94509492505050565b6124f98363a9059cbb60e01b8484613b87565b610d305760405163fb7f507960e01b815260040160405180910390fd5b6000836020015161252957506000612903565b604084015160a08501516301c9c380818301111561256957612569605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400612011565b6080860151606087015160405160608101604052600080516020614e488339815191528314600181146127c057604051604c81016040526fa9059cbba9059cbba9059cbb70a0823160801b8152306010820152602060006024600c8401885afa806125f1576125f16058740519d95d0818985b185b98d953d98819985a5b195960421b612011565b6000518a81101561261557612615604d6a029cdd588819985a5b195960921b612011565b8a81039050633b9aca0089820204995085600c84015289602c8401526020600060446008860160008b5af1915081601f3d116001600051141615161561265e573d873b15171591505b8161268b5761268b605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00612011565b868552896020860152856040860152600080516020614e28833981519152606086a1871561274d5760c08d0151633b9aca0089830204808c019b508160088601528060288601526020600060446004880160008d5af1935083601f3d11600160005114161516156126ff573d893b15171593505b8361272c5761272c605f7c1b7472616e7366657220746f6b656e2072656665726572206661696c00612011565b88875260208701526040860152600080516020614e28833981519152606086a15b6001600160a01b038c166004840152899003602483015260206000604484828a5af1905080601f3d116001600051141615161561278c5750843b153d17155b806127b9576127b960607c1c7472616e7366657220746f6b656e207265636569766572206661696c612011565b50506128fc565b874710156127e1576127e1604d6a029cdd588819985a5b195960921b612011565b874703633b9aca008782020497506000806000808b885af18061282657612826605d7c197472616e73666572206574682072656665726572206661696c000000612011565b858452886020850152846040850152600080516020614e28833981519152606085a186156128b85760c08c0151633b9aca0083890204998a0199600080808084865af18061289657612896605d7c197472616e73666572206574682072656665726572206661696c000000612011565b5087865260208601526040850152600080516020614e28833981519152606085a15b6000806000808c86038f60601b60601c5af19050806128f9576128f9605e7c1a7472616e7366657220657468207265636569766572206661696c0000612011565b50505b5050505050505b9392505050565b6000612b3a565b828152600060206000600484600401865afa612946576129466054700419d95d081d1bdad95b8819985a5b195960621b612011565b505060005192915050565b6770a082310dfe168160c01b815260008060206000600485600401875afa61299457612994605672049d1bdad95b8c0818d85b1b0819985a5b195960521b612011565b600051915083836004015260206000602485855afa6129d5576129d560597c1562616c616e63654f662063616c6c206661696c656400000000000000612011565b60005190509250929050565b6770a08231d21220a760c01b815260008060206000600485600401875afa61299457612994605672049d1bdad95b8c4818d85b1b0819985a5b195960521b612011565b668b0367c240bc6b60c21b8152600060406000600484600401875afa612a6c57612a6c60587c1472657365727665732063616c6c206661696c65640000000000000000612011565b600051602051868015612a98578915612a9057612a8987866129e1565b8390039650505b909190612aaf565b8815612aaf57612aa88786612951565b8490039650505b50668b0367c240bc6b60c21b8452898502633b9aca009290920282019102049050848015612ae95781600484015260006024840152612af7565b600060048401528160248401525b50886044830152608060648301526000608483015260008060a4846000885af16105ae576105ae605470041cddd85c0818d85b1b0819985a5b195960621b612011565b846020850281018580612b6157612b61604e6b0b656d70747920706f6f6c7360901b612011565b5060405182358b1560018114612c0b573415612b9757612b9760557111696e76616c6964206d73672e76616c756560581b612011565b63052f523360e11b83528c60048401528760248401526001600160a01b03821660448401528b60648401526000806084856000732949a7b2771cc70ecd400871236d345979e1c5e75af1612c0657612c066056720498db185a5b481d1bdad95b8819985a5b195960521b612011565b612cca565b60018c341003612c3557612c3560557111696e76616c6964206d73672e76616c756560581b612011565b670a9059cbbd0e30db60c41b835260008060048086018f6006602160991b015af1612c7b57612c7b6056720499195c1bdcda5d081155120819985a5b195960521b612011565b6001600160a01b03821683600401528b83602401526020600060448560006006602160991b015af1612cca57612cca605874051d1c985b9cd9995c8815d155120819985a5b195960421b612011565b508a9450602084015b83811015612d29578035612d1d6001600160a01b03821663ffffffff60a01b851660a01c600160fd1b8616600160fc1b8716600160ff1b88166001600160a01b0389168d8b612a24565b96509150602001612cd3565b5060009350600160fe1b81168015612e705760009450612d763063ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a612a24565b9550672e1a7d4da9059cbb60c01b835273f828bc75b2b63dac9dd84642acce1bb88e84253160088401528560288401526020600060448560040160006006602160991b015af1612de357612de3605874051d1c985b9cd9995c8815d155120819985a5b195960421b612011565b85600484015260206000602485600073f828bc75b2b63dac9dd84642acce1bb88e8425315af1612e3557612e3560577c13776974686472617720455448206661696c6564000000000000000000612011565b600080600080898b5af1612e6b57612e6b60577c137472616e7366657220455448206661696c6564000000000000000000612011565b6130ae565b60009350600160ff1b82168015612f2257600160fc1b831615612f1d576770a082310dfe168160c01b8452602060006004866004016001600160a01b0387165afa612ed657612ed6605672049d1bdad95b8c0818d85b1b0819985a5b195960521b612011565b600051955087846004015260206000602486895afa612f1757612f1760567c15746f6b656e302062616c616e6365206661696c656400000000000000612011565b60005194505b612fbe565b600160fd1b831615612fbe576770a08231d21220a760c01b8452602060006004866004016001600160a01b0387165afa612f7757612f77605672049d1bdad95b8c4818d85b1b0819985a5b195960521b612011565b600051955087846004015260206000602486895afa612fb857612fb860597c15746f6b656e312062616c616e6365206661696c656400000000000000612011565b60005194505b50612ff68763ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a612a24565b9550846000106001811461305f57600160ff1b83168015613037576130306770a082310dfe168160c01b6001600160a01b03861687612911565b9650613059565b6130566770a08231d21220a760c01b6001600160a01b03861687612911565b96505b506130ac565b6770a082310dfe168160c01b845287846004015260206000602486895afa6130a4576130a46058740519d95d0818985b185b98d953d98819985a5b195960421b612011565b846000510396505b505b5050888410156130e0576130e0605a7c164d696e2072657475726e206e6f742072656163686564000000000000612011565b8a8152826020820152326040820152896060820152836080820152600080516020614e6883398151915260a082a1505050979650505050505050565b6000613526565b6000856001600160ff1b03101561314557630b3f79fd60e41b60005260046000fd5b604051600160ff1b8616156001600160a01b03871681600181146131d957630251596160e31b845260048401868152600060208201528a604082015273fffd8963efd1fc6a506488495d951d5263988d25606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af1806131cd5760206000fd5b5060206000803e61323c565b630251596160e31b845260048401868152600160208201528a60408201526401000276a4606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af1806132345760206000fd5b5060208060003e5b505050506000519050600160ff1b811015613262576322323ba760e21b60005260046000fd5b1960010195945050505050565b60018134100361328a57631841b4e160e01b60005260046000fd5b600080600080846006602160991b015af180610d6657610d6660577c1357455448206465706f736974206661696c6564000000000000000000612011565b60405160048101672e1a7d4da9059cbb60c01b825273f828bc75b2b63dac9dd84642acce1bb88e842531600482015283602482015260008060448360006006602160991b015af190508061333e5761333e60587c147472616e736665722077657468206661696c65640000000000000000612011565b836004830152600080602484600073f828bc75b2b63dac9dd84642acce1bb88e8425315af19050806133925761339260587c1477697468647261772077657468206661696c65640000000000000000612011565b60008060008087875af190508061038457610384605571045cd95b9908195d1a195c8819985a5b1959605a1b612011565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b8152600080600483865afa905080613412576134126055710459d95d081d1bdad95b8c0819985a5b1959605a1b612011565b5060206000803e505060005190565b60006040517306ff0b40e9091053eee51fa1d482ce5d852f523360611b81526000806004808401865afa905080613412576134126054710459d95d081d1bdad95b8c4819985a5b1959605a1b612011565b600080516020614e4883398151915280346134b8578235600160ff1b811615600181146134a9576134a282613421565b93506134b5565b6134b2826133c3565b93505b50505b8335600160fd1b166134f5578335600160ff1b811615600181146134e6576134df826133c3565b92506134f2565b6134ef82613421565b92505b50505b60405182600052816020523260405285608052600080516020614e6883398151915260a06000a16040525050505050565b82601f19602084028201018380613548576333f3e07b60e11b60005260046000fd5b50886000341180156135615761355d8961326f565b309a505b5087606052825b8281101561358b5761357e898235848e30613123565b309b509850602001613568565b506000600160fd1b8335161180600181146135ab5780156135ca576135db565b6135b98a8535858f30613123565b95506135c5868c6132c8565b6135db565b6135d88a8535858f8f613123565b95505b5050508583101561360e5761360e605a7c164d696e2072657475726e206e6f742072656163686564000000000000612011565b613619838284613472565b50509695505050505050565b6000613630836136b9565b1561364657506001600160a01b038116316136b3565b6040516370a0823160e01b81526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa15801561368c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136b09190614cbd565b90505b92915050565b6001600160a01b0316600080516020614e488339815191521490565b6000613705826000815181106136ed576136ed614cd6565b6020026020010151608001516001600160a01b031690565b905060008060008451905060005b81811015613840578015613751576137368682815181106136ed576136ed614cd6565b945061374b6001600160a01b03861630613625565b9650309a505b3061375d600184614d3b565b82148015613769575088155b1561377557508861380d565b613780600184614d3b565b821080156137b6575086613795836001614d6b565b815181106137a5576137a5614cd6565b602002602001015160200151516001145b1561380857866137c7836001614d6b565b815181106137d7576137d7614cd6565b6020026020010151602001516000815181106137f5576137f5614cd6565b602002602001015190506001945061380d565b600094505b6138348c8c838b8b878151811061382657613826614cd6565b602002602001015189613bdb565b50839250600101613713565b5050505050505050505050565b61385f826001600160a01b03166136b9565b15613a79576040516370a0823160e01b81523060048201526000906006602160991b01906370a0823190602401602060405180830381865afa1580156138a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138cd9190614cbd565b905080156139bf5760405163a9059cbb60e01b815273f828bc75b2b63dac9dd84642acce1bb88e8425316004820152602481018290526006602160991b019063a9059cbb906044016020604051808303816000875af1158015613934573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139589190614d7e565b50604051632e1a7d4d60e01b81526004810182905273f828bc75b2b63dac9dd84642acce1bb88e84253190632e1a7d4d90602401600060405180830381600087803b1580156139a657600080fd5b505af11580156139ba573d6000803e3d6000fd5b505050505b6001600160a01b0382163014610d3057478015610384576000836001600160a01b03168260405160006040518083038185875af1925050503d8060008114613a23576040519150601f19603f3d011682016040523d82523d6000602084013e613a28565b606091505b5050905080610a555760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610154565b6001600160a01b0381163014610d66576040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015613ad0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613af49190614cbd565b90508015610d3057610d308383836124e6565b6000600080516020614e48833981519152831460018114613b7b57604051602481016040526370a0823160e01b815283600482015260206000602483885afa905080613b7057613b706058740519d95d0818985b185b98d953d98819985a5b195960421b612011565b506000519150613b80565b823191505b5092915050565b60006040518481528360048201528260248201526020600060448360008a5af19150508015613bd3573d8015613bc957600160005114601f3d11169150613bd1565b6000863b1191505b505b949350505050565b6000805b835151811015613d8857600084604001518281518110613c0157613c01614cd6565b602002602001015160001b9050600080600080613c2889608001516001600160a01b031690565b6001600160a01b0386169450600160ff1b8616935061ffff60a087901c1692509050613c548288614d6b565b895151909750613c6690600190614d3b565b8603613ccd57612710871115613ccd5760405162461bcd60e51b815260206004820152602660248201527f746f74616c5765696768742063616e206e6f7420657863656564203130303030604482015265081b1a5b5a5d60d21b6064820152608401610154565b87613d285760008261271014613cf957612710613cea848d614d02565b613cf49190614d19565b613cfb565b8a5b9050613d268e8b602001518981518110613d1757613d17614cd6565b60200260200101518484613d92565b505b5050613d728188600001518681518110613d4457613d44614cd6565b60200260200101518b858b606001518981518110613d6457613d64614cd6565b60200260200101518f613e32565b5050508080613d8090614d9b565b915050613bdf565b5050505050505050565b306001600160a01b03851603613db257613dad8284836124e6565b610384565b60405163052f523360e11b81526001600160a01b03808416600483015280861660248301528416604482015260648101829052732949a7b2771cc70ecd400871236d345979e1c5e790630a5ea46690608401600060405180830381600087803b158015613e1e57600080fd5b505af1158015613d88573d6000803e3d6000fd5b8515613f3757600080866001600160a01b0316636f7929f260e01b878787604051602401613e6293929190614db4565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613eb06001600160a01b038616650f2882bf0b3360d21b614d6b565b604051602001613ec1929190614de9565b60408051601f1981840301815290829052613edb91614e0b565b6000604051808303816000865af19150503d8060008114613f18576040519150601f19603f3d011682016040523d82523d6000602084013e613f1d565b606091505b509150915081613f3057613f3081614037565b505061402f565b600080866001600160a01b03166330e6ae3160e01b878787604051602401613f6193929190614db4565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613faf6001600160a01b038616650f2882bf0b3360d21b614d6b565b604051602001613fc0929190614de9565b60408051601f1981840301815290829052613fda91614e0b565b6000604051808303816000865af19150503d8060008114614017576040519150601f19603f3d011682016040523d82523d6000602084013e61401c565b606091505b509150915081613d8857613d8881614037565b505050505050565b80511561404657805160208201fd5b60405162461bcd60e51b81526020600482015260136024820152721859185c1d1bdc8818d85b1b0819985a5b1959606a1b6044820152606401610154565b50565b6000806040838503121561409a57600080fd5b50508035926020909101359150565b6001600160a01b038116811461408457600080fd5b80356140c9816140a9565b919050565b600060a082840312156140e057600080fd5b50919050565b60008083601f8401126140f857600080fd5b5081356001600160401b0381111561410f57600080fd5b6020830191508360208260051b850101111561412a57600080fd5b9250929050565b60008060008060008060008060006101408a8c03121561415057600080fd5b8935985060208a0135614162816140a9565b97506141718b60408c016140ce565b965060e08a01356001600160401b038082111561418d57600080fd5b6141998d838e016140e6565b90985096506101008c01359150808211156141b357600080fd5b6141bf8d838e016140e6565b90965094506101208c01359150808211156141d957600080fd5b506141e68c828d016140e6565b915080935050809150509295985092959850929598565b60008060008060008060a0878903121561421657600080fd5b8635955060208701359450604087013593506060870135614236816140a9565b925060808701356001600160401b0381111561425157600080fd5b61425d89828a016140e6565b979a9699509497509295939492505050565b60008060008060006080868803121561428757600080fd5b85359450602086013593506040860135925060608601356001600160401b038111156142b257600080fd5b6142be888289016140e6565b969995985093965092949392505050565b600080600080600061010086880312156142e857600080fd5b8535945060208601356142fa816140a9565b935061430987604088016140ce565b925060e08601356001600160401b038111156142b257600080fd5b60005b8381101561433f578181015183820152602001614327565b50506000910152565b60008151808452614360816020860160208601614324565b601f01601f19169290920160200192915050565b6020815260006129036020830184614348565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b03811182821017156143bf576143bf614387565b60405290565b60405161014081016001600160401b03811182821017156143bf576143bf614387565b604051601f8201601f191681016001600160401b038111828210171561441057614410614387565b604052919050565b600060a0828403121561442a57600080fd5b61443261439d565b9050813581526020820135614446816140a9565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b60006001600160401b0382111561448a5761448a614387565b5060051b60200190565b600082601f8301126144a557600080fd5b813560206144ba6144b583614471565b6143e8565b82815260059290921b840181019181810190868411156144d957600080fd5b8286015b848110156144f457803583529183019183016144dd565b509695505050505050565b600082601f83011261451057600080fd5b813560206145206144b583614471565b82815260059290921b8401810191818101908684111561453f57600080fd5b8286015b848110156144f4578035614556816140a9565b8352918301918301614543565b600082601f83011261457457600080fd5b81356001600160401b0381111561458d5761458d614387565b6145a0601f8201601f19166020016143e8565b8181528460208386010111156145b557600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f8301126145e357600080fd5b813560206145f36144b583614471565b82815260059290921b8401810191818101908684111561461257600080fd5b8286015b848110156144f45780356001600160401b038111156146355760008081fd5b6146438986838b0101614563565b845250918301918301614616565b600061465f6144b584614471565b838152905060208101600584901b830185101561467b57600080fd5b825b8460051b84018110156147eb576001600160401b0380823511156146a057600080fd5b8135850187601f8201126146b357600080fd5b6146c06144b58235614471565b81358082526020808301929160051b8401018a8111156146df57600080fd5b602084015b818110156147d45785813511156146fa57600080fd5b8035850160a0818e03601f1901121561471257600080fd5b61471a61439d565b876020830135111561472b57600080fd5b61473d8e6020808501358501016144ff565b8152876040830135111561475057600080fd5b6147638e602060408501358501016144ff565b6020820152876060830135111561477957600080fd5b61478c8e60206060850135850101614494565b604082015287608083013511156147a257600080fd5b6147b58e602060808501358501016145d2565b606082015260a0919091013560808201528452602093840193016146e4565b50508552505060209283019291909101905061467d565b50509392505050565b600082601f83011261480557600080fd5b61290383833560208501614651565b801515811461408457600080fd5b80356140c981614814565b600082601f83011261483e57600080fd5b8135602061484e6144b583614471565b82815260059290921b8401810191818101908684111561486d57600080fd5b8286015b848110156144f45780356001600160401b03808211156148915760008081fd5b90880190610140828b03601f19018113156148ac5760008081fd5b6148b46143c5565b87840135815260406148c78186016140be565b8983015260606148d88187016140be565b82840152608091506148eb8287016140be565b818401525060a0808601358284015260c0915081860135818401525060e08086013582840152610100915081860135818401525061012061492d818701614822565b8383015292850135928484111561494657600091508182fd5b6149548e8b86890101614563565b90830152508652505050918301918301614871565b600080600080600080610140878903121561498357600080fd5b61498d8888614418565b955060a08701356001600160401b03808211156149a957600080fd5b6149b58a838b01614494565b965060c08901359150808211156149cb57600080fd5b6149d78a838b016147f4565b955060e08901359150808211156149ed57600080fd5b506149fa89828a0161482d565b935050610100870135614a0c816140a9565b9150610120870135614a1d816140a9565b809150509295509295509295565b600080600060e08486031215614a4057600080fd5b833592506020840135614a52816140a9565b9150614a6185604086016140ce565b90509250925092565b600080600080600080600080610120898b031215614a8757600080fd5b88359750614a988a60208b016140ce565b965060c08901356001600160401b0380821115614ab457600080fd5b614ac08c838d016140e6565b909850965060e08b0135915080821115614ad957600080fd5b614ae58c838d016140e6565b90965094506101008b0135915080821115614aff57600080fd5b50614b0c8b828c016140e6565b999c989b5096995094979396929594505050565b60008060008060006101208688031215614b3957600080fd5b614b438787614418565b945060a08601356001600160401b0380821115614b5f57600080fd5b614b6b89838a01614494565b955060c0880135915080821115614b8157600080fd5b614b8d89838a016147f4565b945060e0880135915080821115614ba357600080fd5b50614bb08882890161482d565b925050610100860135614bc2816140a9565b809150509295509295909350565b60008060008060608587031215614be657600080fd5b843593506020850135925060408501356001600160401b0380821115614c0b57600080fd5b818701915087601f830112614c1f57600080fd5b813581811115614c2e57600080fd5b886020828501011115614c4057600080fd5b95989497505060200194505050565b6020808252600e908201526d149bdd5d194e88195e1c1a5c995960921b604082015260600190565b600060a08284031215614c8957600080fd5b6129038383614418565b6000612903368484614651565b600060208284031215614cb257600080fd5b8135612903816140a9565b600060208284031215614ccf57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176136b3576136b3614cec565b600082614d3657634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156136b3576136b3614cec565b600060208284031215614d6057600080fd5b8151612903816140a9565b808201808211156136b3576136b3614cec565b600060208284031215614d9057600080fd5b815161290381614814565b600060018201614dad57614dad614cec565b5060010190565b6001600160a01b03848116825283166020820152606060408201819052600090614de090830184614348565b95945050505050565b60008351614dfb818460208801614324565b9190910191825250602001919050565b60008251614e1d818460208701614324565b919091019291505056fef171268de859ec269c52bbfac94dcb7715e784de194342abb284bf34fd30b32d000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1bb43f2da90e35f7b0cf38521ca95a49e68eb42fac49924930a5bd73cdf7576c7724394874fdd8ad13292ec739b441f85c6559f10dc4141b8d4c0fa4cbf55bdba26469706673582212201ca3538a6a8bf41d2b3b9768842afb96812b5ce2c069fe9884759059c983355364736f6c63430008110033