0 txs
0 calls
constructor
constructor()
functions
borrowTargetFactorNumerator
viewfunction borrowTargetFactorNumerator() view returns (uint256)
bVault
viewfunction bVault() view returns (address)
collateralFactorNumerator
viewfunction collateralFactorNumerator() view returns (uint256)
comptroller
viewfunction comptroller() view returns (address)
controller
viewfunction controller() view returns (address)
cToken
viewfunction cToken() view returns (address)
depositArbCheck
purefunction depositArbCheck() pure returns (bool)
factorDenominator
viewfunction factorDenominator() view returns (uint256)
feeDenominator
viewfunction feeDenominator() view returns (uint256)
fold
viewfunction fold() view returns (bool)
governance
viewfunction governance() view returns (address)
harvestMSIG
viewfunction harvestMSIG() view returns (address)
investedUnderlyingBalance
viewfunction investedUnderlyingBalance() view returns (uint256)
nextImplementation
viewfunction nextImplementation() view returns (address)
nextImplementationDelay
viewfunction nextImplementationDelay() view returns (uint256)
nextImplementationTimestamp
viewfunction nextImplementationTimestamp() view returns (uint256)
pausedInvesting
viewfunction pausedInvesting() view returns (bool)
pendingFee
viewfunction pendingFee() view returns (uint256)
platformFeeNumerator
viewfunction platformFeeNumerator() view returns (uint256)
profitSharingNumerator
viewfunction profitSharingNumerator() view returns (uint256)
rewardPool
viewfunction rewardPool() view returns (address)
rewardToken
viewfunction rewardToken() view returns (address)
rewardTokens
viewfunction rewardTokens(uint256) view returns (address)
sell
viewfunction sell() view returns (bool)
shouldUpgrade
viewfunction shouldUpgrade() view returns (bool, address)
storedBalance
viewfunction storedBalance() view returns (uint256)
strategist
viewfunction strategist() view returns (address)
strategistFeeNumerator
viewfunction strategistFeeNumerator() view returns (uint256)
totalFeeNumerator
viewfunction totalFeeNumerator() view returns (uint256)
underlying
viewfunction underlying() view returns (address)
universalLiquidator
viewfunction universalLiquidator() view returns (address)
unsalvagableTokens
viewfunction unsalvagableTokens(address token) view returns (bool)
vault
viewfunction vault() view returns (address)
_setCollateralFactorNumerator
nonpayablefunction _setCollateralFactorNumerator(uint256 _numerator)
addRewardToken
nonpayablefunction addRewardToken(address _token)
continueInvesting
nonpayablefunction continueInvesting()
currentBalance
nonpayablefunction currentBalance() returns (uint256)
doHardWork
nonpayablefunction doHardWork()
emergencyExit
nonpayablefunction emergencyExit()
finalizeUpgrade
nonpayablefunction finalizeUpgrade()
initialize
nonpayablefunction initialize()
initialize
nonpayablefunction initialize(address _storage, address _underlying, address _vault, address _rewardPool, address _rewardToken, address _strategist)
initialize
nonpayablefunction initialize(address _storage)
initializeBaseStrategy
nonpayablefunction initializeBaseStrategy(address _storage, address _underlying, address _vault, address _cToken, address _comptroller, address _rewardToken, uint256 _borrowTargetFactorNumerator, uint256 _collateralFactorNumerator, uint256 _factorDenominator, bool _fold)
initializeStrategy
nonpayablefunction initializeStrategy(address _storage, address _vault)
receiveFlashLoan
nonpayablefunction receiveFlashLoan(address[], uint256[] amounts, uint256[] feeAmounts, bytes)
salvage
nonpayablefunction salvage(address recipient, address token, uint256 amount)
scheduleUpgrade
nonpayablefunction scheduleUpgrade(address impl)
setBorrowTargetFactorNumerator
nonpayablefunction setBorrowTargetFactorNumerator(uint256 _numerator)
setFold
nonpayablefunction setFold(bool _fold)
setStorage
nonpayablefunction setStorage(address _store)
toggleMerklOperator
nonpayablefunction toggleMerklOperator(address merklClaim, address operator)
withdrawAllToVault
nonpayablefunction withdrawAllToVault()
withdrawToVault
nonpayablefunction withdrawToVault(uint256 amountUnderlying)
events
PlatformFeeLogInReward
event PlatformFeeLogInReward(address indexed treasury, address indexed rewardToken, uint256 profitAmount, uint256 feeAmount, uint256 timestamp)
ProfitLogInReward
event ProfitLogInReward(address indexed rewardToken, uint256 profitAmount, uint256 feeAmount, uint256 timestamp)
ProfitLogInReward
event ProfitLogInReward(uint256 profitAmount, uint256 feeAmount, uint256 timestamp)
ProfitsNotCollected
event ProfitsNotCollected(address indexed rewardToken, bool sell, bool floor)
ProfitsNotCollected
event ProfitsNotCollected(bool sell, bool floor)
StrategistFeeLogInReward
event StrategistFeeLogInReward(address indexed strategist, address indexed rewardToken, uint256 profitAmount, uint256 feeAmount, uint256 timestamp)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b5061003c60017f62ae7bf2df4e95c187ea09c8c47c3fc3d9abc36298f5b5b6c5e2e7b4b291fe266107bc565b7f62ae7bf2df4e95c187ea09c8c47c3fc3d9abc36298f5b5b6c5e2e7b4b291fe251461006a5761006a6107e3565b61009560017fa7ec62784904ff31cbcc32d09932a58e7f1e4476e1d041995b37c917990b16dd6107bc565b7fa7ec62784904ff31cbcc32d09932a58e7f1e4476e1d041995b37c917990b16dc146100c3576100c36107e3565b6100ee60017fa1709211eeccf8f4ad5b6700d52a1a9525b5f5ae1e9e5f9e5a0c2fc23c86e5316107bc565b7fa1709211eeccf8f4ad5b6700d52a1a9525b5f5ae1e9e5f9e5a0c2fc23c86e5301461011c5761011c6107e3565b61014760017fefd7c7d9ef1040fc87e7ad11fe15f86e1d11e1df03c6d7c87f7e1f4041f08d426107bc565b7fefd7c7d9ef1040fc87e7ad11fe15f86e1d11e1df03c6d7c87f7e1f4041f08d4114610175576101756107e3565b6101a060017fdae0aafd977983cb1e78d8f638900ff361dc3c48c43118ca1dd77d1af3f47bc06107bc565b7fdae0aafd977983cb1e78d8f638900ff361dc3c48c43118ca1dd77d1af3f47bbf146101ce576101ce6107e3565b6101f960017f3d9bb16e77837e25cada0cf894835418b38e8e18fbec6cfd192eb344bebfa6b96107bc565b7f3d9bb16e77837e25cada0cf894835418b38e8e18fbec6cfd192eb344bebfa6b814610227576102276107e3565b61025260017f656de32df98753b07482576beb0d00a6b949ebf84c066c765f54f26725221bb76107bc565b7f656de32df98753b07482576beb0d00a6b949ebf84c066c765f54f26725221bb614610280576102806107e3565b6102ab60017fa07a20a2d463a602c2b891eb35f244624d9068572811f63d0e094072fb54591b6107bc565b7fa07a20a2d463a602c2b891eb35f244624d9068572811f63d0e094072fb54591a146102d9576102d96107e3565b61030460017fe3ee74fb7893020b457d8071ed1ef76ace2bf4903abd7b24d3ce312e9c72c02a6107bc565b7fe3ee74fb7893020b457d8071ed1ef76ace2bf4903abd7b24d3ce312e9c72c02914610332576103326107e3565b61035d60017f0286fd414602b432a8c80a0125e9a25de9bba96da9d5068c832ff73f09208a3c6107bc565b7f0286fd414602b432a8c80a0125e9a25de9bba96da9d5068c832ff73f09208a3b1461038b5761038b6107e3565b6103b660017f29f7fcd4fe2517c1963807a1ec27b0e45e67c60a874d5eeac7a0b1ab1bb844486107bc565b7f29f7fcd4fe2517c1963807a1ec27b0e45e67c60a874d5eeac7a0b1ab1bb84447146103e4576103e46107e3565b61040f60017f414c5263b05428f1be1bfa98e25407cc78dd031d0d3cd2a2e3d63b488804f22f6107bc565b7f414c5263b05428f1be1bfa98e25407cc78dd031d0d3cd2a2e3d63b488804f22e1461043d5761043d6107e3565b61046860017f82b330ca72bcd6db11a26f10ce47ebcfe574a9c646bccbc6f1cd4478eae16b326107bc565b7f82b330ca72bcd6db11a26f10ce47ebcfe574a9c646bccbc6f1cd4478eae16b3114610496576104966107e3565b6104c160017f6a7b588c950d46e2de3db2f157e5e0e4f29054c8d60f17bf0c30352e223a458e6107bc565b7f6a7b588c950d46e2de3db2f157e5e0e4f29054c8d60f17bf0c30352e223a458d146104ef576104ef6107e3565b61051a60017f316ad921d519813e6e41c0e056b79e4395192c2b101f8b61cf5b94999360d5696107bc565b7f316ad921d519813e6e41c0e056b79e4395192c2b101f8b61cf5b94999360d56814610548576105486107e3565b61057360017f21864471ca9d8b67bc7f58951fb160897ce623fdb405c56534d08a363a47e2366107bc565b7f21864471ca9d8b67bc7f58951fb160897ce623fdb405c56534d08a363a47e235146105a1576105a16107e3565b6105cc60017f280539da846b4989609abdccfea039bd1453e4f710c670b29b9eeaca0730c1a36107bc565b7f280539da846b4989609abdccfea039bd1453e4f710c670b29b9eeaca0730c1a2146105fa576105fa6107e3565b61062560017f0af7af9f5ccfa82c3497f40c7c382677637aee27293a6243a22216b51481bd986107bc565b7f0af7af9f5ccfa82c3497f40c7c382677637aee27293a6243a22216b51481bd9714610653576106536107e3565b61067e60017f129eccdfbcf3761d8e2f66393221fa8277b7623ad13ed7693a0025435931c64b6107bc565b7f129eccdfbcf3761d8e2f66393221fa8277b7623ad13ed7693a0025435931c64a146106ac576106ac6107e3565b6106d760017f4e92df66cc717205e8df80bec55fc1429f703d590a2d456b97b74f0008b4a3ef6107bc565b7f4e92df66cc717205e8df80bec55fc1429f703d590a2d456b97b74f0008b4a3ee14610705576107056107e3565b61073060017fa65533f4b41f3786d877c8fdd4ae6d27ada84e1d9c62ea3aca309e9aa03af1ce6107bc565b7fa65533f4b41f3786d877c8fdd4ae6d27ada84e1d9c62ea3aca309e9aa03af1cd1461075e5761075e6107e3565b61078960017f1841be4c16015a744c9fbf595f7c6b32d40278c16c1fc7cf2de88c6348de44bb6107bc565b7f1841be4c16015a744c9fbf595f7c6b32d40278c16c1fc7cf2de88c6348de44ba146107b7576107b76107e3565b6107f9565b818103818111156107dd57634e487b7160e01b600052601160045260246000fd5b92915050565b634e487b7160e01b600052600160045260246000fd5b6159b2806108086000396000f3fe6080604052600436106102695760003560e01c806303140ff41461027557806306974e8d1461029d57806309ff18f0146102bf5780630c80447a146102d45780631113ef52146102f6578063180b0d7e146103165780631c03e6cc1461032b5780631fe4a6861461034b57806320d1ceaf1461036057806320d88ac714610375578063394b71cf1461038a5780633f282b8d146103ac57806345710074146103cc57806345d01e4a146103f15780634d352ab2146104065780634ed65416146104265780634fa5d85414610446578063501859461461045b5780635641ec031461047b5780635aa6e675146104905780635fe3b567146104a5578063643090bc146104ba57806366666aa9146104cf57806369e527da146104e45780636f307dc3146104f9578063759098881461050e57806375f6d6ce146105235780637bb7bed1146105435780638129fc1c1461056357806382de9c1b146105785780639137c1a71461058d5780639a138d6d146105ad5780639a508c8e146105cd5780639d16acfd146105e2578063a836569314610616578063b5d7a94f1461062b578063b60f151a14610640578063b8d3370b14610655578063bfd131f11461066a578063c23ff8b61461067f578063c2a2a07b1461069f578063c4d66de8146106b3578063cc2a9a5b146106d3578063ce845d1d146106f3578063ce8c42e814610708578063d3df8aa414610728578063db6204851461073d578063e684f46a14610752578063e9eca99414610767578063ec0956061461077c578063f04f2707146107a4578063f77c4791146107c4578063f7c618c1146107d9578063fbfa77cf146107ee57600080fd5b3661027057005b600080fd5b34801561028157600080fd5b5061028a610803565b6040519081526020015b60405180910390f35b3480156102a957600080fd5b506102b2610873565b6040516102949190614db2565b3480156102cb57600080fd5b506102b26108de565b3480156102e057600080fd5b506102f46102ef366004614ddb565b6108f6565b005b34801561030257600080fd5b506102f4610311366004614df8565b6109b5565b34801561032257600080fd5b5061028a610abf565b34801561033757600080fd5b506102f4610346366004614ddb565b610b06565b34801561035757600080fd5b506102b2610be7565b34801561036c57600080fd5b5061028a610bff565b34801561038157600080fd5b5061028a610c46565b34801561039657600080fd5b506102b26000805160206158dd83398151915281565b3480156103b857600080fd5b506102f46103c7366004614e39565b610c5e565b3480156103d857600080fd5b506103e1610d70565b6040519015158152602001610294565b3480156103fd57600080fd5b5061028a610d89565b34801561041257600080fd5b506102f4610421366004614e52565b610e2b565b34801561043257600080fd5b506102f4610441366004614e99565b610f2c565b34801561045257600080fd5b506102f4611254565b34801561046757600080fd5b506103e1610476366004614ddb565b6112fc565b34801561048757600080fd5b506102f4611366565b34801561049c57600080fd5b506102b261140a565b3480156104b157600080fd5b506102b2611451565b3480156104c657600080fd5b5061028a611469565b3480156104db57600080fd5b506102b2611481565b3480156104f057600080fd5b506102b2611499565b34801561050557600080fd5b506102b26114b1565b34801561051a57600080fd5b5061028a6114c9565b34801561052f57600080fd5b506102f461053e366004614f4e565b6114e1565b34801561054f57600080fd5b506102b261055e366004614e39565b611589565b34801561056f57600080fd5b506102f46115b3565b34801561058457600080fd5b5061028a611642565b34801561059957600080fd5b506102f46105a8366004614ddb565b61165a565b3480156105b957600080fd5b506102f46105c8366004614e52565b611749565b3480156105d957600080fd5b506102f461183d565b3480156105ee57600080fd5b506105f76118d5565b6040805192151583526001600160a01b03909116602083015201610294565b34801561062257600080fd5b5061028a611921565b34801561063757600080fd5b5061028a611968565b34801561064c57600080fd5b5061028a611980565b34801561066157600080fd5b5061028a6119c7565b34801561067657600080fd5b506102f46119ed565b34801561068b57600080fd5b506102f461069a366004614e39565b611b21565b3480156106ab57600080fd5b5060016103e1565b3480156106bf57600080fd5b506102f46106ce366004614ddb565b611ca1565b3480156106df57600080fd5b506102f46106ee366004614f6b565b611d16565b3480156106ff57600080fd5b5061028a611dd2565b34801561071457600080fd5b506102f4610723366004614e39565b611ed7565b34801561073457600080fd5b506103e16120bb565b34801561074957600080fd5b506102f46120d4565b34801561075e57600080fd5b506103e161216e565b34801561077357600080fd5b5061028a612187565b34801561078857600080fd5b506102b273f3d1a027e858976634f81b7c41b09a05a46eda2181565b3480156107b057600080fd5b506102f46107bf366004615132565b61219f565b3480156107d057600080fd5b506102b2612421565b3480156107e557600080fd5b506102b2612468565b3480156107fa57600080fd5b506102b2612480565b600061080d612421565b6001600160a01b03166303140ff46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e9190615250565b905090565b600061087d612421565b6001600160a01b03166306974e8d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ba573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e9190615269565b600061086e60008051602061575d8339815191525490565b6108fe612498565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b81526004016109299190614db2565b602060405180830381865afa158015610946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096a9190615286565b61098f5760405162461bcd60e51b8152600401610986906152a3565b60405180910390fd5b610998816124ab565b6109b26109ad6109a6611921565b42906124c2565b6124d5565b50565b6109bd612498565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b81526004016109e89190614db2565b602060405180830381865afa158015610a05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a299190615286565b610a455760405162461bcd60e51b8152600401610986906152a3565b610a4e826112fc565b15610aa65760405162461bcd60e51b815260206004820152602260248201527f746f6b656e20697320646566696e6564206173206e6f742073616c76616761626044820152616c6560f01b6064820152608401610986565b610aba6001600160a01b03831684836124ec565b505050565b6000610ac9612421565b6001600160a01b031663180b0d7e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b610b0e612498565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b8152600401610b399190614db2565b602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a9190615286565b610b965760405162461bcd60e51b8152600401610986906152a3565b6001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0392909216919091179055565b600061086e60008051602061577d8339815191525490565b6000610c09612421565b6001600160a01b03166320d1ceaf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b600061086e60008051602061595d8339815191525490565b610c66612498565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b8152600401610c919190614db2565b602060405180830381865afa158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd29190615286565b610cee5760405162461bcd60e51b8152600401610986906152a3565b610cf6611968565b8110610d595760405162461bcd60e51b815260206004820152602c60248201527f5461726765742073686f756c64206265206c6f776572207468616e20636f6c6c60448201526b185d195c985b081b1a5b5a5d60a21b6064820152608401610986565b6109b260008051602061591d833981519152829055565b600061086e6000805160206156dd833981519152612542565b600080610d946114b1565b6001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401610dbf9190614db2565b602060405180830381865afa158015610ddc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e009190615250565b9050610e25610e0d611469565b610e1f610e18612187565b84906124c2565b90612555565b91505090565b600054610100900460ff1680610e44575060005460ff16155b610e605760405162461bcd60e51b8152600401610986906152cb565b600054610100900460ff16158015610e82576000805461ffff19166101011790555b732f2a2543b76a4166549f7aab2e75bef0aefc5b0f73ada57840b372d4c28623e87fc175de849079281173317c1a5739f39046e20b08ac9beea3f10fd4332673c1eb7689147c81ac840d4ff0d298489fc7986d52610eed87858886868660006102ed6103e882610f2c565b60408051602081019091526001600160a01b0382168152610f119060019081614d38565b50505050508015610aba576000805461ff0019169055505050565b600054610100900460ff1680610f45575060005460ff16155b610f615760405162461bcd60e51b8152600401610986906152cb565b600054610100900460ff16158015610f83576000805461ffff19166101011790555b610fa58b8b8b8a8a73f3d1a027e858976634f81b7c41b09a05a46eda21611d16565b896001600160a01b0316886001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110119190615269565b6001600160a01b03161461105d5760405162461bcd60e51b81526020600482015260136024820152720aadcc8cae4d8f2d2dcce40dad2e6dac2e8c6d606b1b6044820152606401610986565b61106688612561565b61106f87612578565b8284106110d35760405162461bcd60e51b815260206004820152602c60248201527f4e756d657261746f722073686f756c6420626520736d616c6c6572207468616e60448201526b103232b737b6b4b730ba37b960a11b6064820152608401610986565b83851061112c5760405162461bcd60e51b815260206004820152602160248201527f5461726765742073686f756c64206265206c6f776572207468616e206c696d696044820152601d60fa1b6064820152608401610986565b6111358361258f565b61114c60008051602061573d833981519152859055565b61116360008051602061591d833981519152869055565b61117b60008051602061589d833981519152836125a6565b6040805160018082528183019092526000916020808301908036833701905050905088816000815181106111b1576111b1615319565b6001600160a01b039283166020918202929092010152604051631853304760e31b81529089169063c2998238906111ec908490600401615374565b6000604051808303816000875af115801561120b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112339190810190615387565b50508015611247576000805461ff00191690555b5050505050505050505050565b61125c612480565b6001600160a01b0316336001600160a01b03161480611293575061127e612421565b6001600160a01b0316336001600160a01b0316145b806112b657506112a161140a565b6001600160a01b0316336001600160a01b0316145b6112d25760405162461bcd60e51b81526004016109869061541c565b6112da6125c0565b6112e26126bd565b6112ea6127c3565b6112f2612b7e565b6112fa612c66565b565b6000611306612468565b6001600160a01b0316826001600160a01b0316148061133d57506113286114b1565b6001600160a01b0316826001600160a01b0316145b80611360575061134b611499565b6001600160a01b0316826001600160a01b0316145b92915050565b61136e612498565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b81526004016113999190614db2565b602060405180830381865afa1580156113b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113da9190615286565b6113f65760405162461bcd60e51b8152600401610986906152a3565b6114006000612c89565b6112f26001612cbc565b6000611414612498565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ba573d6000803e3d6000fd5b600061086e60008051602061585d8339815191525490565b600061086e6000805160206158fd8339815191525490565b600061086e60008051602061579d8339815191525490565b600061086e6000805160206156fd8339815191525490565b600061086e6000805160206158bd8339815191525490565b600061086e60008051602061591d8339815191525490565b6114e9612498565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b81526004016115149190614db2565b602060405180830381865afa158015611531573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115559190615286565b6115715760405162461bcd60e51b8152600401610986906152a3565b6109b260008051602061589d833981519152826125a6565b6001818154811061159957600080fd5b6000918252602090912001546001600160a01b0316905081565b600054610100900460ff16806115cc575060005460ff16155b6115e85760405162461bcd60e51b8152600401610986906152cb565b600054610100900460ff1615801561160a576000805461ffff19166101011790555b60017f62ae7bf2df4e95c187ea09c8c47c3fc3d9abc36298f5b5b6c5e2e7b4b291fe255580156109b2576000805461ff001916905550565b600061086e60008051602061581d8339815191525490565b611662612498565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040161168d9190614db2565b602060405180830381865afa1580156116aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ce9190615286565b6116ea5760405162461bcd60e51b8152600401610986906152a3565b6001600160a01b0381166117405760405162461bcd60e51b815260206004820152601e60248201527f6e65772073746f726167652073686f756c646e277420626520656d70747900006044820152606401610986565b6109b281612cd4565b611751612498565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040161177c9190614db2565b602060405180830381865afa158015611799573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bd9190615286565b6117d95760405162461bcd60e51b8152600401610986906152a3565b60405163bdac7ca360e01b81526001600160a01b0383169063bdac7ca3906118079030908590600401615441565b600060405180830381600087803b15801561182157600080fd5b505af1158015611835573d6000803e3d6000fd5b505050505050565b611845612498565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b81526004016118709190614db2565b602060405180830381865afa15801561188d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b19190615286565b6118cd5760405162461bcd60e51b8152600401610986906152a3565b6112fa612ce6565b6000806118e0611642565b158015906118f457506118f1611642565b42115b8015611911575060006119056108de565b6001600160a01b031614155b6119196108de565b915091509091565b600061192b612421565b6001600160a01b031663a83656936040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b600061086e60008051602061573d8339815191525490565b600061198a612421565b6001600160a01b031663b60f151a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b600061086e6119d4611980565b6119e76119df610bff565b6119e7610803565b906124c2565b6119f5612480565b6001600160a01b0316336001600160a01b03161480611a2c5750611a17612421565b6001600160a01b0316336001600160a01b0316145b80611a4f5750611a3a61140a565b6001600160a01b0316336001600160a01b0316145b611a6b5760405162461bcd60e51b81526004016109869061541c565b6000611a756114b1565b9050611a816001612c89565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190611ab0903090600401614db2565b602060405180830381865afa158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af19190615250565b90508015611b1557611b15611b04612480565b6001600160a01b03841690836124ec565b611b1d612c66565b5050565b611b29612498565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b8152600401611b549190614db2565b602060405180830381865afa158015611b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b959190615286565b611bb15760405162461bcd60e51b8152600401610986906152a3565b611bb9610c46565b811115611c165760405162461bcd60e51b815260206004820152602560248201527f436f6c6c61746572616c20666163746f722063616e6e6f742062652074686973604482015264040d0d2ced60db1b6064820152608401610986565b611c1e6114c9565b8111611c8a5760405162461bcd60e51b815260206004820152603560248201527f436f6c6c61746572616c20666163746f722073686f756c642062652068696768604482015274195c881d1a185b88189bdc9c9bddc81d185c99d95d605a1b6064820152608401610986565b6109b260008051602061573d833981519152829055565b600054610100900460ff1680611cba575060005460ff16155b611cd65760405162461bcd60e51b8152600401610986906152cb565b600054610100900460ff16158015611cf8576000805461ffff19166101011790555b611d0182612cfa565b8015611b1d576000805461ff00191690555050565b600054610100900460ff1680611d2f575060005460ff16155b611d4b5760405162461bcd60e51b8152600401610986906152cb565b600054610100900460ff16158015611d6d576000805461ffff19166101011790555b611d7687611ca1565b611d7f86612d62565b611d8885612d79565b611d9184612d90565b611d9a83612da7565b611da382612dbe565b611dad6001612dd5565b611db76000612cbc565b8015611dc9576000805461ff00191690555b50505050505050565b600080611ddd611499565b90506000816001600160a01b0316633af9e669306040518263ffffffff1660e01b8152600401611e0d9190614db2565b6020604051808303816000875af1158015611e2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e509190615250565b90506000826001600160a01b03166317bfdfbc306040518263ffffffff1660e01b8152600401611e809190614db2565b6020604051808303816000875af1158015611e9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec39190615250565b9050611ecf8282612555565b935050505090565b611edf612480565b6001600160a01b0316336001600160a01b03161480611f165750611f01612421565b6001600160a01b0316336001600160a01b0316145b80611f395750611f2461140a565b6001600160a01b0316336001600160a01b0316145b611f555760405162461bcd60e51b81526004016109869061541c565b611f5d612ded565b6000611f676114b1565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611f979190614db2565b602060405180830381865afa158015611fb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd89190615250565b9050808311611ffd57610aba611fec612480565b6001600160a01b03841690856124ec565b60006120098483612555565b905061201481612e63565b61203061201f612480565b6001600160a01b03851690866124ec565b6040516370a0823160e01b81526001600160a01b038416906370a082319061205c903090600401614db2565b602060405180830381865afa158015612079573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209d9190615250565b915081156120ad576120ad612b7e565b6120b5612c66565b50505050565b600061086e60008051602061583d833981519152612542565b6120dc612498565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b81526004016121079190614db2565b602060405180830381865afa158015612124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121489190615286565b6121645760405162461bcd60e51b8152600401610986906152a3565b6112fa6000612cbc565b600061086e60008051602061589d833981519152612542565b600061086e60008051602061587d8339815191525490565b336000805160206158dd833981519152146121b957600080fd5b60005462010000900460ff1615806121db57506000546301000000900460ff16155b61221e5760405162461bcd60e51b81526020600482015260146024820152734f6e6c79206f6e652063616e206265207472756560601b6044820152606401610986565b60005462010000900460ff168061223e57506000546301000000900460ff165b61227f5760405162461bcd60e51b81526020600482015260126024820152714f6e652068617320746f206265207472756560701b6044820152606401610986565b60006122896114b1565b905060006122d4846000815181106122a3576122a3615319565b6020026020010151866000815181106122be576122be615319565b60200260200101516124c290919063ffffffff16565b60005490915062010000900460ff16156123195761230b856000815181106122fe576122fe615319565b6020026020010151612fe6565b612314816131f3565b6123ff565b6000612323611499565b90506000816001600160a01b03166317bfdfbc306040518263ffffffff1660e01b81526004016123539190614db2565b6020604051808303816000875af1158015612372573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123969190615250565b905060006123be886000815181106123b0576123b0615319565b602002602001015183613276565b90506123d56001600160a01b03861684600061328c565b6123e96001600160a01b038616848361328c565b6123f28161338f565b6123fb84613447565b5050505b6118356001600160a01b0383166000805160206158dd833981519152836124ec565b600061242b612498565b6001600160a01b031663f77c47916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ba573d6000803e3d6000fd5b600061086e6000805160206157fd8339815191525490565b600061086e6000805160206157bd8339815191525490565b60008051602061571d8339815191525490565b6109b260008051602061575d833981519152829055565b60006124ce8284615471565b9392505050565b6109b260008051602061581d833981519152829055565b610aba8363a9059cbb60e01b848460405160240161250b929190615484565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613539565b600061254c825490565b60011492915050565b60006124ce828461549d565b6109b26000805160206156fd833981519152829055565b6109b260008051602061585d833981519152829055565b6109b260008051602061595d833981519152829055565b611b1d82826125b65760006125b9565b60015b60ff169055565b6125c8612ded565b60006125d2611469565b905060648111156109b2576125e681613447565b60006125f06114b1565b905061266882826001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016126229190614db2565b602060405180830381865afa15801561263f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126639190615250565b613276565b9150600061268f6126776119c7565b612689612682610abf565b869061360e565b9061361a565b905061269b8282613626565b610aba6000805160206158fd8339815191526126b985610e1f611469565b9055565b60006126c7611451565b6001600160a01b03166361252fd16040518163ffffffff1660e01b8152600401600060405180830381865afa158015612704573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261272c91908101906154b0565b905060005b8151811015611b1d57600082828151811061274e5761274e615319565b60200260200101519050806001600160a01b031663ca37271b306040518263ffffffff1660e01b81526004016127849190614db2565b600060405180830381600087803b15801561279e57600080fd5b505af11580156127b2573d6000803e3d6000fd5b505060019093019250612731915050565b6127cb610d70565b612813577f408a4b113351e616bb41bad991f29bbad84b43c3810e7492a6bc7c6388dfe0c26127f8610d70565b604080519115158252600060208301520160405180910390a1565b600061281d612468565b90506000612829610873565b905060006128356114b1565b905060005b6001548110156129ab5760006001828154811061285957612859615319565b60009182526020822001546040516370a0823160e01b81526001600160a01b03909116925082906370a0823190612894903090600401614db2565b602060405180830381865afa1580156128b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d59190615250565b90506000811180156128f95750856001600160a01b0316826001600160a01b031614155b156129a1576129136001600160a01b03831686600061328c565b6129276001600160a01b038316868361328c565b60405163d5bcb9b560e01b81526001600160a01b0386169063d5bcb9b59061295c9085908a9086906001903090600401615544565b6020604051808303816000875af115801561297b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061299f9190615250565b505b505060010161283a565b506040516370a0823160e01b81526000906001600160a01b038516906370a08231906129db903090600401614db2565b602060405180830381865afa1580156129f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1c9190615250565b9050655af3107a4000811015612a325750505050565b612a3c8482613626565b6040516370a0823160e01b81526000906001600160a01b038616906370a0823190612a6b903090600401614db2565b602060405180830381865afa158015612a88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aac9190615250565b905080600003612abd575050505050565b846001600160a01b0316836001600160a01b031614612b7757612aeb6001600160a01b03861685600061328c565b612aff6001600160a01b038616858361328c565b60405163d5bcb9b560e01b81526001600160a01b0385169063d5bcb9b590612b34908890879086906001903090600401615544565b6020604051808303816000875af1158015612b53573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118359190615250565b5050505050565b612b866120bb565b15612bc55760405162461bcd60e51b815260206004820152600f60248201526e656d657267656e637920737461746560881b6044820152606401610986565b6000612bcf6114b1565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401612bff9190614db2565b602060405180830381865afa158015612c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c409190615250565b90508015612c5157612c5181612fe6565b612c5961216e565b15611b1d57611b1d6139dc565b6000612c70611dd2565b90506109b260008051602061587d833981519152829055565b8015612cac57612c976125c0565b612c9f6126bd565b612ca76127c3565b612cb4565b612cb4612ded565b6109b2613fb5565b6109b260008051602061583d833981519152826125a6565b60008051602061571d83398151915255565b612cf060006124ab565b6112fa60006124d5565b600054610100900460ff1680612d13575060005460ff16155b612d2f5760405162461bcd60e51b8152600401610986906152cb565b600054610100900460ff16158015612d51576000805461ffff19166101011790555b612d5a82612cd4565b611d016115b3565b6109b26000805160206158bd833981519152829055565b6109b26000805160206157bd833981519152829055565b6109b260008051602061579d833981519152829055565b6109b26000805160206157fd833981519152829055565b6109b260008051602061577d833981519152829055565b6109b26000805160206156dd833981519152826125a6565b6000612df7612187565b612dff611dd2565b1115612e3d576000612e1a612e12612187565b610e1f611dd2565b9050612e39612e27610abf565b612689612e326119c7565b849061360e565b9150505b612e5b6000805160206158fd8339815191526126b9836119e7611469565b6109b2612c66565b6000612e6d6114b1565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401612e9d9190614db2565b602060405180830381865afa158015612eba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ede9190615250565b9050612f0483612eec61216e565b612ef757600061424a565b612eff6114c9565b61424a565b6040516370a0823160e01b81526000906001600160a01b038416906370a0823190612f33903090600401614db2565b602060405180830381865afa158015612f50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f749190615250565b905083612f818284612555565b10156120b55760405162461bcd60e51b815260206004820152602e60248201527f556e61626c6520746f2077697468647261772074686520656e7469726520616d60448201526d6f756e74556e6465726c79696e6760901b6064820152608401610986565b80600003612ff15750565b6000612ffb6114b1565b90506000613007611499565b90506000613013611451565b6001600160a01b03166302c3bcbb836040518263ffffffff1660e01b815260040161303e9190614db2565b602060405180830381865afa15801561305b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307f9190615250565b90508060000361308e57506000195b600061316b670de0b6b3a7640000612689856001600160a01b031663bd6d894d6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156130df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131039190615250565b866001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613141573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131659190615250565b9061360e565b905081811061317b575050505050565b846131868383612555565b1161319d5761319a6002610e1f8484612555565b94505b6131b26001600160a01b03851684600061328c565b6131c66001600160a01b038516848761328c565b60405163140e25ad60e31b8152600481018690526001600160a01b0384169063a0712d6890602401612b34565b806000036131fe5750565b613206611499565b6001600160a01b031663c5ebeaec826040518263ffffffff1660e01b815260040161323391815260200190565b6020604051808303816000875af1158015613252573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1d9190615250565b600081831061328557816124ce565b5090919050565b8015806133055750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e906132c29030908690600401615441565b602060405180830381865afa1580156132df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133039190615250565b155b6133705760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610986565b610aba8363095ea7b360e01b848460405160240161250b929190615484565b8060000361339a5750565b60006133a46114b1565b905060006133b0611499565b90506133c76001600160a01b03831682600061328c565b6133db6001600160a01b038316828561328c565b60405163073a938160e11b8152600481018490526001600160a01b03821690630e752702906024015b6020604051808303816000875af1158015613423573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b59190615250565b806000036134525750565b600061345c611499565b90506000816001600160a01b031663bd6d894d6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156134a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134c49190615250565b9050806134d984670de0b6b3a764000061360e565b101561350c5760405163db006a7560e01b8152600160048201526001600160a01b0383169063db006a7590602401613404565b60405163852a12e360e01b8152600481018490526001600160a01b0383169063852a12e390602401613404565b600061358e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166145919092919063ffffffff16565b90508051600014806135af5750808060200190518101906135af9190615286565b610aba5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610986565b60006124ce8284615574565b60006124ce828461558b565b60648111156138b9576000613639610abf565b9050600061364c82612689612682610803565b905060006136668361268961365f610bff565b879061360e565b9050600061368084612689613679611980565b889061360e565b9050600061368c610be7565b90506000613698612421565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136f99190615269565b9050876001600160a01b03166000805160206156bd833981519152888542604051613726939291906155ad565b60405180910390a2876001600160a01b0316816001600160a01b031660008051602061593d833981519152898742604051613763939291906155ad565b60405180910390a3876001600160a01b0316826001600160a01b03166000805160206157dd8339815191528988426040516137a0939291906155ad565b60405180910390a360006137b2612421565b6001600160a01b031663a98e929c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138139190615269565b905061382a6001600160a01b038a1682600061328c565b61383e6001600160a01b038a16828a61328c565b604051631112a1b760e11b81526001600160a01b038a81166004830152602482018690526044820188905260648201879052821690632225436e90608401600060405180830381600087803b15801561389657600080fd5b505af11580156138aa573d6000803e3d6000fd5b50505050505050505050505050565b816001600160a01b03166000805160206156bd833981519152600080426040516138e5939291906155ad565b60405180910390a2816001600160a01b03166138ff612421565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b8152600401602060405180830381865afa15801561393c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139609190615269565b6001600160a01b031660008051602061593d8339815191526000804260405161398b939291906155ad565b60405180910390a3816001600160a01b03166139a5610be7565b6001600160a01b03166000805160206157dd833981519152600080426040516139d0939291906155ad565b60405180910390a35050565b60006139e6611499565b905060006139f2610c46565b905060006139fe6114c9565b90506000836001600160a01b0316633af9e669306040518263ffffffff1660e01b8152600401613a2e9190614db2565b6020604051808303816000875af1158015613a4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a719190615250565b90506000846001600160a01b03166317bfdfbc306040518263ffffffff1660e01b8152600401613aa19190614db2565b6020604051808303816000875af1158015613ac0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ae49190615250565b90506000613af28383612555565b90506000613b0d613b038787612555565b612689848861360e565b905080831115613b2857613b216000612e63565b5081613db1565b6000613b32611451565b90506000816001600160a01b0316634a5844328a6040518263ffffffff1660e01b8152600401613b629190614db2565b602060405180830381865afa158015613b7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ba39190615250565b90506000826001600160a01b03166302c3bcbb8b6040518263ffffffff1660e01b8152600401613bd39190614db2565b602060405180830381865afa158015613bf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c149190615250565b905081600003613c245760001991505b80600003613c3157506000195b60008a6001600160a01b03166347bd37186040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c959190615250565b90506000613d4a670de0b6b3a76400006126898e6001600160a01b031663bd6d894d6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015613ce8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d0c9190615250565b8f6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613141573d6000803e3d6000fd5b9050600084831015613d9657613d656002610e1f8786612555565b905083821015613d8e57613d87613d816002610e1f8786612555565b82613276565b9050613d9a565b506000613d9a565b5060005b613da8876126638b846124c2565b96505050505050505b6000613dbd8285612555565b90506000613dc96114b1565b90506000816001600160a01b03166370a082316000805160206158dd8339815191526040518263ffffffff1660e01b8152600401613e079190614db2565b602060405180830381865afa158015613e24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e489190615250565b905080831115613e6057613e5b846145a8565b613fa9565b6040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505060408051600060208201819052929350016040516020818303038152906040529050613ecd6114b1565b83600081518110613ee057613ee0615319565b60200260200101906001600160a01b031690816001600160a01b0316815250508582600081518110613f1457613f14615319565b60209081029190910101526000805462ff0000191662010000179055604051632e1c224f60e11b81526000805160206158dd83398151915290635c38449e90613f67903090879087908790600401615613565b600060405180830381600087803b158015613f8157600080fd5b505af1158015613f95573d6000803e3d6000fd5b50506000805462ff00001916905550505050505b50505050505050505050565b6000613fbf611499565b90506000816001600160a01b0316633b1d21a26040518163ffffffff1660e01b8152600401602060405180830381865afa158015614001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140259190615250565b90506000826001600160a01b0316633af9e669306040518263ffffffff1660e01b81526004016140559190614db2565b6020604051808303816000875af1158015614074573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140989190615250565b90506000836001600160a01b03166317bfdfbc306040518263ffffffff1660e01b81526004016140c89190614db2565b6020604051808303816000875af11580156140e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061410b9190615250565b9050600061412461411a611469565b610e1f8585612555565b905061413a6141338286613276565b600061424a565b846001600160a01b0316633b1d21a26040518163ffffffff1660e01b8152600401602060405180830381865afa158015614178573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061419c9190615250565b604051633af9e66960e01b81529094506001600160a01b03861690633af9e669906141cb903090600401614db2565b6020604051808303816000875af11580156141ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061420e9190615250565b9250614218611469565b6142228486613276565b1115612b7757612b7761424561423b60016119e7611469565b610e1f8688613276565b613447565b6000614254611499565b90506000816001600160a01b0316633af9e669306040518263ffffffff1660e01b81526004016142849190614db2565b6020604051808303816000875af11580156142a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142c79190615250565b90506000826001600160a01b03166317bfdfbc306040518263ffffffff1660e01b81526004016142f79190614db2565b6020604051808303816000875af1158015614316573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061433a9190615250565b90506000806143498484612555565b905060006143578289612555565b905061437261436888610e1f610c46565b612689838a61360e565b9250505060008183101561438857506000614395565b6143928383612555565b90505b600061439f6114b1565b90506000816001600160a01b03166370a082316000805160206158dd8339815191526040518263ffffffff1660e01b81526004016143dd9190614db2565b602060405180830381865afa1580156143fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061441e9190615250565b905080831115614437576144328985614859565b614586565b604080516001808252818301909252600091602080830190803683375050604080516001808252818301909252929350600092915060208083019080368337019050506040805160006020820181905292935001604051602081830303815290604052905084836000815181106144b0576144b0615319565b60200260200101906001600160a01b031690816001600160a01b03168152505085826000815181106144e4576144e4615319565b60209081029190910101526000805463ff00000019166301000000179055604051632e1c224f60e11b81526000805160206158dd83398151915290635c38449e90614539903090879087908790600401615613565b600060405180830381600087803b15801561455357600080fd5b505af1158015614567573d6000803e3d6000fd5b50506000805463ff000000191690555061458290508c613447565b5050505b505050505050505050565b60606145a08484600085614bbf565b949350505050565b60006145b26114b1565b905060006145be611499565b90506000816001600160a01b03166317bfdfbc306040518263ffffffff1660e01b81526004016145ee9190614db2565b6020604051808303816000875af115801561460d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146319190615250565b90506000826001600160a01b0316633af9e669306040518263ffffffff1660e01b81526004016146619190614db2565b6020604051808303816000875af1158015614680573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146a49190615250565b90505b84821015612b775760006146bb8684612555565b905060006146d984610e1f6146ce610c46565b612689613679611968565b90506146ed6146e88383613276565b6131f3565b6040516370a0823160e01b81526000906001600160a01b038816906370a082319061471c903090600401614db2565b602060405180830381865afa158015614739573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061475d9190615250565b9050801561476e5761476e81612fe6565b6040516305eff7ef60e21b81526001600160a01b038716906317bfdfbc9061479a903090600401614db2565b6020604051808303816000875af11580156147b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147dd9190615250565b604051633af9e66960e01b81529095506001600160a01b03871690633af9e6699061480c903090600401614db2565b6020604051808303816000875af115801561482b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061484f9190615250565b93505050506146a7565b60006148636114b1565b9050600061486f611499565b90506000816001600160a01b03166317bfdfbc306040518263ffffffff1660e01b815260040161489f9190614db2565b6020604051808303816000875af11580156148be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148e29190615250565b90506000826001600160a01b0316633af9e669306040518263ffffffff1660e01b81526004016149129190614db2565b6020604051808303816000875af1158015614931573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149559190615250565b90505b84821115614b1c57600061497861496d611968565b612689612682610c46565b905060006149868488612555565b905060006149a16149978585612555565b6126638b856124c2565b90506149ac81613447565b6040516370a0823160e01b81526000906001600160a01b038916906370a08231906149db903090600401614db2565b602060405180830381865afa1580156149f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a1c9190615250565b9050614a30614a2b8483613276565b61338f565b6040516305eff7ef60e21b81526001600160a01b038816906317bfdfbc90614a5c903090600401614db2565b6020604051808303816000875af1158015614a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a9f9190615250565b604051633af9e66960e01b81529096506001600160a01b03881690633af9e66990614ace903090600401614db2565b6020604051808303816000875af1158015614aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b119190615250565b945050505050614958565b6040516370a0823160e01b81526000906001600160a01b038616906370a0823190614b4b903090600401614db2565b602060405180830381865afa158015614b68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b8c9190615250565b905086811015611dc9576000614ba28883612555565b90506000614bb08486612555565b90506145866142458383613276565b606082471015614c205760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610986565b600080866001600160a01b03168587604051614c3c919061568d565b60006040518083038185875af1925050503d8060008114614c79576040519150601f19603f3d011682016040523d82523d6000602084013e614c7e565b606091505b5091509150614c8f87838387614c9a565b979650505050505050565b60608315614d09578251600003614d02576001600160a01b0385163b614d025760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610986565b50816145a0565b6145a08383815115614d1e5781518083602001fd5b8060405162461bcd60e51b815260040161098691906156a9565b828054828255906000526020600020908101928215614d8d579160200282015b82811115614d8d57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614d58565b50614d99929150614d9d565b5090565b5b80821115614d995760008155600101614d9e565b6001600160a01b0391909116815260200190565b6001600160a01b03811681146109b257600080fd5b600060208284031215614ded57600080fd5b81356124ce81614dc6565b600080600060608486031215614e0d57600080fd5b8335614e1881614dc6565b92506020840135614e2881614dc6565b929592945050506040919091013590565b600060208284031215614e4b57600080fd5b5035919050565b60008060408385031215614e6557600080fd5b8235614e7081614dc6565b91506020830135614e8081614dc6565b809150509250929050565b80151581146109b257600080fd5b6000806000806000806000806000806101408b8d031215614eb957600080fd5b8a35614ec481614dc6565b995060208b0135614ed481614dc6565b985060408b0135614ee481614dc6565b975060608b0135614ef481614dc6565b965060808b0135614f0481614dc6565b955060a08b0135614f1481614dc6565b945060c08b0135935060e08b013592506101008b013591506101208b0135614f3b81614e8b565b809150509295989b9194979a5092959850565b600060208284031215614f6057600080fd5b81356124ce81614e8b565b60008060008060008060c08789031215614f8457600080fd5b8635614f8f81614dc6565b95506020870135614f9f81614dc6565b94506040870135614faf81614dc6565b93506060870135614fbf81614dc6565b92506080870135614fcf81614dc6565b915060a0870135614fdf81614dc6565b809150509295509295509295565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561502b5761502b614fed565b604052919050565b60006001600160401b0382111561504c5761504c614fed565b5060051b60200190565b600082601f83011261506757600080fd5b813561507a61507582615033565b615003565b8082825260208201915060208360051b86010192508583111561509c57600080fd5b602085015b838110156150b95780358352602092830192016150a1565b5095945050505050565b600082601f8301126150d457600080fd5b81356001600160401b038111156150ed576150ed614fed565b615100601f8201601f1916602001615003565b81815284602083860101111561511557600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561514857600080fd5b84356001600160401b0381111561515e57600080fd5b8501601f8101871361516f57600080fd5b803561517d61507582615033565b8082825260208201915060208360051b85010192508983111561519f57600080fd5b6020840193505b828410156151ca5783356151b981614dc6565b8252602093840193909101906151a6565b965050505060208501356001600160401b038111156151e857600080fd5b6151f487828801615056565b93505060408501356001600160401b0381111561521057600080fd5b61521c87828801615056565b92505060608501356001600160401b0381111561523857600080fd5b615244878288016150c3565b91505092959194509250565b60006020828403121561526257600080fd5b5051919050565b60006020828403121561527b57600080fd5b81516124ce81614dc6565b60006020828403121561529857600080fd5b81516124ce81614e8b565b6020808252600e908201526d4e6f7420676f7665726e616e636560901b604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561536a5781516001600160a01b0316865260209586019590910190600101615343565b5093949350505050565b6020815260006124ce602083018461532f565b60006020828403121561539957600080fd5b81516001600160401b038111156153af57600080fd5b8201601f810184136153c057600080fd5b80516153ce61507582615033565b8082825260208201915060208360051b8501019250868311156153f057600080fd5b6020840193505b828410156154125783518252602093840193909101906153f7565b9695505050505050565b6020808252600b908201526a1b9bdd08185b1b1bddd95960aa1b604082015260600190565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b600052601160045260246000fd5b808201808211156113605761136061545b565b6001600160a01b03929092168252602082015260400190565b818103818111156113605761136061545b565b6000602082840312156154c257600080fd5b81516001600160401b038111156154d857600080fd5b8201601f810184136154e957600080fd5b80516154f761507582615033565b8082825260208201915060208360051b85010192508683111561551957600080fd5b6020840193505b8284101561541257835161553381614dc6565b825260209384019390910190615520565b6001600160a01b039586168152938516602085015260408401929092526060830152909116608082015260a00190565b80820281158282048414176113605761136061545b565b6000826155a857634e487b7160e01b600052601260045260246000fd5b500490565b9283526020830191909152604082015260600190565b60005b838110156155de5781810151838201526020016155c6565b50506000910152565b600081518084526155ff8160208601602086016155c3565b601f01601f19169290920160200192915050565b6001600160a01b03851681526080602082018190526000906156379083018661532f565b82810360408401528451808252602080870192019060005b8181101561566d57835183526020938401939092019160010161564f565b5050838103606085015261568181866155e7565b98975050505050505050565b6000825161569f8184602087016155c3565b9190910192915050565b6020815260006124ce60208301846155e756fe1072be0ffac0739a43e2bbe8b9b7dd277f79e5eed4fc2bac67005b3f09118a7d656de32df98753b07482576beb0d00a6b949ebf84c066c765f54f26725221bb6316ad921d519813e6e41c0e056b79e4395192c2b101f8b61cf5b94999360d568a7ec62784904ff31cbcc32d09932a58e7f1e4476e1d041995b37c917990b16dc129eccdfbcf3761d8e2f66393221fa8277b7623ad13ed7693a0025435931c64a29f7fcd4fe2517c1963807a1ec27b0e45e67c60a874d5eeac7a0b1ab1bb844476a7b588c950d46e2de3db2f157e5e0e4f29054c8d60f17bf0c30352e223a458d3d9bb16e77837e25cada0cf894835418b38e8e18fbec6cfd192eb344bebfa6b8efd7c7d9ef1040fc87e7ad11fe15f86e1d11e1df03c6d7c87f7e1f4041f08d4111b8e2ade018b082c0f17123af08137fdf13800d50b83fda08b49ba4ca2aa5cddae0aafd977983cb1e78d8f638900ff361dc3c48c43118ca1dd77d1af3f47bbf414c5263b05428f1be1bfa98e25407cc78dd031d0d3cd2a2e3d63b488804f22ea07a20a2d463a602c2b891eb35f244624d9068572811f63d0e094072fb54591a21864471ca9d8b67bc7f58951fb160897ce623fdb405c56534d08a363a47e235280539da846b4989609abdccfea039bd1453e4f710c670b29b9eeaca0730c1a21841be4c16015a744c9fbf595f7c6b32d40278c16c1fc7cf2de88c6348de44baa1709211eeccf8f4ad5b6700d52a1a9525b5f5ae1e9e5f9e5a0c2fc23c86e530000000000000000000000000ba12222222228d8ba445958a75a0704d566bf2c80af7af9f5ccfa82c3497f40c7c382677637aee27293a6243a22216b51481bd97a65533f4b41f3786d877c8fdd4ae6d27ada84e1d9c62ea3aca309e9aa03af1cda9dc538e563d9581dd26a09bae7f821924cec58d0811f80e8462740f2adab4c74e92df66cc717205e8df80bec55fc1429f703d590a2d456b97b74f0008b4a3eea264697066735822122055d65040c33ec6a95aead4e8463ed763ce4000aa973ab03016b0c51ce079462764736f6c634300081a0033