0 txs
0 calls
constructor
constructor(address _pool, bool _allowToken0, bool _allowToken1, address __owner, uint32 _twapPeriod, uint256 _vaultIndex)
functions
affiliate
viewfunction affiliate() view returns (address)
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
allowToken0
viewfunction allowToken0() view returns (bool)
allowToken1
viewfunction allowToken1() view returns (bool)
ammFeeRecipient
viewfunction ammFeeRecipient() view returns (address)
auxTwapPeriod
viewfunction auxTwapPeriod() view returns (uint32)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
baseLower
viewfunction baseLower() view returns (int24)
basePositionId
viewfunction basePositionId() view returns (uint256)
baseUpper
viewfunction baseUpper() view returns (int24)
currentTick
viewfunction currentTick() view returns (int24 tick)
decimals
viewfunction decimals() view returns (uint8)
deposit0Max
viewfunction deposit0Max() view returns (uint256)
deposit1Max
viewfunction deposit1Max() view returns (uint256)
farmingContract
viewfunction farmingContract() view returns (address)
fee
viewfunction fee() view returns (uint24 fee_)
getBasePosition
viewfunction getBasePosition() view returns (uint128 liquidity, uint256 amount0, uint256 amount1)
getLimitPosition
viewfunction getLimitPosition() view returns (uint128 liquidity, uint256 amount0, uint256 amount1)
getTotalAmounts
viewfunction getTotalAmounts() view returns (uint256 total0, uint256 total1)
hysteresis
viewfunction hysteresis() view returns (uint256)
ichiVaultFactory
viewfunction ichiVaultFactory() view returns (address)
limitLower
viewfunction limitLower() view returns (int24)
limitPositionId
viewfunction limitPositionId() view returns (uint256)
limitUpper
viewfunction limitUpper() view returns (int24)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
pool
viewfunction pool() view returns (address)
PRECISION
viewfunction PRECISION() view returns (uint256)
symbol
viewfunction symbol() view returns (string)
tickSpacing
viewfunction tickSpacing() view returns (int24)
token0
viewfunction token0() view returns (address)
token1
viewfunction token1() view returns (address)
totalSupply
viewfunction totalSupply() view returns (uint256)
twapPeriod
viewfunction twapPeriod() view returns (uint32)
algebraSwapCallback
nonpayablefunction algebraSwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
collectFees
nonpayablefunction collectFees() returns (uint256 fees0, uint256 fees1)
collectRewards
nonpayablefunction collectRewards()
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
deposit
nonpayablefunction deposit(uint256 deposit0, uint256 deposit1, address to) returns (uint256 shares)
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
rebalance
nonpayablefunction rebalance(int24 _baseLower, int24 _baseUpper, int24 _limitLower, int24 _limitUpper, int256 swapQuantity)
renounceOwnership
nonpayablefunction renounceOwnership()
resetAllowances
nonpayablefunction resetAllowances()
setAffiliate
nonpayablefunction setAffiliate(address _affiliate)
setAmmFeeRecipient
nonpayablefunction setAmmFeeRecipient(address _ammFeeRecipient)
setAuxTwapPeriod
nonpayablefunction setAuxTwapPeriod(uint32 newAuxTwapPeriod)
setDepositMax
nonpayablefunction setDepositMax(uint256 _deposit0Max, uint256 _deposit1Max)
setFarmingContract
nonpayablefunction setFarmingContract(address _farmingContract)
setHysteresis
nonpayablefunction setHysteresis(uint256 _hysteresis)
setTwapPeriod
nonpayablefunction setTwapPeriod(uint32 newTwapPeriod)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdraw
nonpayablefunction withdraw(uint256 shares, address to) returns (uint256 amount0, uint256 amount1)
events
Affiliate
event Affiliate(address indexed sender, address affiliate)
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
CollectFees
event CollectFees(address indexed sender, uint256 feeAmount0, uint256 feeAmount1)
DeployICHIVault
event DeployICHIVault(address indexed sender, address indexed pool, bool allowToken0, bool allowToken1, address owner, uint256 twapPeriod)
Deposit
event Deposit(address indexed sender, address indexed to, uint256 shares, uint256 amount0, uint256 amount1)
DepositMax
event DepositMax(address indexed sender, uint256 deposit0Max, uint256 deposit1Max)
FarmingContract
event FarmingContract(address indexed sender, address farmingContract)
Hysteresis
event Hysteresis(address indexed sender, uint256 hysteresis)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Rebalance
event Rebalance(int24 tick, uint256 totalAmount0, uint256 totalAmount1, uint256 feeAmount0, uint256 feeAmount1, uint256 totalSupply)
RewardsCollected
event RewardsCollected(uint256 reward, uint256 bonusReward)
SetAuxTwapPeriod
event SetAuxTwapPeriod(address sender, uint32 newAuxTwapPeriod)
SetTwapPeriod
event SetTwapPeriod(address sender, uint32 newTwapPeriod)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Withdraw
event Withdraw(address indexed sender, address indexed to, uint256 shares, uint256 amount0, uint256 amount1)
errors
No errors.
creation bytecode
0x6101406040523480156200001257600080fd5b5060405162005d9d38038062005d9d833981016040819052620000359162000721565b604080518082018252601481527f49434849205661756c74204c697175696469747900000000000000000000000060208201529051633afd2b7960e11b8152600481018390526001600160a01b03881660248201528615156044820152738fa675f2b526c3e738536b33a2589dfcc077a250906375fa56f290606401600060405180830381865af4158015620000cf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620000f99190810190620007bb565b60036200010783826200091f565b5060046200011682826200091f565b50506001600555506200012933620005af565b6001600160a01b0386166200016b5760405162461bcd60e51b815260206004820152600360248201526216905160ea1b60448201526064015b60405180910390fd5b84801562000177575083155b806200018a57508380156200018a575084155b620001be5760405162461bcd60e51b81526020600482015260036024820152624d535360e81b604482015260640162000162565b336080526001600160a01b03861660a081905260408051630dfe168160e01b81529051630dfe1681916004808201926020929091908290030181865afa1580156200020d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002339190620009eb565b6001600160a01b031660c0816001600160a01b031681525050856001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200028b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b19190620009eb565b6001600160a01b031660e0528415156101005283151561012052600f805463ffffffff191663ffffffff8416179055620002ed60048362000a1f565b600f805463ffffffff929092166401000000000263ffffffff60201b199092169190911790556200031e8362000601565b62000333670de0b6b3a764000060c862000680565b600e55600019600c819055600d55600780546001600160a01b0319908116909155600880548216905560098054909116905560c05160805160408051637445c8f560e11b815290516001600160a01b039384169363095ea7b393169163e88b91ea9160048281019260209291908290030181865afa158015620003ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e09190620009eb565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260001960248201526044016020604051808303816000875af11580156200042f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000455919062000a45565b5060e0516001600160a01b031663095ea7b36080516001600160a01b031663e88b91ea6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ce9190620009eb565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260001960248201526044016020604051808303816000875af11580156200051d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000543919062000a45565b5060408051861515815285151560208201526001600160a01b038581168284015263ffffffff8516606083015291519188169133917f3e708ccf7d0e6de8558e020ea36189511cb3435bbfec54e721a48ee4df0d4f8c919081900360800190a350505050505062000a7a565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6200060b62000695565b6001600160a01b038116620006725760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000162565b6200067d81620005af565b50565b60006200068e828462000a63565b9392505050565b6006546001600160a01b03163314620006f15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000162565b565b80516001600160a01b03811681146200070b57600080fd5b919050565b805180151581146200070b57600080fd5b60008060008060008060c087890312156200073b57600080fd5b6200074687620006f3565b9550620007566020880162000710565b9450620007666040880162000710565b93506200077660608801620006f3565b9250608087015163ffffffff811681146200079057600080fd5b8092505060a087015190509295509295509295565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215620007cf57600080fd5b82516001600160401b0380821115620007e757600080fd5b818501915085601f830112620007fc57600080fd5b815181811115620008115762000811620007a5565b604051601f8201601f19908116603f011681019083821181831017156200083c576200083c620007a5565b8160405282815288868487010111156200085557600080fd5b600093505b828410156200087957848401860151818501870152928501926200085a565b600086848301015280965050505050505092915050565b600181811c90821680620008a557607f821691505b602082108103620008c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200091a57600081815260208120601f850160051c81016020861015620008f55750805b601f850160051c820191505b81811015620009165782815560010162000901565b5050505b505050565b81516001600160401b038111156200093b576200093b620007a5565b62000953816200094c845462000890565b84620008cc565b602080601f8311600181146200098b5760008415620009725750858301515b600019600386901b1c1916600185901b17855562000916565b600085815260208120601f198616915b82811015620009bc578886015182559484019460019091019084016200099b565b5085821015620009db5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620009fe57600080fd5b6200068e82620006f3565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff8084168062000a395762000a3962000a09565b92169190910492915050565b60006020828403121562000a5857600080fd5b6200068e8262000710565b60008262000a755762000a7562000a09565b500490565b60805160a05160c05160e051610100516101205161516062000c3d600039600081816104d401526112920152600081816105b601526112480152600081816106de015281816109c401528181610a4201528181610e4d01528181610f4d0152818161138101528181611409015281816114a501528181611609015281816118e501528181611d7401528181611efd01528181613b3b01528181613c1e01528181613e8d01528181613ecb01526143410152600081816104110152818161091d01528181610a0801528181610e0b01528181610eb601528181611360015281816113e701528181611484015281816115ce0152818161184d01528181611cde01528181611e7d01528181613aa401528181613bc101528181613dcd01528181613e0b015261431201526000818161044001528181610b0601528181610da2015281816113c5015281816114630152818161194f015281816119f801528181611bcc01528181611fba01528181613105015281816131a401528181613471015261447501526000818161073c0152818161288701528181613978015281816139fe01528181613c6101528181613cf60152818161412a015261469f01526151606000f3fe608060405234801561001057600080fd5b506004361061035c5760003560e01c80637aea5309116101d3578063c879657211610104578063dd81fa63116100a2578063f2fde38b1161007c578063f2fde38b1461078d578063f6207326146107a0578063f9c95d46146107b0578063fa082743146107c357600080fd5b8063dd81fa6314610737578063ddca3f431461075e578063e7bbf2b21461077a57600080fd5b8063d2eabcfc116100de578063d2eabcfc14610700578063d87346aa14610708578063d940d7681461071b578063dd62ed3e1461072457600080fd5b8063c8796572146106c9578063d0c93a7c146106d1578063d21220a7146106d957600080fd5b806391563d3211610171578063a457c2d71161014b578063a457c2d71461068c578063a9059cbb1461069f578063aaf5eb68146106b2578063c4a7761e146106c157600080fd5b806391563d321461062a57806395d89b4114610657578063a049de6b1461065f57600080fd5b8063888a9134116101ad578063888a9134146105eb578063897f078c146105f35780638da5cb5b146106065780638dbdbe6d1461061757600080fd5b80637aea5309146105a85780637f7a1eec146105b157806381de128b146105d857600080fd5b8063313ce567116102ad5780634d461fbb1161024b578063648cab8511610225578063648cab851461056657806370a082311461056f57806370bb45b314610598578063715018a6146105a057600080fd5b80634d461fbb1461054257806351e87af71461054b5780635ffc1ff71461055357600080fd5b8063395093511161028757806339509351146104f65780633e091ee914610509578063400f0ceb1461051c57806345e05f431461052f57600080fd5b8063313ce567146104b85780633505b09f146104c757806337e41b40146104cf57600080fd5b80630f35bcac1161031a57806322401d7c116102f457806322401d7c1461047457806323b872dd1461047d5780632bbb56d9146104905780632c8958f6146104a557600080fd5b80630f35bcac1461043357806316f0115b1461043b57806318160ddd1461046257600080fd5b8062f714ce1461036157806302eec5681461038e578063065e5360146103b957806306fdde03146103d4578063095ea7b3146103e95780630dfe16811461040c575b600080fd5b61037461036f3660046147ae565b6107cb565b604080519283526020830191909152015b60405180910390f35b6009546103a1906001600160a01b031681565b6040516001600160a01b039091168152602001610385565b6103c1610aff565b60405160029190910b8152602001610385565b6103dc610bc7565b604051610385919061482e565b6103fc6103f7366004614841565b610c59565b6040519015158152602001610385565b6103a17f000000000000000000000000000000000000000000000000000000000000000081565b6103c1610c73565b6103a17f000000000000000000000000000000000000000000000000000000000000000081565b6002545b604051908152602001610385565b610466600b5481565b6103fc61048b36600461486d565b610d12565b6104a361049e3660046148ae565b610d38565b005b6104a36104b33660046148cb565b610d97565b60405160128152602001610385565b6104a3610e7a565b6103fc7f000000000000000000000000000000000000000000000000000000000000000081565b6103fc610504366004614841565b610fbe565b6104a361051736600461494b565b610fe0565b6104a361052a36600461496d565b611031565b6008546103a1906001600160a01b031681565b610466600d5481565b6103c161109d565b6104a3610561366004614993565b61113c565b610466600c5481565b61046661057d3660046148ae565b6001600160a01b031660009081526020819052604090205490565b6104a361117b565b6104a36111b5565b610466600e5481565b6103fc7f000000000000000000000000000000000000000000000000000000000000000081565b6104a36105e63660046148ae565b6111c7565b6103c16111f1565b6007546103a1906001600160a01b031681565b6006546001600160a01b03166103a1565b6104666106253660046149ac565b61123c565b600f5461064290640100000000900463ffffffff1681565b60405163ffffffff9091168152602001610385565b6103dc611742565b610667611751565b604080516001600160801b039094168452602084019290925290820152606001610385565b6103fc61069a366004614841565b61176c565b6103fc6106ad366004614841565b6117f2565b610466670de0b6b3a764000081565b610374611800565b61037461191e565b6103c161194b565b6103a17f000000000000000000000000000000000000000000000000000000000000000081565b6106676119d4565b6104a36107163660046149f4565b6119e4565b610466600a5481565b610466610732366004614a58565b611f8b565b6103a17f000000000000000000000000000000000000000000000000000000000000000081565b610766611fb6565b60405162ffffff9091168152602001610385565b6104a36107883660046148ae565b612048565b6104a361079b3660046148ae565b6120a0565b600f546106429063ffffffff1681565b6104a36107be36600461496d565b612119565b6103c16121ac565b6000806107d66121f7565b600084116108115760405162461bcd60e51b81526020600482015260036024820152620aeb4960eb1b60448201526064015b60405180910390fd5b6001600160a01b03831661084d5760405162461bcd60e51b815260206004820152600360248201526216905160ea1b6044820152606401610808565b600061085860025490565b905080851480610873575061086f856103e8612250565b8110155b6108a55760405162461bcd60e51b8152602060048201526003602482015262574d5360e81b6044820152606401610808565b6108af600161225c565b5050600080600080600a546000146108d5576108cf600a548a878b612348565b90945092505b600b54156108f1576108eb600b548a878b612348565b90925090505b6040516370a0823160e01b815230600482015260009061099590879061098f908d906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109899190614a86565b906125ad565b906125b9565b6040516370a0823160e01b81523060048201529091506000906109f390889061098f908e906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401610948565b90508115610a2f57610a2f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168b846125c5565b8015610a6957610a696001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168b836125c5565b610a7d82610a778887612250565b90612250565b9850610a8d81610a778786612250565b9750610a99338c61262d565b604080518c8152602081018b90529081018990526001600160a01b038b169033907febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f9060600160405180910390a350505050505050610af86001600555565b9250929050565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e76c01e46040518163ffffffff1660e01b815260040160c060405180830381865afa158015610b62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b869190614ad1565b955050505092505080610bc15760405162461bcd60e51b815260206004820152600360248201526214125360ea1b6044820152606401610808565b50919050565b606060038054610bd690614b52565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0290614b52565b8015610c4f5780601f10610c2457610100808354040283529160200191610c4f565b820191906000526020600020905b815481529060010190602001808311610c3257829003601f168201915b5050505050905090565b600033610c6781858561275f565b60019150505b92915050565b6000600b54600003610c855750600090565b6000610c8f612883565b6001600160a01b03166399fbab88600b546040518263ffffffff1660e01b8152600401610cbe91815260200190565b61018060405180830381865afa158015610cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d009190614ba8565b50939c9b505050505050505050505050565b600033610d20858285612907565b610d2b85858561297b565b60019150505b9392505050565b610d40612b1f565b600880546001600160a01b0319166001600160a01b03831690811790915560405190815233907f3066ef5dd340e8b2ea28d62f5a8391eb7a82d3ee87532724a1ca4386d34f7523906020015b60405180910390a250565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610df55760405162461bcd60e51b815260206004820152600360248201526231b11960e91b6044820152606401610808565b6000841315610e3757610e326001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633866125c5565b610e74565b6000831315610e7457610e746001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633856125c5565b50505050565b610e82612b1f565b6000610e8c612883565b60405163095ea7b360e01b81526001600160a01b03808316600483015260001960248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303816000875af1158015610f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f259190614c88565b5060405163095ea7b360e01b81526001600160a01b03828116600483015260001960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af1158015610f96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fba9190614c88565b5050565b600033610c67818585610fd18383611f8b565b610fdb9190614cb9565b61275f565b610fe8612b1f565b600c829055600d819055604080518381526020810183905233917fafd3b05a4086b378b6f291200a528d8aed8c5e0317af77436b001f1bec28821a910160405180910390a25050565b611039612b1f565b600f805467ffffffff00000000191664010000000063ffffffff8416908102919091179091556040805133815260208101929092527f39da19f5960a3f182ced1ff1853b7be54f37150799b3003a40bf4e0d4c740c8591015b60405180910390a150565b6000600b546000036110af5750600090565b60006110b9612883565b6001600160a01b03166399fbab88600b546040518263ffffffff1660e01b81526004016110e891815260200190565b61018060405180830381865afa158015611106573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112a9190614ba8565b50949c9b505050505050505050505050565b611144612b1f565b600e81905560405181815233907f529698f34660760dcb172def5c99d62e1b5b74b444df322e8f7da31f2bd0a86b90602001610d8c565b6111836121f7565b600a541561119657611196600a54612b5f565b600b54156111a9576111a9600b54612b5f565b6111b36001600555565b565b6111bd612db0565b6111b36000612e0a565b6111cf612b1f565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000600a546000036112035750600090565b600061120d612883565b6001600160a01b03166399fbab88600a546040518263ffffffff1660e01b8152600401610cbe91815260200190565b60006112466121f7565b7f000000000000000000000000000000000000000000000000000000000000000080156112735750600084115b80156112805750600c5484105b801561128a575082155b806112d457507f000000000000000000000000000000000000000000000000000000000000000080156112bd5750600083115b80156112ca5750600d5483105b80156112d4575083155b6113065760405162461bcd60e51b8152602060048201526003602482015262444e4160e81b6044820152606401610808565b6001600160a01b0382161580159061132757506001600160a01b0382163014155b6113595760405162461bcd60e51b815260206004820152600360248201526216905160ea1b6044820152606401610808565b60006113b67f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006113a8610aff565b670de0b6b3a7640000612e5c565b600f5490915060009061143d907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009063ffffffff16670de0b6b3a7640000612f60565b600f54909150600090640100000000900463ffffffff1661145e57816114e5565b6114e57f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000600f60049054906101000a900463ffffffff16670de0b6b3a7640000612f60565b9050738fa675f2b526c3e738536b33a2589dfcc077a250636672efe0848484600f60049054906101000a900463ffffffff16600e54611522613101565b6040516001600160e01b031960e089901b16815260048101969096526024860194909452604485019290925263ffffffff16606484015260848301526001600160a01b031660a482015260c40160006040518083038186803b15801561158757600080fd5b505af415801561159b573d6000803e3d6000fd5b505050506115a9600161225c565b50506000806115b6611800565b909250905088156115f6576115f66001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308c613261565b8715611631576116316001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308b613261565b60006116408686866000613299565b9050600061165a670de0b6b3a764000061098f8d856125ad565b90506116668a82612250565b975061167160025490565b156116ca5760006116858888886001613299565b9050600061169f670de0b6b3a764000061098f88856125ad565b90506116c16116ae8287612250565b61098f6116ba60025490565b8d906125ad565b995050506116d9565b6116d6886103e86125ad565b97505b6116e38989613303565b60408051898152602081018d90529081018b90526001600160a01b038a169033907f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f69060600160405180910390a350505050505050610d316001600555565b606060048054610bd690614b52565b6000806000611761600b546133c2565b925092509250909192565b6000338161177a8286611f8b565b9050838110156117da5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610808565b6117e7828686840361275f565b506001949350505050565b600033610c6781858561297b565b60008060008061180e6119d4565b925092505060008061181e611751565b6040516370a0823160e01b815230600482015291945092506118b991508390610a779087906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015611895573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a779190614a86565b6040516370a0823160e01b8152306004820152909650611914908290610a779086906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401611878565b9450505050509091565b6000806119296121f7565b600080611936600161225c565b909450925050506119476001600555565b9091565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119cf9190614ccc565b905090565b6000806000611761600a546133c2565b6119ec6121f7565b6119f4612b1f565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a789190614ccc565b90508460020b8660020b128015611a995750611a948187614cff565b60020b155b8015611aaf5750611aaa8186614cff565b60020b155b611ae15760405162461bcd60e51b815260206004820152600360248201526242504960e81b6044820152606401610808565b8260020b8460020b128015611b005750611afb8185614cff565b60020b155b8015611b165750611b118184614cff565b60020b155b611b485760405162461bcd60e51b81526020600482015260036024820152624c504960e81b6044820152606401610808565b8360020b8660020b141580611b6357508260020b8560020b14155b611b955760405162461bcd60e51b815260206004820152600360248201526204949560ec1b6044820152606401610808565b600080611ba2600061225c565b91509150611bb1600a546136b7565b611bbc600b546136b7565b8315611cc6576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663128acb08306000871380611c0957611c0488614d21565b611c0b565b875b60008913611c3757611c32600173fffd8963efd1fc6a506488495d951d5263988d26614d3d565b611c47565b611c476401000276a36001614d64565b60408051306020820152016040516020818303038152906040526040518663ffffffff1660e01b8152600401611c81959493929190614d84565b60408051808303816000875af1158015611c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc39190614dbf565b50505b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611d2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d519190614a86565b6040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015611dbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddf9190614a86565b90507fbc4c20ad04f161d631d9ce94d27659391196415aa3c42f6a71c62e905ece782d611e0a610aff565b83838787611e1760025490565b6040805160029790970b87526020870195909552938501929092526060840152608083015260a082015260c00160405180910390a1611e588a8a848461388a565b6040516370a0823160e01b8152306004820152611f7590899089906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015611ec4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee89190614a86565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611f4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f709190614a86565b61389f565b5050505050611f846001600555565b5050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e76c01e46040518163ffffffff1660e01b815260040160c060405180830381865afa158015612016573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203a9190614ad1565b50505061ffff169392505050565b612050612b1f565b600980546001600160a01b0319166001600160a01b03831690811790915560405190815233907f52879d117cfbdc2394606bb3ec87af61be311fea7f1fe0ad192d4058ed7d18fa90602001610d8c565b6120a8612db0565b6001600160a01b03811661210d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610808565b61211681612e0a565b50565b612121612b1f565b60008163ffffffff161161215d5760405162461bcd60e51b815260206004820152600360248201526226a82960e91b6044820152606401610808565b600f805463ffffffff191663ffffffff83169081179091556040805133815260208101929092527fe4c60f4984caeb7f45b0cfe6d4233c115601ab11d141bc2cbf68b48346cdef389101611092565b6000600a546000036121be5750600090565b60006121c8612883565b6001600160a01b03166399fbab88600a546040518263ffffffff1660e01b81526004016110e891815260200190565b6002600554036122495760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610808565b6002600555565b6000610d318284614cb9565b600a546000908190156122a257612274600a54612b5f565b600080612282600a546138b4565b90925090506122918483612250565b935061229d8382612250565b925050505b600b54156122e3576122b5600b54612b5f565b6000806122c3600b546138b4565b90925090506122d28483612250565b93506122de8382612250565b925050505b60008211806122f25750600081115b15612343576123018282613974565b821561234357604080518381526020810183905233917fec8208dd791fa8ffdc0d7427f3ba9c0ed06f1bce9a86254e6940c10cc1802fef910160405180910390a25b915091565b6000806000806000612358612883565b6001600160a01b03166399fbab888a6040518263ffffffff1660e01b815260040161238591815260200190565b61018060405180830381865afa1580156123a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c79190614ba8565b9b509b505050995050505050505050816001600160801b031660001480156123f657506001600160801b038116155b6124285760405162461bcd60e51b815260206004820152600360248201526257544f60e81b6044820152606401610808565b60006124418861098f6001600160801b0387168c6125ad565b90506001600160801b038116156125a05761245a612883565b6001600160a01b0316630c49ccbe6040518060a001604052808d8152602001846001600160801b031681526020016000815260200160008152602001428152506040518263ffffffff1660e01b81526004016124b69190614de3565b60408051808303816000875af11580156124d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f89190614dbf565b9096509450612505612883565b604080516080810182528c81526001600160a01b038a811660208301526001600160801b03808b168385015289166060830152915163fc6f786560e01b8152929091169163fc6f78659161255b91600401614e26565b60408051808303816000875af1158015612579573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259d9190614dbf565b50505b5050505094509492505050565b6000610d318284614e69565b6000610d318284614e80565b6040516001600160a01b03831660248201526044810182905261262890849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613eff565b505050565b6001600160a01b03821661268d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610808565b6001600160a01b038216600090815260208190526040902054818110156127015760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610808565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b0383166127c15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610808565b6001600160a01b0382166128225760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610808565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e88b91ea6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119cf9190614e94565b60006129138484611f8b565b90506000198114610e74578181101561296e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610808565b610e74848484840361275f565b6001600160a01b0383166129df5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610808565b6001600160a01b038216612a415760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610808565b6001600160a01b03831660009081526020819052604090205481811015612ab95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610808565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610e74565b6006546001600160a01b031633146111b35760405162461bcd60e51b81526020600482015260036024820152624f4e4f60e81b6044820152606401610808565b80600003612b6a5750565b6000612b7582613fd4565b60408101519091506001600160a01b0316612b8e575050565b6009546000906001600160a01b0316612bb2576008546001600160a01b0316612bbf565b6009546001600160a01b03165b90506001600160a01b038116612bd457505050565b600080612bdf614126565b6001600160a01b0316636af00aee85876040518363ffffffff1660e01b8152600401612c0c929190614eb1565b60408051808303816000875af1158015612c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c4e9190614dbf565b90925090508115612ce057612c61614126565b8451604051632f2d783d60e01b81526001600160a01b039182166004820152858216602482015260448101859052911690632f2d783d906064016020604051808303816000875af1158015612cba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cde9190614a86565b505b8015612d7057612cee614126565b6020850151604051632f2d783d60e01b81526001600160a01b039182166004820152858216602482015260448101849052911690632f2d783d906064016020604051808303816000875af1158015612d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6e9190614a86565b505b60408051838152602081018390527f86116443bd63d647e9aa2e093f847ef30ee2a359ffcba4bdf4bb7eb0929cce8b910160405180910390a15050505050565b6006546001600160a01b031633146111b35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610808565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000738fa675f2b526c3e738536b33a2589dfcc077a2506343c57a2784738fa675f2b526c3e738536b33a2589dfcc077a25063809fdd33866040518263ffffffff1660e01b8152600401612eb291815260200190565b602060405180830381865af4158015612ecf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef39190614ef1565b88886040518563ffffffff1660e01b8152600401612f149493929190614f0c565b602060405180830381865af4158015612f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f559190614a86565b90505b949350505050565b600080612f6b613101565b604051638241348960e01b81526001600160a01b038216600482015263ffffffff86166024820152909150600090738fa675f2b526c3e738536b33a2589dfcc077a25090638241348990604401602060405180830381865af4158015612fd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ff99190614ccc565b60020b9050738fa675f2b526c3e738536b33a2589dfcc077a2506343c57a2782738fa675f2b526c3e738536b33a2589dfcc077a25063809fdd33886040518263ffffffff1660e01b815260040161305291815260200190565b602060405180830381865af415801561306f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130939190614ef1565b8a8a6040518563ffffffff1660e01b81526004016130b49493929190614f0c565b602060405180830381865af41580156130d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130f59190614a86565b98975050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ef01df4f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131859190614e94565b6040516330ea6ca760e11b81526001600160a01b0380831660048301527f0000000000000000000000000000000000000000000000000000000000000000166024820152909150738fa675f2b526c3e738536b33a2589dfcc077a250906361d4d94e90604401602060405180830381865af4158015613208573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061322c9190614c88565b61325e5760405162461bcd60e51b815260206004820152600360248201526204144560ec1b6044820152606401610808565b90565b6040516001600160a01b0380851660248301528316604482015260648101829052610e749085906323b872dd60e01b906084016125f1565b600081156132d6576132ab8585614186565b600f54909150640100000000900463ffffffff16156132d1576132ce8184614186565b90505b612f58565b6132e08585614195565b600f54909150640100000000900463ffffffff1615612f5857612f558184614195565b6001600160a01b0382166133595760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610808565b806002600082825461336b9190614cb9565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6000806000836000036133dd575060009150819050806136b0565b60008060008060006133ed612883565b6001600160a01b03166399fbab888a6040518263ffffffff1660e01b815260040161341a91815260200190565b61018060405180830381865afa158015613438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061345c9190614ba8565b9b509b505050995099509950505050505060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e76c01e46040518163ffffffff1660e01b815260040160c060405180830381865afa1580156134cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134f19190614ad1565b505060405163986cfba360e01b815260028b900b6004820152939450738fa675f2b526c3e738536b33a2589dfcc077a2509363c72e160b935085925084915063986cfba390602401602060405180830381865af4158015613556573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061357a9190614e94565b60405163986cfba360e01b815260028a900b6004820152738fa675f2b526c3e738536b33a2589dfcc077a2509063986cfba390602401602060405180830381865af41580156135cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135f19190614e94565b60405160e085901b6001600160e01b03191681526001600160a01b039384166004820152918316602483015290911660448201526001600160801b03871660648201526084016040805180830381865af4158015613653573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136779190614dbf565b909850965061368f886001600160801b038516612250565b97506136a4876001600160801b038416612250565b96508398505050505050505b9193909250565b80156121165760006136c8826141ab565b90506001600160801b03811615613782576136e1612883565b6001600160a01b0316630c49ccbe6040518060a00160405280858152602001846001600160801b031681526020016000815260200160008152602001428152506040518263ffffffff1660e01b815260040161373d9190614de3565b60408051808303816000875af115801561375b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377f9190614dbf565b50505b61378a612883565b604080516080810182528481523060208201526001600160801b038183018190526060820152905163fc6f786560e01b81526001600160a01b03929092169163fc6f7865916137db91600401614e26565b60408051808303816000875af11580156137f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381d9190614dbf565b5050613827612883565b6001600160a01b03166342966c68836040518263ffffffff1660e01b815260040161385491815260200190565b600060405180830381600087803b15801561386e57600080fd5b505af1158015613882573d6000803e3d6000fd5b505050505050565b61389684848484614249565b600a5550505050565b6138ab84848484614249565b600b5550505050565b600080826000036138ca57506000928392509050565b6000806138d5612883565b604080516080810182528781523060208201526001600160801b038183018190526060820152905163fc6f786560e01b81526001600160a01b03929092169163fc6f78659161392691600401614e26565b60408051808303816000875af1158015613944573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139689190614dbf565b90969095509350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663665a17c56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f89190614a86565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636ef25c3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a7e9190614a86565b6040516370a0823160e01b8152306004820152909150613b159085906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015613aec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b109190614a86565b614195565b6040516370a0823160e01b8152306004820152909450613b6a9084906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401613acf565b9250600082118015613b8657506007546001600160a01b031615155b15613c45578315613be857600754613be8906001600160a01b0316613bb7670de0b6b3a764000061098f88876125ad565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691906125c5565b8215613c4557600754613c45906001600160a01b0316613c14670de0b6b3a764000061098f87876125ad565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691906125c5565b8015610e74576008546000906001600160a01b031615613ce6577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663acc8247d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ce19190614a86565b613cf0565b670de0b6b3a76400005b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663469048406040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d769190614e94565b90508515613e38576000613d96670de0b6b3a764000061098f89876125ad565b90506000613db0670de0b6b3a764000061098f84876125ad565b90506000613dbe8383614436565b9050613df46001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001685846125c5565b8015613e3457600854613e34906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169116836125c5565b5050505b8415613882576000613e56670de0b6b3a764000061098f88876125ad565b90506000613e70670de0b6b3a764000061098f84876125ad565b90506000613e7e8383614436565b9050613eb46001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001685846125c5565b8015613ef457600854613ef4906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169116836125c5565b505050505050505050565b6000613f54826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166144429092919063ffffffff16565b9050805160001480613f75575080806020019051810190613f759190614c88565b6126285760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610808565b604080516080810182526000808252602082018190529181018290526060810182905290614000614126565b6001600160a01b031663b02c43d0846040518263ffffffff1660e01b815260040161402d91815260200190565b602060405180830381865afa15801561404a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061406e9190614a86565b905060008060008061407e614126565b6001600160a01b0316638c27f1f6866040518263ffffffff1660e01b81526004016140ab91815260200190565b608060405180830381865afa1580156140c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140ec9190614f41565b604080516080810182526001600160a01b039586168152938516602085015291909316908201526060810191909152979650505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dd56e5d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128e3573d6000803e3d6000fd5b6000818310610bc15782610d31565b60008183106141a45781610d31565b5090919050565b6000816000036141bd57506000919050565b60006141c7612883565b6001600160a01b03166399fbab88846040518263ffffffff1660e01b81526004016141f491815260200190565b61018060405180830381865afa158015614212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142369190614ba8565b50929d9c50505050505050505050505050565b600082158015614257575081155b1561426457506000612f58565b600061426e610aff565b90508560020b8160020b1215801561428b57508460020b8160020b125b156142af5783158061429b575082155b156142aa576000915050612f58565b6142ee565b8560020b8160020b12156142cf57836000036142aa576000915050612f58565b8460020b8160020b126142ee57826000036142ee576000915050612f58565b6142f6612883565b6001600160a01b031663fe3f3be76040518061016001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316815260200160006001600160a01b031681526020018960020b81526020018860020b81526020018781526020018681526020016000815260200160008152602001306001600160a01b03168152602001428152506040518263ffffffff1660e01b81526004016143d99190614f94565b6080604051808303816000875af11580156143f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061441c919061505c565b5091935061442d9150839050614451565b50949350505050565b6000610d318284615098565b6060612f5884846000856145c0565b600061445b61469b565b604051600162964af760e01b031981526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152919091169063ff69b50990602401608060405180830381865afa1580156144c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144ea91906150ab565b60408101519091506001600160a01b0316614503575050565b61450b612883565b6001600160a01b031663832f630a836001614524614126565b6040516001600160e01b031960e086901b168152600481019390935290151560248301526001600160a01b03166044820152606401600060405180830381600087803b15801561457357600080fd5b505af1158015614587573d6000803e3d6000fd5b50505050614593614126565b6001600160a01b0316635739f0b982846040518363ffffffff1660e01b8152600401613854929190614eb1565b6060824710156146215760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610808565b600080866001600160a01b0316858760405161463d9190615137565b60006040518083038185875af1925050503d806000811461467a576040519150601f19603f3d011682016040523d82523d6000602084013e61467f565b606091505b5091509150614690878383876146fb565b979650505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f9d5111c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128e3573d6000803e3d6000fd5b6060831561476a578251600003614763576001600160a01b0385163b6147635760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610808565b5081612f58565b612f58838381511561477f5781518083602001fd5b8060405162461bcd60e51b8152600401610808919061482e565b6001600160a01b038116811461211657600080fd5b600080604083850312156147c157600080fd5b8235915060208301356147d381614799565b809150509250929050565b60005b838110156147f95781810151838201526020016147e1565b50506000910152565b6000815180845261481a8160208601602086016147de565b601f01601f19169290920160200192915050565b602081526000610d316020830184614802565b6000806040838503121561485457600080fd5b823561485f81614799565b946020939093013593505050565b60008060006060848603121561488257600080fd5b833561488d81614799565b9250602084013561489d81614799565b929592945050506040919091013590565b6000602082840312156148c057600080fd5b8135610d3181614799565b600080600080606085870312156148e157600080fd5b8435935060208501359250604085013567ffffffffffffffff8082111561490757600080fd5b818701915087601f83011261491b57600080fd5b81358181111561492a57600080fd5b88602082850101111561493c57600080fd5b95989497505060200194505050565b6000806040838503121561495e57600080fd5b50508035926020909101359150565b60006020828403121561497f57600080fd5b813563ffffffff81168114610d3157600080fd5b6000602082840312156149a557600080fd5b5035919050565b6000806000606084860312156149c157600080fd5b833592506020840135915060408401356149da81614799565b809150509250925092565b8060020b811461211657600080fd5b600080600080600060a08688031215614a0c57600080fd5b8535614a17816149e5565b94506020860135614a27816149e5565b93506040860135614a37816149e5565b92506060860135614a47816149e5565b949793965091946080013592915050565b60008060408385031215614a6b57600080fd5b8235614a7681614799565b915060208301356147d381614799565b600060208284031215614a9857600080fd5b5051919050565b8051614aaa816149e5565b919050565b805161ffff81168114614aaa57600080fd5b80518015158114614aaa57600080fd5b60008060008060008060c08789031215614aea57600080fd5b8651614af581614799565b6020880151909650614b06816149e5565b9450614b1460408801614aaf565b9350606087015160ff81168114614b2a57600080fd5b9250614b3860808801614aaf565b9150614b4660a08801614ac1565b90509295509295509295565b600181811c90821680614b6657607f821691505b602082108103610bc157634e487b7160e01b600052602260045260246000fd5b8051614aaa81614799565b80516001600160801b0381168114614aaa57600080fd5b6000806000806000806000806000806000806101808d8f031215614bcb57600080fd5b8c516affffffffffffffffffffff81168114614be657600080fd5b9b50614bf460208e01614b86565b9a50614c0260408e01614b86565b9950614c1060608e01614b86565b9850614c1e60808e01614b86565b9750614c2c60a08e01614a9f565b9650614c3a60c08e01614a9f565b9550614c4860e08e01614b91565b94506101008d015193506101208d01519250614c676101408e01614b91565b9150614c766101608e01614b91565b90509295989b509295989b509295989b565b600060208284031215614c9a57600080fd5b610d3182614ac1565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c6d57610c6d614ca3565b600060208284031215614cde57600080fd5b8151610d31816149e5565b634e487b7160e01b600052601260045260246000fd5b60008260020b80614d1257614d12614ce9565b808360020b0791505092915050565b6000600160ff1b8201614d3657614d36614ca3565b5060000390565b6001600160a01b03828116828216039080821115614d5d57614d5d614ca3565b5092915050565b6001600160a01b03818116838216019080821115614d5d57614d5d614ca3565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a06080820181905260009061469090830184614802565b60008060408385031215614dd257600080fd5b505080516020909101519092909150565b600060a082019050825182526001600160801b03602084015116602083015260408301516040830152606083015160608301526080830151608083015292915050565b815181526020808301516001600160a01b0316908201526040808301516001600160801b0390811691830191909152606092830151169181019190915260800190565b8082028115828204841417610c6d57610c6d614ca3565b600082614e8f57614e8f614ce9565b500490565b600060208284031215614ea657600080fd5b8151610d3181614799565b82516001600160a01b0390811682526020808501518216908301526040808501519091169082015260609283015192810192909252608082015260a00190565b600060208284031215614f0357600080fd5b610d3182614b91565b60029490940b84526001600160801b039290921660208401526001600160a01b03908116604084015216606082015260800190565b60008060008060808587031215614f5757600080fd5b8451614f6281614799565b6020860151909450614f7381614799565b6040860151909350614f8481614799565b6060959095015193969295505050565b81516001600160a01b0316815261016081016020830151614fc060208401826001600160a01b03169052565b506040830151614fdb60408401826001600160a01b03169052565b506060830151614ff0606084018260020b9052565b506080830151615005608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e08301526101008084015181840152506101208084015161504b828501826001600160a01b03169052565b505061014092830151919092015290565b6000806000806080858703121561507257600080fd5b8451935061508260208601614b91565b6040860151606090960151949790965092505050565b81810381811115610c6d57610c6d614ca3565b6000608082840312156150bd57600080fd5b6040516080810181811067ffffffffffffffff821117156150ee57634e487b7160e01b600052604160045260246000fd5b60405282516150fc81614799565b8152602083015161510c81614799565b6020820152604083015161511f81614799565b60408201526060928301519281019290925250919050565b600082516151498184602087016147de565b919091019291505056fea164736f6c6343000814000a0000000000000000000000009ea0f51fd2133d995cf00229bc523737415ad3180000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005cc3ca6e768a68a7f86b09e3cee754437bd5f120000000000000000000000000000000000000000000000000000000000000e10000000000000000000000000000000000000000000000000000000000000000b