5 txs
26 calls
constructor
constructor(address _pool, address _swapper, address _receiptToken, address _borrowToken, address _aaveAddressProvider, address _vPool, string _name)
functions
aaveAddressProvider
viewfunction aaveAddressProvider() view returns (address)
borrowToken
viewfunction borrowToken() view returns (address)
collateral
viewfunction collateral() view returns (address)
collateralToken
viewfunction collateralToken() view returns (address)
feeCollector
viewfunction feeCollector() view returns (address)
governor
viewfunction governor() view returns (address)
isReservedToken
viewfunction isReservedToken(address _token) view returns (bool)
keepers
viewfunction keepers() view returns (address[])
maxBorrowLimit
viewfunction maxBorrowLimit() view returns (uint256)
minBorrowLimit
viewfunction minBorrowLimit() view returns (uint256)
NAME
viewfunction NAME() view returns (string)
pool
viewfunction pool() view returns (address)
receiptToken
viewfunction receiptToken() view returns (address)
slippage
viewfunction slippage() view returns (uint256)
swapper
viewfunction swapper() view returns (address)
token
viewfunction token() view returns (address)
tvl
viewfunction tvl() view returns (uint256)
vdToken
viewfunction vdToken() view returns (address)
VERSION
viewfunction VERSION() view returns (string)
vPool
viewfunction vPool() view returns (address)
wrappedCollateral
viewfunction wrappedCollateral() view returns (address)
addKeeper
nonpayablefunction addKeeper(address _keeperAddress)
approveToken
nonpayablefunction approveToken(uint256 _approvalAmount)
claimAndSwapRewards
nonpayablefunction claimAndSwapRewards(uint256 _minAmountOut) returns (uint256 _amountOut)
migrate
nonpayablefunction migrate(address _newStrategy)
rebalance
nonpayablefunction rebalance() returns (uint256 _profit, uint256 _loss, uint256 _payback)
removeKeeper
nonpayablefunction removeKeeper(address _keeperAddress)
swapToCollateral
nonpayablefunction swapToCollateral(address _tokenIn, uint256 _minAmountOut) returns (uint256 _amountOut)
sweep
nonpayablefunction sweep(address _fromToken)
updateBorrowLimit
nonpayablefunction updateBorrowLimit(uint256 _minBorrowLimit, uint256 _maxBorrowLimit)
updateFeeCollector
nonpayablefunction updateFeeCollector(address _feeCollector)
updateSlippage
nonpayablefunction updateSlippage(uint256 _newSlippage)
updateSwapper
nonpayablefunction updateSwapper(address _swapper)
withdraw
nonpayablefunction withdraw(uint256 _amount)
events
UpdatedBorrowLimit
event UpdatedBorrowLimit(uint256 previousMinBorrowLimit, uint256 newMinBorrowLimit, uint256 previousMaxBorrowLimit, uint256 newMaxBorrowLimit)
UpdatedFeeCollector
event UpdatedFeeCollector(address indexed previousFeeCollector, address indexed newFeeCollector)
UpdatedSlippage
event UpdatedSlippage(uint256 previousSlippage, uint256 newSlippage)
UpdatedSwapper
event UpdatedSwapper(address indexed oldSwapper, address indexed newSwapper)
errors
No errors.
creation bytecode
0x610100604052611b5860065561213460075561012c6008553480156200002457600080fd5b506040516200667c3803806200667c8339810160408190526200004791620006ee565b8686868686858585856001600160a01b038316620000ac5760405162461bcd60e51b815260206004820152601460248201527f706f6f6c2d616464726573732d69732d7a65726f00000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b038216620001045760405162461bcd60e51b815260206004820152601760248201527f737761707065722d616464726573732d69732d7a65726f0000000000000000006044820152606401620000a3565b600280546001600160a01b0319166001600160a01b0384811691909117909155831660a081905260408051637e062a3560e11b8152905163fc0c546a91600480820192602092909190829003018186803b1580156200016257600080fd5b505afa15801562000177573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019d91906200084f565b6001600160a01b03908116608052600080546001600160a01b031916918316919091179055620001e4620001ce3390565b6003620005a760201b620020dc1790919060201c565b620002265760405162461bcd60e51b81526020600482015260116024820152701859190b5ad9595c195c8b59985a5b1959607a1b6044820152606401620000a3565b505081516200023e9150600590602084019062000619565b506001600160a01b038216620002975760405162461bcd60e51b815260206004820152601760248201527f6164647265737350726f76696465722d69732d7a65726f0000000000000000006044820152606401620000a3565b608051600c80546001600160a01b0319166001600160a01b03928316908117909155604080516358b50cef60e11b81529051919287169163b16a19de91600480820192602092909190829003018186803b158015620002f557600080fd5b505afa1580156200030a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033091906200084f565b6001600160a01b031614620003885760405162461bcd60e51b815260206004820152601560248201527f696e76616c69642d726563656970742d746f6b656e00000000000000000000006044820152606401620000a3565b600080836001600160a01b031663e860accb6040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c557600080fd5b505afa158015620003da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040091906200084f565b6040516334924edb60e21b81526001600160a01b038781166004830152919091169063d2493b6c9060240160606040518083038186803b1580156200044457600080fd5b505afa15801562000459573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047f919062000876565b600a80546001600160a01b03199081166001600160a01b0393841617909155600980548216998316998a179055600b8054909116938216939093179092555093841660c052505060408051637e062a3560e11b81529051939650918816945063fc0c546a935050600480820192602092909190829003018186803b1580156200050757600080fd5b505afa1580156200051c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200054291906200084f565b6001600160a01b0316146200058e5760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a590b59dc9bddcb5c1bdbdb607a1b6044820152606401620000a3565b506001600160a01b031660e05250620009079350505050565b6000620005be836001600160a01b038416620005c7565b90505b92915050565b60008181526001830160205260408120546200061057508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620005c1565b506000620005c1565b8280546200062790620008ca565b90600052602060002090601f0160209004810192826200064b576000855562000696565b82601f106200066657805160ff191683800117855562000696565b8280016001018555821562000696579182015b828111156200069657825182559160200191906001019062000679565b50620006a4929150620006a8565b5090565b5b80821115620006a45760008155600101620006a9565b6001600160a01b0381168114620006d557600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b600080600080600080600060e0888a0312156200070a57600080fd5b87516200071781620006bf565b809750506020808901516200072c81620006bf565b60408a01519097506200073f81620006bf565b60608a01519096506200075281620006bf565b60808a01519095506200076581620006bf565b60a08a01519094506200077881620006bf565b60c08a01519093506001600160401b03808211156200079657600080fd5b818b0191508b601f830112620007ab57600080fd5b815181811115620007c057620007c0620006d8565b604051601f8201601f19908116603f01168101908382118183101715620007eb57620007eb620006d8565b816040528281528e868487010111156200080457600080fd5b600093505b8284101562000828578484018601518185018701529285019262000809565b828411156200083a5760008684830101525b80965050505050505092959891949750929550565b6000602082840312156200086257600080fd5b81516200086f81620006bf565b9392505050565b6000806000606084860312156200088c57600080fd5b83516200089981620006bf565b6020850151909350620008ac81620006bf565b6040850151909250620008bf81620006bf565b809150509250925092565b600181811c90821680620008df57607f821691505b602082108114156200090157634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e051615bcf62000aad6000396000818161035f015281816122c4015281816124ce015281816124fc01528181613d8f01528181613e0b01528181614b1e0152818161513601528181615242015261528f015260008181610420015281816123130152818161265e01528181612e7b015281816139e701528181613aa501528181614542015281816147040152614e270152600081816102ad0152818161077b015281816109f701528181610b3c01528181610d0001528181610e4701528181610f1c01528181610fcf0152818161129901528181611366015281816115910152818161179c01528181611ee701528181612551015281816127de015281816129b70152614dfd0152600081816103e60152818161047d015281816105d1015281816108770152818161091a01528181610d8d01528181610e2501528181610e9301528181610f4f0152818161111601528181611515015281816119bd01528181611b1701528181611bfc01528181611dca01528181611e08015281816128d401528181612a2a015281816143050152614ddb0152615bcf6000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c806390d675141161011a578063d3033c39116100ad578063ec78e8321161007c578063ec78e832146104b2578063ee330ee3146104c5578063fb7ee102146104d8578063fc0c546a146104eb578063ffa1ad74146104fc57600080fd5b8063d3033c3914610468578063d8dfeb451461047b578063e260d747146104a1578063e5328e06146104aa57600080fd5b8063c415b95c116100e9578063c415b95c14610408578063cdaabe411461041b578063ce5494bb14610442578063d2c35ce81461045557600080fd5b806390d67514146103a4578063951dc22c146103b7578063a3f4df7e146103cc578063b2016bd4146103e157600080fd5b80632b3297f91161019d5780634032b72b1161016c5780634032b72b14610311578063440d724814610324578063456dc17a146103475780636719578c1461035a5780637d7c2a1c1461038157600080fd5b80632b3297f9146102cf5780632e1a7d4d146102e25780633ac9fc11146102f55780633e032a3b1461030857600080fd5b80631026013a116101d95780631026013a1461026f57806314ae9f2e1461028257806315b0d4961461029557806316f0115b146102a857600080fd5b806301681a621461020b5780630181686c146102205780630ade00f21461023c5780630c340a2414610267575b600080fd5b61021e61021936600461545e565b610520565b005b61022960075481565b6040519081526020015b60405180910390f35b600c5461024f906001600160a01b031681565b6040516001600160a01b039091168152602001610233565b61024f610777565b61022961027d36600461547b565b61080f565b61021e61029036600461545e565b6109f5565b61021e6102a336600461547b565b610b3a565b61024f7f000000000000000000000000000000000000000000000000000000000000000081565b60025461024f906001600160a01b031681565b61021e6102f036600461547b565b610cfd565b61021e61030336600461547b565b610f76565b61022960085481565b61021e61031f36600461545e565b610fcd565b61033761033236600461545e565b611112565b6040519015158152602001610233565b60095461024f906001600160a01b031681565b61024f7f000000000000000000000000000000000000000000000000000000000000000081565b610389611197565b60408051938452602084019290925290820152606001610233565b600a5461024f906001600160a01b031681565b6103bf6111fc565b60405161023391906154d8565b6103d4611208565b6040516102339190615517565b61024f7f000000000000000000000000000000000000000000000000000000000000000081565b60015461024f906001600160a01b031681565b61024f7f000000000000000000000000000000000000000000000000000000000000000081565b61021e61045036600461545e565b611296565b61021e61046336600461545e565b61158f565b61021e61047636600461545e565b61179a565b7f000000000000000000000000000000000000000000000000000000000000000061024f565b61022960065481565b6102296119a5565b60005461024f906001600160a01b031681565b6102296104d336600461554a565b611ac5565b61021e6104e6366004615576565b611ee5565b6000546001600160a01b031661024f565b6103d4604051806040016040528060058152602001641a9718971960d91b81525081565b61052d335b6003906120f8565b6105775760405162461bcd60e51b815260206004820152601660248201527531b0b63632b916b4b996b737ba16b096b5b2b2b832b960511b60448201526064015b60405180910390fd5b6001546001600160a01b03166105cf5760405162461bcd60e51b815260206004820152601560248201527f6665652d636f6c6c6563746f722d6e6f742d7365740000000000000000000000604482015260640161056e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614156106515760405162461bcd60e51b815260206004820152601f60248201527f6e6f742d616c6c6f7765642d746f2d73776565702d636f6c6c61746572616c00604482015260640161056e565b61065a81611112565b1561069e5760405162461bcd60e51b815260206004820152601460248201527306e6f742d616c6c6f7765642d746f2d73776565760641b604482015260640161056e565b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156106dc576001546106d9906001600160a01b03164761211a565b50565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b15801561071e57600080fd5b505afa158015610732573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107569190615598565b600154909150610773906001600160a01b03848116911683612238565b5050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b1580156107d257600080fd5b505afa1580156107e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080a91906155b1565b905090565b600061081a33610525565b61085f5760405162461bcd60e51b815260206004820152601660248201527531b0b63632b916b4b996b737ba16b096b5b2b2b832b960511b604482015260640161056e565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b1580156108c157600080fd5b505afa1580156108d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f99190615598565b90506109036122b0565b6040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b15801561096457600080fd5b505afa158015610978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c9190615598565b6109a691906155e4565b9150828210156109ef5760405162461bcd60e51b81526020600482015260146024820152731b9bdd0b595b9bdd59da0b585b5bdd5b9d13dd5d60621b604482015260640161056e565b50919050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b158015610a4e57600080fd5b505afa158015610a62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8691906155b1565b6001600160a01b0316336001600160a01b031614610ae35760405162461bcd60e51b815260206004820152601a60248201527931b0b63632b916b4b996b737ba16ba343296b3b7bb32b93737b960311b604482015260640161056e565b610aee6003826122f8565b6106d95760405162461bcd60e51b815260206004820152601460248201527f72656d6f76652d6b65657065722d6661696c6564000000000000000000000000604482015260640161056e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b158015610b9357600080fd5b505afa158015610ba7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcb91906155b1565b6001600160a01b0316336001600160a01b031614610c285760405162461bcd60e51b815260206004820152601a60248201527931b0b63632b916b4b996b737ba16ba343296b3b7bb32b93737b960311b604482015260640161056e565b612710811115610c7a5760405162461bcd60e51b815260206004820152601060248201527f696e76616c69642d736c69707061676500000000000000000000000000000000604482015260640161056e565b600854811415610cbc5760405162461bcd60e51b815260206004820152600d60248201526c73616d652d736c69707061676560981b604482015260640161056e565b60085460408051918252602082018390527f282c65286b5ce3db38b8527661b948d366f1642008bb1f38bfe820cad1003a42910160405180910390a1600855565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610d755760405162461bcd60e51b815260206004820152601960248201527f63616c6c65722d69732d6e6f742d7665737065722d706f6f6c00000000000000604482015260640161056e565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015610dd757600080fd5b505afa158015610deb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0f9190615598565b9050818110610e6c576107736001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000084612238565b610e7e610e7982846155e4565b61230d565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015610edd57600080fd5b505afa158015610ef1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f159190615598565b90506107737f0000000000000000000000000000000000000000000000000000000000000000610f45848461249d565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169190612238565b610f7f33610525565b610fc45760405162461bcd60e51b815260206004820152601660248201527531b0b63632b916b4b996b737ba16b096b5b2b2b832b960511b604482015260640161056e565b6106d9816124b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b15801561102657600080fd5b505afa15801561103a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105e91906155b1565b6001600160a01b0316336001600160a01b0316146110bb5760405162461bcd60e51b815260206004820152601a60248201527931b0b63632b916b4b996b737ba16ba343296b3b7bb32b93737b960311b604482015260640161056e565b6110c66003826120dc565b6106d95760405162461bcd60e51b815260206004820152601160248201527f6164642d6b65657065722d6661696c6564000000000000000000000000000000604482015260640161056e565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148061116157506000546001600160a01b038381169116145b806111795750600a546001600160a01b038381169116145b8061119157506009546001600160a01b038381169116145b92915050565b600080806111a433610525565b6111e95760405162461bcd60e51b815260206004820152601660248201527531b0b63632b916b4b996b737ba16b096b5b2b2b832b960511b604482015260640161056e565b6111f161252b565b925092509250909192565b606061080a6003612d00565b60058054611215906155fb565b80601f0160208091040260200160405190810160405280929190818152602001828054611241906155fb565b801561128e5780601f106112635761010080835404028352916020019161128e565b820191906000526020600020905b81548152906001019060200180831161127157829003601f168201915b505050505081565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461130e5760405162461bcd60e51b815260206004820152601960248201527f63616c6c65722d69732d6e6f742d7665737065722d706f6f6c00000000000000604482015260640161056e565b6001600160a01b0381166113645760405162461bcd60e51b815260206004820152601c60248201527f6e65772d73747261746567792d616464726573732d69732d7a65726f00000000604482015260640161056e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03166316f0115b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113c757600080fd5b505afa1580156113db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ff91906155b1565b6001600160a01b0316146114555760405162461bcd60e51b815260206004820152601660248201527f6e6f742d76616c69642d6e65772d737472617465677900000000000000000000604482015260640161056e565b61145e81612d0d565b6000546040516370a0823160e01b81523060048201526114f29183916001600160a01b03909116906370a082319060240160206040518083038186803b1580156114a757600080fd5b505afa1580156114bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114df9190615598565b6000546001600160a01b03169190612238565b6040516370a0823160e01b81523060048201526106d99082906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b15801561155757600080fd5b505afa15801561156b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f459190615598565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b1580156115e857600080fd5b505afa1580156115fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162091906155b1565b6001600160a01b0316336001600160a01b03161461167d5760405162461bcd60e51b815260206004820152601a60248201527931b0b63632b916b4b996b737ba16ba343296b3b7bb32b93737b960311b604482015260640161056e565b6001600160a01b0381166116d35760405162461bcd60e51b815260206004820152601d60248201527f6665652d636f6c6c6563746f722d616464726573732d69732d7a65726f000000604482015260640161056e565b6001546001600160a01b03828116911614156117315760405162461bcd60e51b815260206004820152601560248201527f6665652d636f6c6c6563746f722d69732d73616d650000000000000000000000604482015260640161056e565b6001546040516001600160a01b038084169216907f0f06062680f9bd68e786e9980d9bb03d73d5620fc3b345e417b6eacb310b970690600090a36001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b1580156117f357600080fd5b505afa158015611807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182b91906155b1565b6001600160a01b0316336001600160a01b0316146118885760405162461bcd60e51b815260206004820152601a60248201527931b0b63632b916b4b996b737ba16ba343296b3b7bb32b93737b960311b604482015260640161056e565b6001600160a01b0381166118de5760405162461bcd60e51b815260206004820152601760248201527f737761707065722d616464726573732d69732d7a65726f000000000000000000604482015260640161056e565b6002546001600160a01b038281169116141561193c5760405162461bcd60e51b815260206004820152600f60248201527f737761707065722d69732d73616d650000000000000000000000000000000000604482015260640161056e565b6002546040516001600160a01b038084169216907f6c953b7ec311055c20b96a42cea31e89528e375b1bf953a503db40854b3188fe90600090a36002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015611a0757600080fd5b505afa158015611a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a3f9190615598565b6000546040516370a0823160e01b81523060048201526001600160a01b03909116906370a08231906024015b60206040518083038186803b158015611a8357600080fd5b505afa158015611a97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abb9190615598565b61080a9190615630565b6000611ad033610525565b611b155760405162461bcd60e51b815260206004820152601660248201527531b0b63632b916b4b996b737ba16b096b5b2b2b832b960511b604482015260640161056e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161415611b975760405162461bcd60e51b815260206004820152601f60248201527f6e6f742d616c6c6f7765642d746f2d73776565702d636f6c6c61746572616c00604482015260640161056e565b611ba083611112565b15611be45760405162461bcd60e51b815260206004820152601460248201527306e6f742d616c6c6f7765642d746f2d73776565760641b604482015260640161056e565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015611c4657600080fd5b505afa158015611c5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7e9190615598565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038616906370a082319060240160206040518083038186803b158015611cc357600080fd5b505afa158015611cd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cfb9190615598565b90508015611df157600254604051636eb1769f60e11b81523060048201526001600160a01b0391821660248201529086169063dd62ed3e9060440160206040518083038186803b158015611d4e57600080fd5b505afa158015611d62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d869190615598565b811115611dc457600254611da8906001600160a01b0387811691166000612f0f565b600254611dc4906001600160a01b038781169116600019612f0f565b611def857f00000000000000000000000000000000000000000000000000000000000000008361303a565b505b6040516370a0823160e01b815230600482015282907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015611e5257600080fd5b505afa158015611e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8a9190615598565b611e9491906155e4565b925083831015611edd5760405162461bcd60e51b81526020600482015260146024820152731b9bdd0b595b9bdd59da0b585b5bdd5b9d13dd5d60621b604482015260640161056e565b505092915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b158015611f3e57600080fd5b505afa158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7691906155b1565b6001600160a01b0316336001600160a01b031614611fd35760405162461bcd60e51b815260206004820152601a60248201527931b0b63632b916b4b996b737ba16ba343296b3b7bb32b93737b960311b604482015260640161056e565b61271081106120245760405162461bcd60e51b815260206004820152601860248201527f696e76616c69642d6d61782d626f72726f772d6c696d69740000000000000000604482015260640161056e565b80158015612030575081155b8061203a57508181115b6120865760405162461bcd60e51b815260206004820152601d60248201527f6d61782d73686f756c642d62652d6869676865722d7468616e2d6d696e000000604482015260640161056e565b6006546007546040805192835260208301859052820152606081018290527fedd77444afdf63401315e81ffe86d08f7865796e8ad2e11acf1d56a1393f07d59060800160405180910390a1600691909155600755565b60006120f1836001600160a01b0384166130de565b9392505050565b6001600160a01b038116600090815260018301602052604081205415156120f1565b8047101561216a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161056e565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146121b7576040519150601f19603f3d011682016040523d82523d6000602084013e6121bc565b606091505b50509050806122335760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161056e565b505050565b6040516001600160a01b03831660248201526044810182905261223390849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b03199093169290921790915261312d565b6122b86131ff565b600254600c546122f6917f0000000000000000000000000000000000000000000000000000000000000000916001600160a01b0391821691166133a4565b565b60006120f1836001600160a01b0384166136c0565b6106d9817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663026b1d5f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561236a57600080fd5b505afa15801561237e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a291906155b1565b600a546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b1580156123e557600080fd5b505afa1580156123f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241d9190615598565b6000546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561246057600080fd5b505afa158015612474573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124989190615598565b6137b3565b60008183106124ac57816120f1565b5090919050565b6124bc816139bf565b6009546124f3906001600160a01b03167f000000000000000000000000000000000000000000000000000000000000000083612f0f565b6002546106d9907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b031683613b5e565b604051636a9eee1360e11b81523060048201526000908190819081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d53ddc269060240160206040518083038186803b15801561259357600080fd5b505afa1580156125a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cb9190615598565b600a546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a082319060240160206040518083038186803b15801561261457600080fd5b505afa158015612628573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264c9190615598565b90506000612658613d65565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663026b1d5f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156126b557600080fd5b505afa1580156126c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ed91906155b1565b90508183111561270f5761270a61270483856155e4565b82613ede565b612721565b61272161271c84846155e4565b614128565b600061272b6142ed565b600080546040516370a0823160e01b815230600482015292935090916001600160a01b03909116906370a082319060240160206040518083038186803b15801561277457600080fd5b505afa158015612788573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ac9190615598565b90508060006127bb8483615630565b604051639f2b283360e01b81523060048201529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639f2b28339060240160206040518083038186803b15801561282057600080fd5b505afa158015612834573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128589190615598565b9050808211156128735761286c81836155e4565b9b50612880565b61287d82826155e4565b9a505b600061288c8a8e615630565b90508086101561295b5760006128ab6128a588846155e4565b8661249d565b90508015612959576128bf81898c896137b3565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b15801561291e57600080fd5b505afa158015612932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129569190615598565b96505b505b612965868b61249d565b9a508a8611612975576000612988565b6129886129828c886155e4565b8e61249d565b6040516302df682360e11b815260048101829052602481018e9052604481018d9052909d506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906305bed04690606401600060405180830381600087803b1580156129fb57600080fd5b505af1158015612a0f573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691506370a082319060240160206040518083038186803b158015612a7557600080fd5b505afa158015612a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aad9190615598565b90508015612abf57612abf8189614387565b600a546040516370a0823160e01b81523060048201526000918291612bc591839182916001600160a01b0316906370a082319060240160206040518083038186803b158015612b0d57600080fd5b505afa158015612b21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b459190615598565b6000546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b158015612b8857600080fd5b505afa158015612b9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc09190615598565b61448e565b90925090508015612bdf57612bda818b614a88565b612c60565b8115612c605760095460405163a415bcad60e01b81526001600160a01b039182166004820152602481018490526002604482015260006064820152306084820152908b169063a415bcad9060a401600060405180830381600087803b158015612c4757600080fd5b505af1158015612c5b573d6000803e3d6000fd5b505050505b6009546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b158015612ca457600080fd5b505afa158015612cb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cdc9190615598565b90508015612ced57612ced81614b08565b5050505050505050505050505050909192565b606060006120f183614b7e565b60008054906101000a90046001600160a01b03166001600160a01b0316816001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612d6357600080fd5b505afa158015612d77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9b91906155b1565b6001600160a01b031614612df15760405162461bcd60e51b815260206004820152601360248201527f77726f6e672d726563656970742d746f6b656e00000000000000000000000000604482015260640161056e565b600a546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b158015612e3557600080fd5b505afa158015612e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6d9190615598565b9050801561077357610773817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663026b1d5f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612ed257600080fd5b505afa158015612ee6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0a91906155b1565b614a88565b801580612f985750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e9060440160206040518083038186803b158015612f5e57600080fd5b505afa158015612f72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f969190615598565b155b61300a5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000606482015260840161056e565b6040516001600160a01b03831660248201526044810182905261223390849063095ea7b360e01b90606401612264565b600254604051636ccb2b0160e01b81526001600160a01b038581166004830152848116602483015260448201849052600160648301523060848301526000921690636ccb2b019060a401602060405180830381600087803b15801561309e57600080fd5b505af11580156130b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130d69190615598565b949350505050565b600081815260018301602052604081205461312557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611191565b506000611191565b6000613182826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614bda9092919063ffffffff16565b80519091501561223357808060200190518101906131a0919061565d565b6122335760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161056e565b600080548190613217906001600160a01b0316614be9565b8151600c54929450909250906001600160a01b031660005b8281101561339d57600084828151811061324b5761324b615678565b602002602001015111801561328b5750816001600160a01b031685828151811061327757613277615678565b60200260200101516001600160a01b031614155b1561338d5760095485516001600160a01b03909116908690839081106132b3576132b3615678565b60200260200101516001600160a01b031614613350576002548551613311916001600160a01b0316906000908890859081106132f1576132f1615678565b60200260200101516001600160a01b0316612f0f9092919063ffffffff16565b6002548451613350916001600160a01b03169086908490811061333657613336615678565b60200260200101518784815181106132f1576132f1615678565b61338d85828151811061336557613365615678565b60200260200101518386848151811061338057613380615678565b6020026020010151614d32565b6133968161568e565b905061322f565b5050505050565b6000836001600160a01b0316638bc6beb26040518163ffffffff1660e01b815260040160206040518083038186803b1580156133df57600080fd5b505afa1580156133f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061341791906155b1565b90506001600160a01b038116156136ba5760405163d279c19160e01b81523060048201526001600160a01b0382169063d279c19190602401600060405180830381600087803b15801561346957600080fd5b505af115801561347d573d6000803e3d6000fd5b505050506000816001600160a01b031663c4f59f9b6040518163ffffffff1660e01b815260040160006040518083038186803b1580156134bc57600080fd5b505afa1580156134d0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526134f8919081019061578a565b805190915060005b818110156136b657600083828151811061351c5761351c615678565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561356757600080fd5b505afa15801561357b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061359f9190615598565b90506000811180156135dc5750856001600160a01b03168483815181106135c8576135c8615678565b60200260200101516001600160a01b031614155b156136a557866001600160a01b0316636ccb2b0185848151811061360257613602615678565b60209081029190910101516040516001600160e01b031960e084901b1681526001600160a01b0391821660048201529089166024820152604481018490526001606482015230608482015260a401602060405180830381600087803b15801561366a57600080fd5b505af192505050801561369a575060408051601f3d908101601f1916820190925261369791810190615598565b60015b6136a3576136a5565b505b506136af8161568e565b9050613500565b5050505b50505050565b600081815260018301602052604081205480156137a95760006136e46001836155e4565b85549091506000906136f8906001906155e4565b905081811461375d57600086600001828154811061371857613718615678565b906000526020600020015490508087600001848154811061373b5761373b615678565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061376e5761376e6157bf565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050611191565b6000915050611191565b8360006137c28183868661448e565b91505080156137d5576137d58186614a88565b600c54600080546040516370a0823160e01b81526001600160a01b03918216600482015291926138699286926138649289929116906370a08231906024015b60206040518083038186803b15801561382c57600080fd5b505afa158015613840573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138649190615598565b61249d565b600c54604051631a4ca37b60e21b81526001600160a01b039182166004820152602481018390523060448201529192508291908816906369328dec90606401602060405180830381600087803b1580156138c257600080fd5b505af11580156138d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138fa9190615598565b1460405180604001604052806002815260200161323960f01b815250906139345760405162461bcd60e51b815260040161056e9190615517565b50600c546040516370a0823160e01b81523060048201526139b5916001600160a01b0316906370a082319060240160206040518083038186803b15801561397a57600080fd5b505afa15801561398e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139b29190615598565b90565b5050505050505050565b6139c881614dce565b6000600260009054906101000a90046001600160a01b03169050613a897f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663026b1d5f6040518163ffffffff1660e01b815260040160206040518083038186803b158015613a3e57600080fd5b505afa158015613a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a7691906155b1565b600c546001600160a01b03169084612f0f565b600c54613aa0906001600160a01b03168284612f0f565b613b477f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663026b1d5f6040518163ffffffff1660e01b815260040160206040518083038186803b158015613afc57600080fd5b505afa158015613b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b3491906155b1565b6009546001600160a01b03169084612f0f565b600954610773906001600160a01b03168284612f0f565b6000836001600160a01b0316638bc6beb26040518163ffffffff1660e01b815260040160206040518083038186803b158015613b9957600080fd5b505afa158015613bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bd191906155b1565b90506001600160a01b038116156136ba576000816001600160a01b031663c4f59f9b6040518163ffffffff1660e01b815260040160006040518083038186803b158015613c1d57600080fd5b505afa158015613c31573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613c59919081019061578a565b805190915060005b818110156136b657828181518110613c7b57613c7b615678565b6020908102919091010151604051636eb1769f60e11b81523060048201526001600160a01b0388811660248301529091169063dd62ed3e9060440160206040518083038186803b158015613cce57600080fd5b505afa158015613ce2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d069190615598565b613d2657613d2186868584815181106132f1576132f1615678565b613d55565b613d3e8660008584815181106132f1576132f1615678565b613d5586868584815181106132f1576132f1615678565b613d5e8161568e565b9050613c61565b6040516370a0823160e01b8152306004820152600090670de0b6b3a7640000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b158015613dd157600080fd5b505afa158015613de5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e099190615598565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166399530b066040518163ffffffff1660e01b815260040160206040518083038186803b158015613e6257600080fd5b505afa158015613e76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e9a9190615598565b613ea491906157d5565b613eae91906157f4565b6009546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401611a6b565b600954600c546001600160a01b0391821691166000613efe838387614e22565b9050801561339d576000612710600854612710613f1b9190615630565b613f2590846157d5565b613f2f91906157f4565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038516906370a082319060240160206040518083038186803b158015613f7457600080fd5b505afa158015613f88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fac9190615598565b90508082111561408c576000613fc282846155e4565b604051631a4ca37b60e21b81526001600160a01b0387811660048301526024820183905230604483015291925082918916906369328dec90606401602060405180830381600087803b15801561401757600080fd5b505af115801561402b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061404f9190615598565b1460405180604001604052806002815260200161323960f01b815250906140895760405162461bcd60e51b815260040161056e9190615517565b50505b6002546040516381cc619b60e01b81526001600160a01b0386811660048301528781166024830152604482018a905260648201859052306084830152909116906381cc619b9060a4015b602060405180830381600087803b1580156140f057600080fd5b505af1158015614104573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139b59190615598565b600954600c546001600160a01b0391821691168215612233576040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b15801561418357600080fd5b505afa158015614197573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141bb9190615598565b905080841115614251576141d76141d282866155e4565b61512c565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a082319060240160206040518083038186803b15801561421657600080fd5b505afa15801561422a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061424e9190615598565b90505b80156136ba576000614263858361249d565b90506000614272858584614e22565b9050600061271060085461271061428991906155e4565b61429390846157d5565b61429d91906157f4565b600254604051636ccb2b0160e01b81526001600160a01b03898116600483015288811660248301526044820187905260648201849052306084830152929350911690636ccb2b019060a4016140d6565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b15801561434f57600080fd5b505afa158015614363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080a9190615598565b81801561223357600c5460405163617ba03760e01b81526001600160a01b03918216600482015260248101839052306044820152600060648201529083169063617ba03790608401600060405180830381600087803b1580156143e957600080fd5b505af19250505080156143fa575060015b61223357614406615816565b806308c379a01415614482575061441b615831565b806144265750614484565b61442f816158bb565b611a9b60f11b146136ba5760405162461bcd60e51b815260206004820152600e60248201527f6465706f736974206661696c6564000000000000000000000000000000000000604482015260640161056e565b505b3d6000803e3d6000fd5b60008085158061449c575084155b6144e85760405162461bcd60e51b815260206004820152601160248201527f616c6c2d696e7075742d67742d7a65726f000000000000000000000000000000604482015260640161056e565b6007546144fa57506000905082614a7f565b60008087116145205785841161451157600061452a565b61451b86856155e4565b61452a565b61452a8785615630565b90508061453e576000859250925050614a7f565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561459957600080fd5b505afa1580156145ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145d191906155b1565b600954600c5460405163b3596f0760e01b81526001600160a01b0392831660048201819052939450908216916000919085169063b3596f079060240160206040518083038186803b15801561462557600080fd5b505afa158015614639573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061465d9190615598565b60405163b3596f0760e01b81526001600160a01b03848116600483015291925060009186169063b3596f079060240160206040518083038186803b1580156146a457600080fd5b505afa1580156146b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146dc9190615598565b90508115806146e9575080155b156147005760008a97509750505050505050614a7f565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e860accb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561475b57600080fd5b505afa15801561476f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061479391906155b1565b600c54604051633e15014160e01b81526001600160a01b039182166004820152911690633e150141906024016101406040518083038186803b1580156147d857600080fd5b505afa1580156147ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061481091906158df565b50505050505050509150506000846001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561485657600080fd5b505afa15801561486a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061488e9190615976565b61489990600a615a7d565b6148a5906127106157d5565b836148b0848b6157d5565b6148ba91906157d5565b6148c491906157f4565b9050600084876001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561490257600080fd5b505afa158015614916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061493a9190615976565b61494590600a615a7d565b61494f90846157d5565b61495991906157f4565b9050806149755760008d9a509a50505050505050505050614a7f565b60006127106007548361498891906157d5565b61499291906157f4565b90506000612710600654846149a791906157d5565b6149b191906157f4565b9050818f11156149ce57808f6149c791906155e4565b9b50614a73565b8e811115614a73576149e08f826155e4565b600b546040516370a0823160e01b81526001600160a01b039182166004820152919e50600091908b16906370a082319060240160206040518083038186803b158015614a2b57600080fd5b505afa158015614a3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a639190615598565b9050808e1115614a7157809d505b505b50505050505050505050505b94509492505050565b614a91826152ef565b60095460405163573ade8160e01b81526001600160a01b03918216600482015260248101849052600260448201523060648201529082169063573ade8190608401600060405180830381600087803b158015614aec57600080fd5b505af1158015614b00573d6000803e3d6000fd5b505050505050565b60405163b6b55f2560e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b6b55f2590602401600060405180830381600087803b158015614b6a57600080fd5b505af115801561339d573d6000803e3d6000fd5b606081600001805480602002602001604051908101604052809291908181526020018280548015614bce57602002820191906000526020600020905b815481526020019060010190808311614bba575b50505050509050919050565b60606130d684846000856152f8565b606080826001600160a01b03166375d264136040518163ffffffff1660e01b815260040160206040518083038186803b158015614c2557600080fd5b505afa925050508015614c55575060408051601f3d908101601f19168201909252614c52918101906155b1565b60015b614c5e57915091565b604080516001808252818301909252600091602080830190803683370190505090508481600081518110614c9457614c94615678565b6001600160a01b03928316602091820292909201015260405163bb492bf560e01b81529083169063bb492bf590614cd19084903090600401615a8c565b600060405180830381600087803b158015614ceb57600080fd5b505af1158015614cff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614d279190810190615ab7565b935093505050915091565b600254604051636ccb2b0160e01b81526001600160a01b0385811660048301528481166024830152604482018490526001606483015230608483015290911690636ccb2b019060a401602060405180830381600087803b158015614d9557600080fd5b505af1925050508015614dc5575060408051601f3d908101601f19168201909252614dc291810190615598565b60015b6136ba57505050565b6106d96001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083612f0f565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b158015614e7e57600080fd5b505afa158015614e92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614eb691906155b1565b60405163b3596f0760e01b81526001600160a01b03878116600483015291925060009183169063b3596f079060240160206040518083038186803b158015614efd57600080fd5b505afa158015614f11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f359190615598565b60405163b3596f0760e01b81526001600160a01b03878116600483015291925060009184169063b3596f079060240160206040518083038186803b158015614f7c57600080fd5b505afa158015614f90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614fb49190615598565b9050600082118015614fc65750600081115b6150005760405162461bcd60e51b815260206004820152600b60248201526a383934b1b296b2b93937b960a91b604482015260640161056e565b80866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561503a57600080fd5b505afa15801561504e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150729190615976565b61507d90600a615a7d565b886001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156150b657600080fd5b505afa1580156150ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150ee9190615976565b6150f990600a615a7d565b61510388866157d5565b61510d91906157f4565b61511791906157d5565b61512191906157f4565b979650505050505050565b80156106d95760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166399530b066040518163ffffffff1660e01b815260040160206040518083038186803b15801561518d57600080fd5b505afa1580156151a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906151c59190615598565b90506000816151dc84670de0b6b3a76400006157d5565b6151e691906157f4565b9050670de0b6b3a76400006151fb83836157d5565b61520591906157f4565b8311615211578061521c565b61521c816001615630565b6040516370a0823160e01b81523060048201529091506152719082906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401613814565b9050801561223357604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b1580156152db57600080fd5b505af11580156136b6573d6000803e3d6000fd5b6106d98161512c565b6060824710156153595760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161056e565b843b6153a75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161056e565b600080866001600160a01b031685876040516153c39190615b7d565b60006040518083038185875af1925050503d8060008114615400576040519150601f19603f3d011682016040523d82523d6000602084013e615405565b606091505b50915091506151218282866060831561541f5750816120f1565b82511561542f5782518084602001fd5b8160405162461bcd60e51b815260040161056e9190615517565b6001600160a01b03811681146106d957600080fd5b60006020828403121561547057600080fd5b81356120f181615449565b60006020828403121561548d57600080fd5b5035919050565b600081518084526020808501945080840160005b838110156154cd5781516001600160a01b0316875295820195908201906001016154a8565b509495945050505050565b6020815260006120f16020830184615494565b60005b838110156155065781810151838201526020016154ee565b838111156136ba5750506000910152565b60208152600082518060208401526155368160408501602087016154eb565b601f01601f19169190910160400192915050565b6000806040838503121561555d57600080fd5b823561556881615449565b946020939093013593505050565b6000806040838503121561558957600080fd5b50508035926020909101359150565b6000602082840312156155aa57600080fd5b5051919050565b6000602082840312156155c357600080fd5b81516120f181615449565b634e487b7160e01b600052601160045260246000fd5b6000828210156155f6576155f66155ce565b500390565b600181811c9082168061560f57607f821691505b602082108114156109ef57634e487b7160e01b600052602260045260246000fd5b60008219821115615643576156436155ce565b500190565b8051801515811461565857600080fd5b919050565b60006020828403121561566f57600080fd5b6120f182615648565b634e487b7160e01b600052603260045260246000fd5b60006000198214156156a2576156a26155ce565b5060010190565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff811182821017156156e5576156e56156a9565b6040525050565b600067ffffffffffffffff821115615706576157066156a9565b5060051b60200190565b600082601f83011261572157600080fd5b8151602061572e826156ec565b60405161573b82826156bf565b83815260059390931b850182019282810191508684111561575b57600080fd5b8286015b8481101561577f57805161577281615449565b835291830191830161575f565b509695505050505050565b60006020828403121561579c57600080fd5b815167ffffffffffffffff8111156157b357600080fd5b6130d684828501615710565b634e487b7160e01b600052603160045260246000fd5b60008160001904831182151516156157ef576157ef6155ce565b500290565b60008261581157634e487b7160e01b600052601260045260246000fd5b500490565b600060033d11156139b25760046000803e5060005160e01c90565b600060443d101561583f5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561586f57505050505090565b82850191508151818111156158875750505050505090565b843d87010160208285010111156158a15750505050505090565b6158b0602082860101876156bf565b509095945050505050565b805160208083015191908110156109ef5760001960209190910360031b1b16919050565b6000806000806000806000806000806101408b8d0312156158ff57600080fd5b8a51995060208b0151985060408b0151975060608b0151965060808b0151955061592b60a08c01615648565b945061593960c08c01615648565b935061594760e08c01615648565b92506159566101008c01615648565b91506159656101208c01615648565b90509295989b9194979a5092959850565b60006020828403121561598857600080fd5b815160ff811681146120f157600080fd5b600181815b808511156159d45781600019048211156159ba576159ba6155ce565b808516156159c757918102915b93841c939080029061599e565b509250929050565b6000826159eb57506001611191565b816159f857506000611191565b8160018114615a0e5760028114615a1857615a34565b6001915050611191565b60ff841115615a2957615a296155ce565b50506001821b611191565b5060208310610133831016604e8410600b8410161715615a57575081810a611191565b615a618383615999565b8060001904821115615a7557615a756155ce565b029392505050565b60006120f160ff8416836159dc565b604081526000615a9f6040830185615494565b90506001600160a01b03831660208301529392505050565b60008060408385031215615aca57600080fd5b825167ffffffffffffffff80821115615ae257600080fd5b615aee86838701615710565b9350602091508185015181811115615b0557600080fd5b85019050601f81018613615b1857600080fd5b8051615b23816156ec565b604051615b3082826156bf565b82815260059290921b8301840191848101915088831115615b5057600080fd5b928401925b82841015615b6e57835182529284019290840190615b55565b80955050505050509250929050565b60008251615b8f8184602087016154eb565b919091019291505056fea264697066735822122027fd902aba28708836c63a0cd50c3953939f3581e93c4be0b99b18cc035416a064736f6c63430008090033000000000000000000000000d1c117319b3595fbc39b471ab1fd485629eb05f2000000000000000000000000229f19942612a8dbdec3643cb23f88685ccd56a50000000000000000000000004d5f47fa6a74757f35c14fd3a6ef8e3c9bc514e80000000000000000000000006b175474e89094c44da98b954eedeac495271d0f0000000000000000000000002f39d218133afab8f2b819b1066c7e434ad94e9e0000000000000000000000000538c8bac84e95a9df8ac10aad17dbe81b9e36ee00000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000184161766556335f5665737065725f58795f4554485f4441490000000000000000