0 txs
80 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)
dagSwapByOrderId
payablefunction dagSwapByOrderId(uint256 orderId, tuple baseRequest, tuple[] paths) payable returns (uint256 returnAmount)
dagSwapTo
payablefunction dagSwapTo(uint256 orderId, address receiver, tuple baseRequest, tuple[] paths) payable returns (uint256 returnAmount)
executeWithBaseRequest
payablefunction executeWithBaseRequest(uint256 orderId, address receiver, tuple baseRequest, address executor, tuple executorInfo) payable returns (uint256)
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
0x608060405234801561001057600080fd5b50615f0d80620000216000396000f3fe6080604052600436106100fe5760003560e01c806301617fab1461015557806303b87e5f1461016857806308298b5a1461018e5780630c307f76146101a15780630d5f0e3b146101b457806344014e98146101c757806354fd4d50146101da578063591b3d081461021d5780636aa476451461023057806373679b6b14610265578063918f8674146102875780639871efa41461029f57806398d2ac62146102b2578063b441e6d2146102c5578063b80c2f09146102d8578063b8815477146102eb578063ca68d8f6146102fe578063e0af361614610316578063e99bfa9514610331578063f2c4269614610344578063fa461e331461035757600080fd5b366101505732330361014e5760405162461bcd60e51b81526020600482015260146024820152731155120819195c1bdcda5d081c995a9958dd195960621b60448201526064015b60405180910390fd5b005b600080fd5b61014e610163366004614c4b565b610377565b61017b610176366004614cf5565b61039a565b6040519081526020015b60405180910390f35b61017b61019c366004614dc1565b61044b565b61017b6101af366004614e33565b610564565b61017b6101c2366004614ea5565b6106f0565b61017b6101d5366004614e33565b610749565b3480156101e657600080fd5b506102106040518060400160405280600a81526020016976312e302e362d64616760b01b81525081565b6040516101859190614f38565b61017b61022b36600461554f565b610867565b34801561023c57600080fd5b50610258732949a7b2771cc70ecd400871236d345979e1c5e781565b6040516101859190615611565b34801561027157600080fd5b50610258600080516020615e7883398151915281565b34801561029357600080fd5b5061017b633b9aca0081565b61017b6102ad366004614ea5565b610b79565b61014e6102c0366004615625565b610b93565b61017b6102d3366004615664565b610cbf565b61017b6102e636600461573e565b610fe8565b61017b6102f9366004614e33565b611045565b34801561030a57600080fd5b5061017b6301c9c38081565b34801561032257600080fd5b506102586006602160991b0181565b61017b61033f3660046157f4565b611251565b61017b6103523660046158a4565b611261565b34801561036357600080fd5b5061014e6103723660046158fe565b61127b565b600160ff1b81166001600160801b038216610394843384846114c5565b50505050565b60008760800135428110156103c15760405162461bcd60e51b81526004016101459061597d565b6040518b8152600080516020615eb88339815191529060200160405180910390a161043c33808c6103f7368e90038e018e6159a5565b8c8c8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061043792508d91508e90506159c1565b611835565b9b9a5050505050505050505050565b60405160a087901c8152600090600080516020615eb88339815191529060200160405180910390a1600080610484600034118686611964565b9150915060006104938a611c32565b9050826001600160a01b0316816001600160a01b03161480156104cd57506001600160a01b038316600080516020615e3883398151915214155b8061050057506001600160a01b03811615801561050057506001600160a01b038316600080516020615e38833981519152145b6105465760405162461bcd60e51b81526020600482015260176024820152760eadcf0e6eec2e07440e8ded6cadc40dad2e6dac2e8c6d604b1b6044820152606401610145565b61055683838b8b338c8c8c611c3e565b9a9950505050505050505050565b600083608001354281101561058b5760405162461bcd60e51b81526004016101459061597d565b604051878152600080516020615eb88339815191529060200160405180910390a16001600160a01b0386166105d25760405162461bcd60e51b8152600401610145906159ce565b60006105de8635611c32565b905060006105ea611d55565b9050610606818361060160408b0160208c016159f3565b611e56565b60008061061983338c8c60400135611f02565b90925090506106418a61063260408c0160208d016159f3565b6001600160a01b03169061242d565b95506106518989893333876124c4565b61065c838b836126c4565b50856106728b61063260408d0160208e016159f3565b61067c9190615a26565b955088606001358610156106a25760405162461bcd60e51b815260040161014590615a39565b600080516020615e98833981519152846106c260408c0160208d016159f3565b328c604001358a6040516106da959493929190615a69565b60405180910390a1505050505095945050505050565b60405160a086901c8152600090600080516020615eb88339815191529060200160405180910390a1600080610729600034118686612a90565b9150915061073d338984848b8b8b8b612d54565b98975050505050505050565b60008360800135428110156107705760405162461bcd60e51b81526004016101459061597d565b604051878152600080516020615eb88339815191529060200160405180910390a16000806107a2600034118787612a90565b90925090506001600160a01b0382166107bb8835611c32565b6001600160a01b03161480156107f157506001600160a01b0381166107e66040890160208a016159f3565b6001600160a01b0316145b6108395760405162461bcd60e51b81526020600482015260196024820152780eadcd2e6eec2e0ac667440e8ded6cadc40dad2e6dac2e8c6d603b1b6044820152606401610145565b61085a33896001600160a01b031684848b604001358c606001358c8c612d54565b9998505050505050505050565b600086608001514281101561088e5760405162461bcd60e51b81526004016101459061597d565b600061089d8960000151611c32565b905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038216016109035760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21039b7bab931b2903a37b5b2b760611b6044820152606401610145565b6001600160a01b0384166109525760405162461bcd60e51b8152602060048201526016602482015275726566756e64546f206973206164647265737328302960501b6044820152606401610145565b6001600160a01b03851661099b5760405162461bcd60e51b815260206004820152601060248201526f746f206973206164647265737328302960801b6044820152606401610145565b60008960400151116109e65760405162461bcd60e51b8152602060048201526014602482015273066726f6d546f6b656e416d6f756e7420697320360641b6044820152606401610145565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190610a15903090600401615611565b602060405180830381865afa158015610a32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a569190615a9d565b905060005b8951811015610abd578a60400151828b8381518110610a7c57610a7c615ab6565b6020026020010151610a8e9190615acc565b610a989190615ae3565b8a8281518110610aaa57610aaa615ab6565b6020908102919091010152600101610a5b565b5060408a0181905260208a0151610add906001600160a01b03168761242d565b9350610aed8a8a8a30898b612e04565b60208a01518490610b07906001600160a01b03168861242d565b610b119190615a26565b93508960600151841015610b375760405162461bcd60e51b815260040161014590615a39565b600080516020615e98833981519152828b60200151328d6040015188604051610b64959493929190615a69565b60405180910390a15050509695505050505050565b6000610b8986868633878761044b565b9695505050505050565b806080013542811015610bb85760405162461bcd60e51b81526004016101459061597d565b600082356001600160a01b038116600080516020615e38833981519152148015610c0057506006602160991b01610bf560408601602087016159f3565b6001600160a01b0316145b15610c0e5760009150610ca7565b6001600160a01b0381166006602160991b01148015610c525750600080516020615e38833981519152610c4760408601602087016159f3565b6001600160a01b0316145b15610c605760019150610ca7565b60405162461bcd60e51b815260206004820152601c60248201527b29bbb0b82bb930b81d1034b73b30b634b2103a37b5b2b7103830b4b960211b6044820152606401610145565b610cb786868487604001356114c5565b505050505050565b6000600080516020615eb883398151915286604051610ce091815260200190565b60405180910390a16000610cf78560000151611c32565b9050610d0c8184604001518760400151613059565b6000610d16611d55565b9050610d2781838860200151611e56565b6000633b9aca008260a001518360400151633b9aca00610d479190615a26565b610d519190615a26565b8660400151610d609190615acc565b610d6a9190615ae3565b9050610d7b8386600001518361314b565b60008260200151610d8c5788610d8e565b305b905060008360200151610da2576000610db0565b610db08960200151306131ea565b90506000610dc28a602001518c6131ea565b90506000896001600160a01b031663f1ecceb933868e8d6040518563ffffffff1660e01b8152600401610df89493929190615b05565b60408051808303816000875af1158015610e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3a9190615b9b565b509050610e4986338e84611f02565b5050610e56868d856126c4565b506000610e678c602001518e6131ea565b60608d0151909150610e798483615a26565b1015610ebf5760405162461bcd60e51b81526020600482015260156024820152741b5a5b94995d1d5c9b881b9bdd081c995858da1959605a1b6044820152606401610145565b8b51600080516020615e3883398151915290610eda90611c32565b6001600160a01b0316148015610ef05750600047115b15610f8c57604051600090339047908381818185875af1925050503d8060008114610f37576040519150601f19603f3d011682016040523d82523d6000602084013e610f3c565b606091505b5050905080610f8a5760405162461bcd60e51b815260206004820152601a6024820152791c99599d5b99081b985d1a5d99481d1bdad95b8819985a5b195960321b6044820152606401610145565b505b600080516020615e98833981519152888d60200151328f604001518786610fb39190615a26565b604051610fc4959493929190615a69565b60405180910390a1610fd68382615a26565b9e9d5050505050505050505050505050565b600087608001354281101561100f5760405162461bcd60e51b81526004016101459061597d565b6040518a8152600080516020615eb88339815191529060200160405180910390a16105563380806103f7368e90038e018e6159a5565b600083608001354281101561106c5760405162461bcd60e51b81526004016101459061597d565b604051878152600080516020615eb88339815191529060200160405180910390a160008061109e600034118787611964565b909250905060006110af8835611c32565b9050826001600160a01b0316816001600160a01b03161480156110e957506001600160a01b038316600080516020615e3883398151915214155b8061111c57506001600160a01b03811615801561111c57506001600160a01b038316600080516020615e38833981519152145b6111665760405162461bcd60e51b815260206004820152601b60248201527a0eadcf0e6eec2e07440cce4dedaa8ded6cadc40dad2e6dac2e8c6d602b1b6044820152606401610145565b6001600160a01b03821661118060408a0160208b016159f3565b6001600160a01b03161480156111ad57506001600160a01b038216600080516020615e3883398151915214155b806111f1575060006111c560408a0160208b016159f3565b6001600160a01b03161480156111f157506001600160a01b038216600080516020615e38833981519152145b6112395760405162461bcd60e51b81526020600482015260196024820152780eadcf0e6eec2e07440e8dea8ded6cadc40dad2e6dac2e8c6d603b1b6044820152606401610145565b61055683838a604001358b60600135338e8d8d611c3e565b6000610b89868686868687610867565b60006112708533868686610564565b90505b949350505050565b61131c565b3d6000803e3d6000fd5b67a9059cbb70a0823160c01b815230816008015260206000602483600401855afa6112b7576112b7611280565b60005180156112e25760a4356004830152602482018190526112e26020600060448582885af16112e7565b505050565b806112f4576112f4611280565b600160005114601f3d11163d15178061131857633c9fd93960e21b60005260046000fd5b5050565b604051601581017306ff0b40e9091053eee51fa1d482ce5d852f523360611b825260206000600484335afa61135357611353611280565b6020806004808501335afa61136a5761136a611280565b60206040600460088501335afa61138357611383611280565b600080600088136001811461139f5760205192508791506113a8565b60005192508891505b50600173cced75703e87967682319712fd9296b9de09020360581b03198452606060002083527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460208401526001600160a01b036055852016925033831461141b57635960139160e11b60005260046000fd5b60843592507306ff0b40e9091053eee51fa1d482ce5d852f523360611b84523083146001811461148d57826014860152836034860152336054860152816074860152611488602060006084601089016000732949a7b2771cc70ecd400871236d345979e1c5e75af16112e7565b6114ba565b3360108601528160308601526114b0602060006044600c89016000885af16112e7565b6114ba838661128a565b505050505050505050565b6000811161150a5760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74206d757374206265203e20360741b6044820152606401610145565b6000611514611d55565b905060008361153157600080516020615e3883398151915261153a565b6006602160991b015b9050600084611550576006602160991b01611560565b600080516020615e388339815191525b905061156d838383611e56565b60008061157c85338a89611f02565b9150915086156116f35760405163052f523360e11b8152732949a7b2771cc70ecd400871236d345979e1c5e790630a5ea466906115d8906006602160991b01903390600080516020615e78833981519152908c90600401615bbf565b600060405180830381600087803b1580156115f257600080fd5b505af1158015611606573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b815260048101899052600080516020615e788339815191529250632e1a7d4d9150602401600060405180830381600087803b15801561165157600080fd5b505af1158015611665573d6000803e3d6000fd5b505050506001600160a01b03821630146116ee576000826001600160a01b03164760405160006040518083038185875af1925050503d80600081146116c6576040519150601f19603f3d011682016040523d82523d6000602084013e6116cb565b606091505b50509050806116ec5760405162461bcd60e51b815260040161014590615be9565b505b6117bf565b8451611741578534146117415760405162461bcd60e51b81526020600482015260166024820152751d985b1d59481b9bdd08195c5d585b08185b5bdd5b9d60521b6044820152606401610145565b6006602160991b016001600160a01b031663d0e30db0876040518263ffffffff1660e01b81526004016000604051808303818588803b15801561178357600080fd5b505af1158015611797573d6000803e3d6000fd5b505050506001600160a01b038316301490506117bf576117bf6006602160991b018388613260565b6117ca8589836126c4565b6117d49087615a26565b9550600080516020615eb8833981519152896040516117f591815260200190565b60405180910390a1600080516020615e98833981519152848432898a604051611822959493929190615a69565b60405180910390a1505050505050505050565b60006001600160a01b03851661185d5760405162461bcd60e51b8152600401610145906159ce565b6000611867611d55565b905060006118788660000151611c32565b905061188982828860200151611e56565b60008061189c848c8b8b60400151611f02565b60208a015191935091506118b9906001600160a01b03168a61242d565b94508a6118ca898989848f88612e04565b6118d5858b846126c4565b50602089015186906118f0906001600160a01b03168c61242d565b6118fa9190615a26565b955088606001518610156119205760405162461bcd60e51b815260040161014590615a39565b600080516020615e98833981519152848a60200151328c604001518a60405161194d959493929190615a69565b60405180910390a150505050509695505050505050565b600080826119845760405162461bcd60e51b815260040161014590615c1f565b60006001600160a01b03858560008181106119a1576119a1615ab6565b9050602002013560001c1690506000600160ff1b868660008181106119c8576119c8615ab6565b9050602002013560001c1660001415905080611a4557816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a409190615c55565b611aa7565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa79190615c55565b93506001600160a01b0384166006602160991b01148015611ac55750865b15611adc57600080516020615e3883398151915293505b60008686611aeb600182615a26565b818110611afa57611afa615ab6565b60200291909101359150506001600160a01b038116600160ff1b8216151580611b8457816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7f9190615c55565b611be6565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be69190615c55565b9550600160fe1b831615156001600160a01b0387166006602160991b01148015611c0d5750805b15611c2457600080516020615e3883398151915296505b505050505050935093915050565b6001600160a01b031690565b60006001600160a01b038416611c665760405162461bcd60e51b8152600401610145906159ce565b6000611c70611d55565b9050611c7d818b8b611e56565b6000611c898a876131ea565b9050600080611c9a848a8a8e611f02565b9092509050611cd46001600160a01b038e16600080516020615e3883398151915214611cc6578d611cc9565b60005b8c8c8a8a8e88613290565b50611ce08489836126c4565b5082611cec8d8a6131ea565b611cf69190615a26565b945089851015611d185760405162461bcd60e51b815260040161014590615a39565b600080516020615e988339815191528d8d328e89604051611d3d959493929190615a69565b60405180910390a15050505098975050505050505050565b6040805161010081018252600060a080830182905260c0830191909152651111057e155560d11b36601f198101356001600160d01b03198116928314651e51057e155560d11b8414811786526522220afc2bbb60d01b8414653ca20afc2bbb60d01b8514811760208801529482901c65ffffffffffff16968601969096526001600160a01b039081166060860152603f1990910135600160ff1b8116151560e0860152908116608085015292939091176001808214908114611e245760008560a0015260008560c00152611e4f565b6060360335935065ffffffffffff60a01b841660a01c8560a001526001600160a01b0384168560c001525b5050505090565b82518015611e795750816001600160a01b031683608001516001600160a01b0316145b80611ea5575082602001518015611ea55750806001600160a01b031683608001516001600160a01b0316145b80611ebc57508251158015611ebc57508260200151155b6112e25760405162461bcd60e51b8152602060048201526017602482015276496e76616c696420636f6d6d697373696f6e20696e666f60481b6044820152606401610145565b600080856020015115611f275730611f1e8760800151306131ea565b91509150612424565b8551611f3857508290506000612424565b612209565b80820281158282048414178402611f5c5763ad251c276000526004601cfd5b9290920492915050565b600082821015611f7e576346e72d036000526004601cfd5b500390565b62461bcd60e51b600052600160e51b6020528060405250806000fd5b60008060008085855af1806112e2576112e260607c1c20636f6d6d697373696f6e2077697468206574686572206572726f72611f83565b6040516084810160405263052f523360e11b81528160048201528260248201528360448201528460648201526000806084836000732949a7b2771cc70ecd400871236d345979e1c5e75af190508061204a5761204a60577304d8db185a5b481d1bdad95b9cc819985a5b1959604a1b611f83565b5050505050565b600080604051604881016040526ba9059cbba9059cbb70a0823160a01b815230600c82015260206000602460088401875afa806120a1576120a16058600080516020615e18833981519152611f83565b6000518988016120cc670de0b6b3a7640000836120c784670de0b6b3a76400008e611f3d565b611f3d565b955050808511156120fb576120fb605975055a5b9d985b1a5908185b5bdd5b9d0c54d8d85b1959603a1b611f83565b8660088401528460288401526020600060446004860160008a5af1915081601f3d1160016000511416151615612134573d863b15171591505b8161215257612152605f600080516020615e58833981519152611f83565b88156121b8576121628582611f66565b93508860048401528360248401526020600060448560008a5af1915081601f3d116001600051141615161561219a573d863b15171591505b816121b8576121b8605f600080516020615e58833981519152611f83565b5050509550959350505050565b604051606081016040528181528260208201528360408201527f0d3b1268ca3dbb6d3d8a0ea35f44f8f9d58cf578d732680b71b6904fb2733e0d606082a150505050565b608086015160e087015160a08801516040890151601090920281151501600080516020615e388339815191528414610100020191600091829182918291906301c9c380828201111561227d5761227d605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400611f83565b60608e015160c08f01519096509450818101633b9aca0003918b0282900493508a0204905084610100811461230757610101811461232a57610110811461230757610111811461232a578015612370576001811461238757601081146123b557601181146123e15761230260526e0e696e76616c69642073746174757360701b611f83565b612415565b6123118386611f9f565b6123028584600080516020615e388339815191526121c5565b6123348386611f9f565b61234d8584600080516020615e388339815191526121c5565b6123578285611f9f565b6123028483600080516020615e388339815191526121c5565b61237c83868e8a611fd6565b6123028584896121c5565b61239383868e8a611fd6565b61239e8584896121c5565b6123aa82858e8a611fd6565b6123028483896121c5565b6123c183308e8a611fd6565b6123cf60008085888b612051565b506123db86828a6121c5565b50612415565b6123ef828401308e8a611fd6565b6123fc828585888b612051565b61240787838b6121c5565b61241286828b6121c5565b50505b50505050505050836000915091505b94509492505050565b600061243883613a11565b1561244e57506001600160a01b038116316124be565b6040516370a0823160e01b81526001600160a01b038416906370a082319061247a908590600401615611565b602060405180830381865afa158015612497573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124bb9190615a9d565b90505b92915050565b60006124d5368890038801886159a5565b905060008160400151116125295760405162461bcd60e51b815260206004820152601b60248201527a066726f6d546f6b656e416d6f756e74206d757374206265203e203602c1b6044820152606401610145565b60006125388260000151611c32565b90508561257b5760405162461bcd60e51b815260206004820152601160248201527007061746873206d757374206265203e203607c1b6044820152606401610145565b60006125ae8888600081811061259357612593615ab6565b90506020028101906125a59190615c72565b60800135611c32565b90506125c2826001600160a01b0316613a11565b1561265d576001600160a01b0381166006602160991b01146125f65760405162461bcd60e51b815260040161014590615c92565b6006602160991b016001600160a01b031663d0e30db084604001516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561263c57600080fd5b505af1158015612650573d6000803e3d6000fd5b505050505030955061268e565b816001600160a01b0316816001600160a01b03161461268e5760405162461bcd60e51b815260040161014590615c92565b6126b686858786604001516126af88602001516001600160a01b0316613a11565b8d8d613a2d565b6114ba836020015185613ab0565b600083602001516126d757506000612a89565b604084015160a08501516301c9c380818301111561271757612717605f7c1b6572726f7220636f6d6d697373696f6e2072617465206c696d697400611f83565b6080860151606087015160405160608101604052600080516020615e3883398151915283146001811461294657604051604c81016040526fa9059cbba9059cbba9059cbb70a0823160801b8152306010820152602060006024600c8401885afa80612795576127956058600080516020615e18833981519152611f83565b6000518a8110156127b9576127b9604d6a029cdd588819985a5b195960921b611f83565b8a81039050633b9aca0089820204995085600c84015289602c8401526020600060446008860160008b5af1915081601f3d1160016000511416151615612802573d873b15171591505b8161282057612820605f600080516020615e58833981519152611f83565b868552896020860152856040860152600080516020615df8833981519152606086a187156128d35760c08d0151633b9aca0089830204808c019b508160088601528060288601526020600060446004880160008d5af1935083601f3d1160016000511416151615612894573d893b15171593505b836128b2576128b2605f600080516020615e58833981519152611f83565b88875260208701526040860152600080516020615df8833981519152606086a15b6001600160a01b038c166004840152899003602483015260206000604484828a5af1905080601f3d11600160005114161516156129125750843b153d17155b8061293f5761293f60607c1c7472616e7366657220746f6b656e207265636569766572206661696c611f83565b5050612a82565b8747101561296757612967604d6a029cdd588819985a5b195960921b611f83565b874703633b9aca008782020497506000806000808b885af1806129ac576129ac605d7c197472616e73666572206574682072656665726572206661696c000000611f83565b858452886020850152846040850152600080516020615df8833981519152606085a18615612a3e5760c08c0151633b9aca0083890204998a0199600080808084865af180612a1c57612a1c605d7c197472616e73666572206574682072656665726572206661696c000000611f83565b5087865260208601526040850152600080516020615df8833981519152606085a15b6000806000808c86038f60601b60601c5af1905080612a7f57612a7f605e7c1a7472616e7366657220657468207265636569766572206661696c0000611f83565b50505b5050505050505b9392505050565b60008082612ab05760405162461bcd60e51b815260040161014590615c1f565b60006001600160a01b0385856000818110612acd57612acd615ab6565b905060200201351690506000600160ff1b86866000818110612af157612af1615ab6565b9050602002013516600014905080612b6a57816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b659190615c55565b612bcc565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ba8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bcc9190615c55565b93506001600160a01b0384166006602160991b01148015612bea5750865b15612c0157600080516020615e3883398151915293505b60008686612c10600182615a26565b818110612c1f57612c1f615ab6565b60200291909101359150506001600160a01b038116600160ff1b82161580612ca857816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ca39190615c55565b612d0a565b816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ce6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0a9190615c55565b9550600160fd1b831615156001600160a01b0387166006602160991b01148015611c0d57508015611c2457600080516020615e388339815191529650505050505050935093915050565b600080612d5f611d55565b9050612d6c818989611e56565b6000612d78888b6131ea565b9050600080612d89848e8e8c611f02565b91509150612d9b8d838b8b8b8b613d38565b50612da7848d836126c4565b5082612db38b8e6131ea565b612dbd9190615a26565b945087851015612ddf5760405162461bcd60e51b815260040161014590615a39565b600080516020615e988339815191528b8b328c89604051611d3d959493929190615a69565b60408601518690612e625760405162461bcd60e51b815260206004820152602260248201527f526f7574653a2066726f6d546f6b656e416d6f756e74206d757374206265203e604482015261020360f41b6064820152608401610145565b6000612e718260000151611c32565b9050612e7c81613a11565b15612ee4576006602160991b016001600160a01b031663d0e30db083604001516040518263ffffffff1660e01b81526004016000604051808303818588803b158015612ec757600080fd5b505af1158015612edb573d6000803e3d6000fd5b50505050503094505b6000805b8851811015612f2057888181518110612f0357612f03615ab6565b602002602001015182612f169190615cbf565b9150600101612ee8565b508260400151811115612f935760405162461bcd60e51b815260206004820152603560248201527f526f7574653a206e756d626572206f6620626174636865732073686f756c64206044820152741899480f0f48199c9bdb551bdad95b905b5bdd5b9d605a1b6064820152608401610145565b508551875114612fd75760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610145565b60005b865181101561304057613038868686612fff87602001516001600160a01b0316613a11565b8c868151811061301157613011615ab6565b60200260200101518c878151811061302b5761302b615ab6565b6020026020010151614088565b600101612fda565b5061304f826020015184613ab0565b5050505050505050565b6001600160a01b038316600080516020615e3883398151915214801561307f5750813410155b801561308b5750808210155b806130c257506001600160a01b038316600080516020615e38833981519152148015906130b85750808210155b80156130c2575034155b6112e25760405162461bcd60e51b815260206004820152604e60248201527f6d6178436f6e73756d65416d6f756e74203e206d73672e76616c7565207c7c2060448201527f6d6178436f6e73756d65416d6f756e74203c2062617365526571756573742e6660648201526d1c9bdb551bdad95b905b5bdd5b9d60921b608482015260a401610145565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038416016131de576006602160991b016001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156131b257600080fd5b505af11580156131c6573d6000803e3d6000fd5b50505050506112e233836006602160991b01846141f9565b6112e2338385846141f9565b6000600080516020615e3883398151915283146001811461325457604051602481016040526370a0823160e01b815283600482015260206000602483885afa905080613249576132496058600080516020615e18833981519152611f83565b506000519150613259565b823191505b5092915050565b6132738363a9059cbb60e01b8484614284565b6112e25760405163fb7f507960e01b815260040160405180910390fd5b60006134b7565b828152600060206000600484600401865afa6132cc576132cc6054700419d95d081d1bdad95b8819985a5b195960621b611f83565b505060005192915050565b6770a082310dfe168160c01b815260008060206000600485600401875afa61331a5761331a605672049d1bdad95b8c0818d85b1b0819985a5b195960521b611f83565b600051915083836004015260206000602485855afa613357576133576059750558985b185b98d953d98818d85b1b0819985a5b1959603a1b611f83565b60005190509250929050565b6770a08231d21220a760c01b815260008060206000600485600401875afa61331a5761331a605672049d1bdad95b8c4818d85b1b0819985a5b195960521b611f83565b668b0367c240bc6b60c21b8152600060406000600484600401875afa6133e9576133e9605874051c995cd95c9d995cc818d85b1b0819985a5b195960421b611f83565b60005160205186801561341557891561340d576134068786613363565b8390039650505b90919061342c565b881561342c5761342587866132d7565b8490039650505b50668b0367c240bc6b60c21b8452898502633b9aca0092909202820191020490508480156134665781600484015260006024840152613474565b600060048401528160248401525b50886044830152608060648301526000608483015260008060a4846000885af161073d5761073d605470041cddd85c0818d85b1b0819985a5b195960621b611f83565b8460208502810185806134de576134de604e6b0b656d70747920706f6f6c7360901b611f83565b5060405182358b15600181146135885734156135145761351460557111696e76616c6964206d73672e76616c756560581b611f83565b63052f523360e11b83528c60048401528760248401526001600160a01b03821660448401528b60648401526000806084856000732949a7b2771cc70ecd400871236d345979e1c5e75af1613583576135836056720498db185a5b481d1bdad95b8819985a5b195960521b611f83565b613647565b60018c3410036135b2576135b260557111696e76616c6964206d73672e76616c756560581b611f83565b670a9059cbbd0e30db60c41b835260008060048086018f6006602160991b015af16135f8576135f86056720499195c1bdcda5d081155120819985a5b195960521b611f83565b6001600160a01b03821683600401528b83602401526020600060448560006006602160991b015af161364757613647605874051d1c985b9cd9995c8815d155120819985a5b195960421b611f83565b508a9450602084015b838110156136a657803561369a6001600160a01b03821663ffffffff60a01b851660a01c600160fd1b8616600160fc1b8716600160ff1b88166001600160a01b0389168d8b6133a6565b96509150602001613650565b5060009350600160fe1b811680156137d557600094506136f33063ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a6133a6565b9550672e1a7d4da9059cbb60c01b8352600080516020615e7883398151915260088401528560288401526020600060448560040160006006602160991b015af161375a5761375a605874051d1c985b9cd9995c8815d155120819985a5b195960421b611f83565b856004840152602060006024856000600080516020615e788339815191525af16137a0576137a060577304ddda5d1a191c985dc81155120819985a5b1959604a1b611f83565b600080600080898b5af16137d0576137d060577304dd1c985b9cd9995c881155120819985a5b1959604a1b611f83565b613a01565b60009350600160ff1b8216801561388357600160fc1b83161561387e576770a082310dfe168160c01b8452602060006004866004016001600160a01b0387165afa61383b5761383b605672049d1bdad95b8c0818d85b1b0819985a5b195960521b611f83565b600051955087846004015260206000602486895afa61387857613878605675055d1bdad95b8c0818985b185b98d94819985a5b1959603a1b611f83565b60005194505b61391b565b600160fd1b83161561391b576770a08231d21220a760c01b8452602060006004866004016001600160a01b0387165afa6138d8576138d8605672049d1bdad95b8c4818d85b1b0819985a5b195960521b611f83565b600051955087846004015260206000602486895afa61391557613915605975055d1bdad95b8c4818985b185b98d94819985a5b1959603a1b611f83565b60005194505b506139538763ffffffff60a01b841660a01c600160fd1b8516600160fc1b8616600160ff1b87166001600160a01b0388168c8a6133a6565b955084600010600181146139bc57600160ff1b831680156139945761398d6770a082310dfe168160c01b6001600160a01b03861687613297565b96506139b6565b6139b36770a08231d21220a760c01b6001600160a01b03861687613297565b96505b506139ff565b6770a082310dfe168160c01b845287846004015260206000602486895afa6139f7576139f76058600080516020615e18833981519152611f83565b846000510396505b505b5050505050979650505050505050565b6001600160a01b0316600080516020615e388339815191521490565b806000613a538288604080518082019091529182526001600160a01b0316602082015290565b905060005b82811015613aa4578015613a6a573099505b613a9c8a8a89848a8a8a88818110613a8457613a84615ab6565b9050602002810190613a969190615c72565b886142d7565b600101613a58565b50505050505050505050565b613ac2826001600160a01b0316613a11565b15613ca5576040516370a0823160e01b81526000906006602160991b01906370a0823190613af4903090600401615611565b602060405180830381865afa158015613b11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b359190615a9d565b90508015613c1b5760405163a9059cbb60e01b8152600080516020615e788339815191526004820152602481018290526006602160991b019063a9059cbb906044016020604051808303816000875af1158015613b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bba9190615cd2565b50604051632e1a7d4d60e01b815260048101829052600080516020615e7883398151915290632e1a7d4d90602401600060405180830381600087803b158015613c0257600080fd5b505af1158015613c16573d6000803e3d6000fd5b505050505b6001600160a01b03821630146112e257478015610394576000836001600160a01b03168260405160006040518083038185875af1925050503d8060008114613c7f576040519150601f19603f3d011682016040523d82523d6000602084013e613c84565b606091505b505090508061204a5760405162461bcd60e51b815260040161014590615be9565b6001600160a01b0381163014611318576040516370a0823160e01b81526000906001600160a01b038416906370a0823190613ce4903090600401615611565b602060405180830381865afa158015613d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d259190615a9d565b905080156112e2576112e2838383613260565b6000613fc3565b6000856001600160ff1b031015613d6157630b3f79fd60e41b60005260046000fd5b604051600160ff1b8616156001600160a01b0387168160018114613df557630251596160e31b845260048401868152600060208201528a604082015273fffd8963efd1fc6a506488495d951d5263988d25606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af180613de95760206000fd5b5060206000803e613e58565b630251596160e31b845260048401868152600160208201528a60408201526401000276a4606082015260a06080820152604060a08201528760c08201528860e082015250600080610104866000865af180613e505760206000fd5b5060208060003e5b505050506000519050600160ff1b811015613e7e576322323ba760e21b60005260046000fd5b1960010195945050505050565b600181341003613ea657631841b4e160e01b60005260046000fd5b600080600080846006602160991b015af1806113185761131860577304d5d155120819195c1bdcda5d0819985a5b1959604a1b611f83565b60405160048101672e1a7d4da9059cbb60c01b8252600080516020615e78833981519152600482015283602482015260008060448360006006602160991b015af1905080613f4957613f49605874051d1c985b9cd9995c881dd95d1a0819985a5b195960421b611f83565b8360048301526000806024846000600080516020615e788339815191525af1905080613f9257613f92605874051dda5d1a191c985dc81dd95d1a0819985a5b195960421b611f83565b60008060008087875af190508061039457610394605571045cd95b9908195d1a195c8819985a5b1959605a1b611f83565b82601f19602084028201018380613fe5576333f3e07b60e11b60005260046000fd5b5088600034118015613ffe57613ffa89613e8b565b309a505b5087606052825b828110156140285761401b898235848e30613d3f565b309b509850602001614005565b506000600160fd1b833516119250826001811461404a5780156140695761407a565b614058898435848e30613d3f565b9450614064858b613ede565b61407a565b614077898435848e8e613d3f565b94505b505050509695505050505050565b60006140b1826000815181106140a0576140a0615ab6565b602002602001015160800151611c32565b905060008060008451905060005b818110156141ec5780156140fd576140e28682815181106140a0576140a0615ab6565b94506140f76001600160a01b0386163061242d565b9650309a505b30614109600184615a26565b82148015614115575088155b156141215750886141b9565b61412c600184615a26565b82108015614162575086614141836001615cbf565b8151811061415157614151615ab6565b602002602001015160200151516001145b156141b45786614173836001615cbf565b8151811061418357614183615ab6565b6020026020010151602001516000815181106141a1576141a1615ab6565b60200260200101519050600194506141b9565b600094505b6141e08c8c838b8b87815181106141d2576141d2615ab6565b602002602001015189614834565b508392506001016140bf565b5050505050505050505050565b306001600160a01b0385160361421957614214828483613260565b610394565b60405163052f523360e11b8152732949a7b2771cc70ecd400871236d345979e1c5e790630a5ea46690614256908590889088908790600401615bbf565b600060405180830381600087803b15801561427057600080fd5b505af115801561304f573d6000803e3d6000fd5b60006040518481528360048201528260248201526020600060448360008a5af19150508015611273573d80156142c657600160005114601f3d111691506142ce565b6000863b1191505b50949350505050565b60008060006142e98560800135611c32565b905060006142f78680615cef565b9050116143405760405162461bcd60e51b8152602060048201526017602482015276065646765206c656e677468206d757374206265203e203604c1b6044820152606401610145565b61434d6040860186615cef565b90506143598680615cef565b905014801561438057506143706060860186615cef565b905061437c8680615cef565b9050145b80156143a457506143946020860186615cef565b90506143a08680615cef565b9050145b6143e75760405162461bcd60e51b81526020600482015260146024820152730e0c2e8d040d8cadccee8d040dad2e6dac2e8c6d60631b6044820152606401610145565b86156144a7576040516370a0823160e01b81526001600160a01b038216906370a0823190614419903090600401615611565b602060405180830381865afa158015614436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061445a9190615a9d565b9750600088116144a75760405162461bcd60e51b815260206004820152601860248201527706e6f64652062616c616e6365206d757374206265203e20360441b6044820152606401610145565b60005b6144b48680615cef565b90508110156141ec5760008080806144cf60408b018b615cef565b868181106144df576144df615ab6565b9050602002013560001b905061ffff60a01b811660a01c915060ff60b81b811660b81c935060ff60b01b811660b01c92508b841461455e5760405162461bcd60e51b815260206004820152601c60248201527b1b9bd919481a5b9c1d5d125b99195e081a5b98dbdb9cda5cdd195b9d60221b6044820152606401610145565b828410801561456e575088518311155b6145b45760405162461bcd60e51b81526020600482015260176024820152766e6f646520696e646578206f7574206f662072616e676560481b6044820152606401610145565b6145be8289615cbf565b975060016145cc8b80615cef565b6145d7929150615a26565b850361462a57876127101461462a5760405162461bcd60e51b81526020600482015260196024820152780746f74616c576569676874206d75737420626520313030303603c1b6044820152606401610145565b50600060016146398b80615cef565b614644929150615a26565b85036146e157306001600160a01b03168f6001600160a01b0316036146d7576040516370a0823160e01b81526001600160a01b038716906370a082319061468f903090600401615611565b602060405180830381865afa1580156146ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146d09190615a9d565b9050614707565b6146d0878e615a26565b6127106146ee838f615acc565b6146f89190615ae3565b90506147048188615cbf565b96505b6147448f61471860208d018d615cef565b8881811061472857614728615ab6565b905060200201602081019061473d91906159f3565b88846141f9565b50875130908314801561475557508a155b1561475d57508c5b61482561476d60408c018c615cef565b8781811061477d5761477d615ab6565b602002919091013590506147918c80615cef565b888181106147a1576147a1615ab6565b90506020020160208101906147b691906159f3565b6147c360608e018e615cef565b898181106147d3576147d3615ab6565b90506020028101906147e59190615d38565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505060208e01518691506149da565b508360010193505050506144aa565b6000805b83515181101561304f5760008460400151828151811061485a5761485a615ab6565b602002602001015160001b905060008060008061487a8960800151611c32565b6001600160a01b0386169450600160ff1b8616935061ffff60a087901c16925090506148a68288615cbf565b8951519097506148b890600190615a26565b860361491f5761271087111561491f5760405162461bcd60e51b815260206004820152602660248201527f746f74616c5765696768742063616e206e6f7420657863656564203130303030604482015265081b1a5b5a5d60d21b6064820152608401610145565b8761497a576000826127101461494b5761271061493c848d615acc565b6149469190615ae3565b61494d565b8a5b90506149788e8b60200151898151811061496957614969615ab6565b602002602001015184846141f9565b505b50506149c4818860000151868151811061499657614996615ab6565b60200260200101518b858b6060015189815181106149b6576149b6615ab6565b60200260200101518f614a02565b50505080806149d290615d7e565b915050614838565b600160ff1b85166001600160a01b0386166149f9828786848988614a02565b50505050505050565b8515614b0757600080866001600160a01b0316636f7929f260e01b878787604051602401614a3293929190615d97565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614a806001600160a01b038616650f2882bf0b3360d21b615cbf565b604051602001614a91929190615dc3565b60408051601f1981840301815290829052614aab91615de5565b6000604051808303816000865af19150503d8060008114614ae8576040519150601f19603f3d011682016040523d82523d6000602084013e614aed565b606091505b509150915081614b0057614b0081614bfb565b5050610cb7565b600080866001600160a01b03166330e6ae3160e01b878787604051602401614b3193929190615d97565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614b7f6001600160a01b038616650f2882bf0b3360d21b615cbf565b604051602001614b90929190615dc3565b60408051601f1981840301815290829052614baa91615de5565b6000604051808303816000865af19150503d8060008114614be7576040519150601f19603f3d011682016040523d82523d6000602084013e614bec565b606091505b50915091508161304f5761304f815b805115614c0a57805160208201fd5b60405162461bcd60e51b81526020600482015260136024820152721859185c1d1bdc8818d85b1b0819985a5b1959606a1b6044820152606401610145565b50565b60008060408385031215614c5e57600080fd5b50508035926020909101359150565b6001600160a01b0381168114614c4857600080fd5b8035614c8d81614c6d565b919050565b600060a08284031215614ca457600080fd5b50919050565b60008083601f840112614cbc57600080fd5b5081356001600160401b03811115614cd357600080fd5b6020830191508360208260051b8501011115614cee57600080fd5b9250929050565b60008060008060008060008060006101408a8c031215614d1457600080fd5b8935985060208a0135614d2681614c6d565b9750614d358b60408c01614c92565b965060e08a01356001600160401b0380821115614d5157600080fd5b614d5d8d838e01614caa565b90985096506101008c0135915080821115614d7757600080fd5b614d838d838e01614caa565b90965094506101208c0135915080821115614d9d57600080fd5b50614daa8c828d01614caa565b915080935050809150509295985092959850929598565b60008060008060008060a08789031215614dda57600080fd5b8635955060208701359450604087013593506060870135614dfa81614c6d565b925060808701356001600160401b03811115614e1557600080fd5b614e2189828a01614caa565b979a9699509497509295939492505050565b60008060008060006101008688031215614e4c57600080fd5b853594506020860135614e5e81614c6d565b9350614e6d8760408801614c92565b925060e08601356001600160401b03811115614e8857600080fd5b614e9488828901614caa565b969995985093965092949392505050565b600080600080600060808688031215614ebd57600080fd5b85359450602086013593506040860135925060608601356001600160401b03811115614e8857600080fd5b60005b83811015614f03578181015183820152602001614eeb565b50506000910152565b60008151808452614f24816020860160208601614ee8565b601f01601f19169290920160200192915050565b602081526000612a896020830184614f0c565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b0381118282101715614f8357614f83614f4b565b60405290565b60405161014081016001600160401b0381118282101715614f8357614f83614f4b565b604051608081016001600160401b0381118282101715614f8357614f83614f4b565b604051601f8201601f191681016001600160401b0381118282101715614ff657614ff6614f4b565b604052919050565b600060a0828403121561501057600080fd5b615018614f61565b905081358152602082013561502c81614c6d565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b60006001600160401b0382111561507057615070614f4b565b5060051b60200190565b600082601f83011261508b57600080fd5b813560206150a061509b83615057565b614fce565b82815260059290921b840181019181810190868411156150bf57600080fd5b8286015b848110156150da57803583529183019183016150c3565b509695505050505050565b600082601f8301126150f657600080fd5b8135602061510661509b83615057565b82815260059290921b8401810191818101908684111561512557600080fd5b8286015b848110156150da57803561513c81614c6d565b8352918301918301615129565b600082601f83011261515a57600080fd5b81356001600160401b0381111561517357615173614f4b565b615186601f8201601f1916602001614fce565b81815284602083860101111561519b57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f8301126151c957600080fd5b813560206151d961509b83615057565b82815260059290921b840181019181810190868411156151f857600080fd5b8286015b848110156150da5780356001600160401b0381111561521b5760008081fd5b6152298986838b0101615149565b8452509183019183016151fc565b600061524561509b84615057565b838152905060208101600584901b830185101561526157600080fd5b825b8460051b84018110156153d1576001600160401b03813581101561528657600080fd5b8135850187601f82011261529957600080fd5b6152a661509b8235615057565b81358082526020808301929160051b8401018a8111156152c557600080fd5b602084015b818110156153ba5785813511156152e057600080fd5b8035850160a0818e03601f190112156152f857600080fd5b615300614f61565b876020830135111561531157600080fd5b6153238e6020808501358501016150e5565b8152876040830135111561533657600080fd5b6153498e602060408501358501016150e5565b6020820152876060830135111561535f57600080fd5b6153728e6020606085013585010161507a565b6040820152876080830135111561538857600080fd5b61539b8e602060808501358501016151b8565b606082015260a0919091013560808201528452602093840193016152ca565b505085525050602092830192919091019050615263565b50509392505050565b600082601f8301126153eb57600080fd5b612a8983833560208501615237565b8015158114614c4857600080fd5b8035614c8d816153fa565b600082601f83011261542457600080fd5b8135602061543461509b83615057565b82815260059290921b8401810191818101908684111561545357600080fd5b8286015b848110156150da5780356001600160401b03808211156154775760008081fd5b90880190610140828b03601f19018113156154925760008081fd5b61549a614f89565b87840135815260406154ad818601614c82565b8983015260606154be818701614c82565b82840152608091506154d1828701614c82565b818401525060a0808601358284015260c0915081860135818401525060e080860135828401526101009150818601358184015250610120615513818701615408565b8383015292850135928484111561552c57600091508182fd5b61553a8e8b86890101615149565b90830152508652505050918301918301615457565b600080600080600080610140878903121561556957600080fd5b6155738888614ffe565b955060a08701356001600160401b038082111561558f57600080fd5b61559b8a838b0161507a565b965060c08901359150808211156155b157600080fd5b6155bd8a838b016153da565b955060e08901359150808211156155d357600080fd5b506155e089828a01615413565b9350506101008701356155f281614c6d565b915061012087013561560381614c6d565b809150509295509295509295565b6001600160a01b0391909116815260200190565b600080600060e0848603121561563a57600080fd5b83359250602084013561564c81614c6d565b915061565b8560408601614c92565b90509250925092565b6000806000806000610120868803121561567d57600080fd5b85359450602086013561568f81614c6d565b935061569e8760408801614ffe565b925060e08601356156ae81614c6d565b91506101008601356001600160401b03808211156156cb57600080fd5b908701906080828a0312156156df57600080fd5b6156e7614fac565b82356156f281614c6d565b80825250602083013560208201526040830135604082015260608301358281111561571c57600080fd5b6157288b828601615149565b6060830152508093505050509295509295909350565b600080600080600080600080610120898b03121561575b57600080fd5b8835975061576c8a60208b01614c92565b965060c08901356001600160401b038082111561578857600080fd5b6157948c838d01614caa565b909850965060e08b01359150808211156157ad57600080fd5b6157b98c838d01614caa565b90965094506101008b01359150808211156157d357600080fd5b506157e08b828c01614caa565b999c989b5096995094979396929594505050565b6000806000806000610120868803121561580d57600080fd5b6158178787614ffe565b945060a08601356001600160401b038082111561583357600080fd5b61583f89838a0161507a565b955060c088013591508082111561585557600080fd5b61586189838a016153da565b945060e088013591508082111561587757600080fd5b5061588488828901615413565b92505061010086013561589681614c6d565b809150509295509295909350565b60008060008060e085870312156158ba57600080fd5b843593506158cb8660208701614c92565b925060c08501356001600160401b038111156158e657600080fd5b6158f287828801614caa565b95989497509550505050565b6000806000806060858703121561591457600080fd5b843593506020850135925060408501356001600160401b038082111561593957600080fd5b818701915087601f83011261594d57600080fd5b81358181111561595c57600080fd5b88602082850101111561596e57600080fd5b95989497505060200194505050565b6020808252600e908201526d149bdd5d194e88195e1c1a5c995960921b604082015260600190565b600060a082840312156159b757600080fd5b612a898383614ffe565b6000612a89368484615237565b6020808252600b908201526a6e6f74206164647228302960a81b604082015260600190565b600060208284031215615a0557600080fd5b8135612a8981614c6d565b634e487b7160e01b600052601160045260246000fd5b818103818111156124be576124be615a10565b602080825260169082015275135a5b881c995d1d5c9b881b9bdd081c995858da195960521b604082015260600190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b600060208284031215615aaf57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b80820281158282048414176124be576124be615a10565b600082615b0057634e487b7160e01b600052601260045260246000fd5b500490565b600061010060018060a01b03808816845280871660208501528551604085015280602087015116606085015260408601516080850152606086015160a0850152608086015160c08501528160e0850152808551168285015250506020830151610120830152604083015161014083015260608301516080610160840152615b90610180840182614f0c565b979650505050505050565b60008060408385031215615bae57600080fd5b505080516020909101519092909150565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6020808252601c908201527b1d1c985b9cd9995c881b985d1a5d99481d1bdad95b8819985a5b195960221b604082015260600190565b6020808252601c908201527b0706f6f6c73206d7573742062652067726561746572207468616e20360241b604082015260600190565b600060208284031215615c6757600080fd5b8151612a8981614c6d565b60008235609e19833603018112615c8857600080fd5b9190910192915050565b6020808252601390820152720ccd2e4e6e8a8ded6cadc40dad2e6dac2e8c6d606b1b604082015260600190565b808201808211156124be576124be615a10565b600060208284031215615ce457600080fd5b8151612a89816153fa565b6000808335601e19843603018112615d0657600080fd5b8301803591506001600160401b03821115615d2057600080fd5b6020019150600581901b3603821315614cee57600080fd5b6000808335601e19843603018112615d4f57600080fd5b8301803591506001600160401b03821115615d6957600080fd5b602001915036819003821315614cee57600080fd5b600060018201615d9057615d90615a10565b5060010190565b6001600160a01b0384811682528316602082015260606040820181905260009061127090830184614f0c565b60008351615dd5818460208801614ee8565b9190910191825250602001919050565b60008251615c88818460208701614ee856fef171268de859ec269c52bbfac94dcb7715e784de194342abb284bf34fd30b32d000000146765742062616c616e63654f66206661696c65640000000000000000000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000001b7472616e7366657220746f6b656e2072656665726572206661696c00000000000000000000000000f828bc75b2b63dac9dd84642acce1bb88e8425311bb43f2da90e35f7b0cf38521ca95a49e68eb42fac49924930a5bd73cdf7576c7724394874fdd8ad13292ec739b441f85c6559f10dc4141b8d4c0fa4cbf55bdba26469706673582212204797ada88990c80a2e8b6a26aca391666a5ba3fa7d3fd83008620d05c3ef534d64736f6c63430008110033