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
0x608060405234801561001057600080fd5b5061003c60017f62ae7bf2df4e95c187ea09c8c47c3fc3d9abc36298f5b5b6c5e2e7b4b291fe266107bc565b7f62ae7bf2df4e95c187ea09c8c47c3fc3d9abc36298f5b5b6c5e2e7b4b291fe251461006a5761006a6107e3565b61009560017fa7ec62784904ff31cbcc32d09932a58e7f1e4476e1d041995b37c917990b16dd6107bc565b7fa7ec62784904ff31cbcc32d09932a58e7f1e4476e1d041995b37c917990b16dc146100c3576100c36107e3565b6100ee60017fa1709211eeccf8f4ad5b6700d52a1a9525b5f5ae1e9e5f9e5a0c2fc23c86e5316107bc565b7fa1709211eeccf8f4ad5b6700d52a1a9525b5f5ae1e9e5f9e5a0c2fc23c86e5301461011c5761011c6107e3565b61014760017fefd7c7d9ef1040fc87e7ad11fe15f86e1d11e1df03c6d7c87f7e1f4041f08d426107bc565b7fefd7c7d9ef1040fc87e7ad11fe15f86e1d11e1df03c6d7c87f7e1f4041f08d4114610175576101756107e3565b6101a060017fdae0aafd977983cb1e78d8f638900ff361dc3c48c43118ca1dd77d1af3f47bc06107bc565b7fdae0aafd977983cb1e78d8f638900ff361dc3c48c43118ca1dd77d1af3f47bbf146101ce576101ce6107e3565b6101f960017f3d9bb16e77837e25cada0cf894835418b38e8e18fbec6cfd192eb344bebfa6b96107bc565b7f3d9bb16e77837e25cada0cf894835418b38e8e18fbec6cfd192eb344bebfa6b814610227576102276107e3565b61025260017f656de32df98753b07482576beb0d00a6b949ebf84c066c765f54f26725221bb76107bc565b7f656de32df98753b07482576beb0d00a6b949ebf84c066c765f54f26725221bb614610280576102806107e3565b6102ab60017fa07a20a2d463a602c2b891eb35f244624d9068572811f63d0e094072fb54591b6107bc565b7fa07a20a2d463a602c2b891eb35f244624d9068572811f63d0e094072fb54591a146102d9576102d96107e3565b61030460017fe3ee74fb7893020b457d8071ed1ef76ace2bf4903abd7b24d3ce312e9c72c02a6107bc565b7fe3ee74fb7893020b457d8071ed1ef76ace2bf4903abd7b24d3ce312e9c72c02914610332576103326107e3565b61035d60017f0286fd414602b432a8c80a0125e9a25de9bba96da9d5068c832ff73f09208a3c6107bc565b7f0286fd414602b432a8c80a0125e9a25de9bba96da9d5068c832ff73f09208a3b1461038b5761038b6107e3565b6103b660017f29f7fcd4fe2517c1963807a1ec27b0e45e67c60a874d5eeac7a0b1ab1bb844486107bc565b7f29f7fcd4fe2517c1963807a1ec27b0e45e67c60a874d5eeac7a0b1ab1bb84447146103e4576103e46107e3565b61040f60017f414c5263b05428f1be1bfa98e25407cc78dd031d0d3cd2a2e3d63b488804f22f6107bc565b7f414c5263b05428f1be1bfa98e25407cc78dd031d0d3cd2a2e3d63b488804f22e1461043d5761043d6107e3565b61046860017f82b330ca72bcd6db11a26f10ce47ebcfe574a9c646bccbc6f1cd4478eae16b326107bc565b7f82b330ca72bcd6db11a26f10ce47ebcfe574a9c646bccbc6f1cd4478eae16b3114610496576104966107e3565b6104c160017f6a7b588c950d46e2de3db2f157e5e0e4f29054c8d60f17bf0c30352e223a458e6107bc565b7f6a7b588c950d46e2de3db2f157e5e0e4f29054c8d60f17bf0c30352e223a458d146104ef576104ef6107e3565b61051a60017f316ad921d519813e6e41c0e056b79e4395192c2b101f8b61cf5b94999360d5696107bc565b7f316ad921d519813e6e41c0e056b79e4395192c2b101f8b61cf5b94999360d56814610548576105486107e3565b61057360017f21864471ca9d8b67bc7f58951fb160897ce623fdb405c56534d08a363a47e2366107bc565b7f21864471ca9d8b67bc7f58951fb160897ce623fdb405c56534d08a363a47e235146105a1576105a16107e3565b6105cc60017f280539da846b4989609abdccfea039bd1453e4f710c670b29b9eeaca0730c1a36107bc565b7f280539da846b4989609abdccfea039bd1453e4f710c670b29b9eeaca0730c1a2146105fa576105fa6107e3565b61062560017f0af7af9f5ccfa82c3497f40c7c382677637aee27293a6243a22216b51481bd986107bc565b7f0af7af9f5ccfa82c3497f40c7c382677637aee27293a6243a22216b51481bd9714610653576106536107e3565b61067e60017f129eccdfbcf3761d8e2f66393221fa8277b7623ad13ed7693a0025435931c64b6107bc565b7f129eccdfbcf3761d8e2f66393221fa8277b7623ad13ed7693a0025435931c64a146106ac576106ac6107e3565b6106d760017f4e92df66cc717205e8df80bec55fc1429f703d590a2d456b97b74f0008b4a3ef6107bc565b7f4e92df66cc717205e8df80bec55fc1429f703d590a2d456b97b74f0008b4a3ee14610705576107056107e3565b61073060017fa65533f4b41f3786d877c8fdd4ae6d27ada84e1d9c62ea3aca309e9aa03af1ce6107bc565b7fa65533f4b41f3786d877c8fdd4ae6d27ada84e1d9c62ea3aca309e9aa03af1cd1461075e5761075e6107e3565b61078960017f1841be4c16015a744c9fbf595f7c6b32d40278c16c1fc7cf2de88c6348de44bb6107bc565b7f1841be4c16015a744c9fbf595f7c6b32d40278c16c1fc7cf2de88c6348de44ba146107b7576107b76107e3565b6107f9565b818103818111156107dd57634e487b7160e01b600052601160045260246000fd5b92915050565b634e487b7160e01b600052600160045260246000fd5b6159b3806108086000396000f3fe6080604052600436106102695760003560e01c806303140ff41461027557806306974e8d1461029d57806309ff18f0146102bf5780630c80447a146102d45780631113ef52146102f6578063180b0d7e146103165780631c03e6cc1461032b5780631fe4a6861461034b57806320d1ceaf1461036057806320d88ac714610375578063394b71cf1461038a5780633f282b8d146103ac57806345710074146103cc57806345d01e4a146103f15780634d352ab2146104065780634ed65416146104265780634fa5d85414610446578063501859461461045b5780635641ec031461047b5780635aa6e675146104905780635fe3b567146104a5578063643090bc146104ba57806366666aa9146104cf57806369e527da146104e45780636f307dc3146104f9578063759098881461050e57806375f6d6ce146105235780637bb7bed1146105435780638129fc1c1461056357806382de9c1b146105785780639137c1a71461058d5780639a138d6d146105ad5780639a508c8e146105cd5780639d16acfd146105e2578063a836569314610616578063b5d7a94f1461062b578063b60f151a14610640578063b8d3370b14610655578063bfd131f11461066a578063c23ff8b61461067f578063c2a2a07b1461069f578063c4d66de8146106b3578063cc2a9a5b146106d3578063ce845d1d146106f3578063ce8c42e814610708578063d3df8aa414610728578063db6204851461073d578063e684f46a14610752578063e9eca99414610767578063ec0956061461077c578063f04f2707146107a4578063f77c4791146107c4578063f7c618c1146107d9578063fbfa77cf146107ee57600080fd5b3661027057005b600080fd5b34801561028157600080fd5b5061028a610803565b6040519081526020015b60405180910390f35b3480156102a957600080fd5b506102b2610873565b6040516102949190614db3565b3480156102cb57600080fd5b506102b26108de565b3480156102e057600080fd5b506102f46102ef366004614ddc565b6108f6565b005b34801561030257600080fd5b506102f4610311366004614df9565b6109b5565b34801561032257600080fd5b5061028a610abf565b34801561033757600080fd5b506102f4610346366004614ddc565b610b06565b34801561035757600080fd5b506102b2610be7565b34801561036c57600080fd5b5061028a610bff565b34801561038157600080fd5b5061028a610c46565b34801561039657600080fd5b506102b26000805160206158de83398151915281565b3480156103b857600080fd5b506102f46103c7366004614e3a565b610c5e565b3480156103d857600080fd5b506103e1610d70565b6040519015158152602001610294565b3480156103fd57600080fd5b5061028a610d89565b34801561041257600080fd5b506102f4610421366004614e53565b610e2b565b34801561043257600080fd5b506102f4610441366004614e9a565b610f2d565b34801561045257600080fd5b506102f4611255565b34801561046757600080fd5b506103e1610476366004614ddc565b6112fd565b34801561048757600080fd5b506102f4611367565b34801561049c57600080fd5b506102b261140b565b3480156104b157600080fd5b506102b2611452565b3480156104c657600080fd5b5061028a61146a565b3480156104db57600080fd5b506102b2611482565b3480156104f057600080fd5b506102b261149a565b34801561050557600080fd5b506102b26114b2565b34801561051a57600080fd5b5061028a6114ca565b34801561052f57600080fd5b506102f461053e366004614f4f565b6114e2565b34801561054f57600080fd5b506102b261055e366004614e3a565b61158a565b34801561056f57600080fd5b506102f46115b4565b34801561058457600080fd5b5061028a611643565b34801561059957600080fd5b506102f46105a8366004614ddc565b61165b565b3480156105b957600080fd5b506102f46105c8366004614e53565b61174a565b3480156105d957600080fd5b506102f461183e565b3480156105ee57600080fd5b506105f76118d6565b6040805192151583526001600160a01b03909116602083015201610294565b34801561062257600080fd5b5061028a611922565b34801561063757600080fd5b5061028a611969565b34801561064c57600080fd5b5061028a611981565b34801561066157600080fd5b5061028a6119c8565b34801561067657600080fd5b506102f46119ee565b34801561068b57600080fd5b506102f461069a366004614e3a565b611b22565b3480156106ab57600080fd5b5060016103e1565b3480156106bf57600080fd5b506102f46106ce366004614ddc565b611ca2565b3480156106df57600080fd5b506102f46106ee366004614f6c565b611d17565b3480156106ff57600080fd5b5061028a611dd3565b34801561071457600080fd5b506102f4610723366004614e3a565b611ed8565b34801561073457600080fd5b506103e16120bc565b34801561074957600080fd5b506102f46120d5565b34801561075e57600080fd5b506103e161216f565b34801561077357600080fd5b5061028a612188565b34801561078857600080fd5b506102b273f3d1a027e858976634f81b7c41b09a05a46eda2181565b3480156107b057600080fd5b506102f46107bf366004615133565b6121a0565b3480156107d057600080fd5b506102b2612422565b3480156107e557600080fd5b506102b2612469565b3480156107fa57600080fd5b506102b2612481565b600061080d612422565b6001600160a01b03166303140ff46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e9190615251565b905090565b600061087d612422565b6001600160a01b03166306974e8d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ba573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086e919061526a565b600061086e60008051602061575e8339815191525490565b6108fe612499565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b81526004016109299190614db3565b602060405180830381865afa158015610946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096a9190615287565b61098f5760405162461bcd60e51b8152600401610986906152a4565b60405180910390fd5b610998816124ac565b6109b26109ad6109a6611922565b42906124c3565b6124d6565b50565b6109bd612499565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b81526004016109e89190614db3565b602060405180830381865afa158015610a05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a299190615287565b610a455760405162461bcd60e51b8152600401610986906152a4565b610a4e826112fd565b15610aa65760405162461bcd60e51b815260206004820152602260248201527f746f6b656e20697320646566696e6564206173206e6f742073616c76616761626044820152616c6560f01b6064820152608401610986565b610aba6001600160a01b03831684836124ed565b505050565b6000610ac9612422565b6001600160a01b031663180b0d7e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b610b0e612499565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b8152600401610b399190614db3565b602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a9190615287565b610b965760405162461bcd60e51b8152600401610986906152a4565b6001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0392909216919091179055565b600061086e60008051602061577e8339815191525490565b6000610c09612422565b6001600160a01b03166320d1ceaf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b600061086e60008051602061595e8339815191525490565b610c66612499565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b8152600401610c919190614db3565b602060405180830381865afa158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd29190615287565b610cee5760405162461bcd60e51b8152600401610986906152a4565b610cf6611969565b8110610d595760405162461bcd60e51b815260206004820152602c60248201527f5461726765742073686f756c64206265206c6f776572207468616e20636f6c6c60448201526b185d195c985b081b1a5b5a5d60a21b6064820152608401610986565b6109b260008051602061591e833981519152829055565b600061086e6000805160206156de833981519152612543565b600080610d946114b2565b6001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401610dbf9190614db3565b602060405180830381865afa158015610ddc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e009190615251565b9050610e25610e0d61146a565b610e1f610e18612188565b84906124c3565b90612556565b91505090565b600054610100900460ff1680610e44575060005460ff16155b610e605760405162461bcd60e51b8152600401610986906152cc565b600054610100900460ff16158015610e82576000805461ffff19166101011790555b73912ce59144191c1204e64559fe8253a0e49e654873aeb0fed69354f34831fe1d16475d9a83ddacada673317c1a5739f39046e20b08ac9beea3f10fd4332673c1eb7689147c81ac840d4ff0d298489fc7986d52610eee87858886868660966102256103e86001610f2d565b60408051602081019091526001600160a01b0382168152610f129060019081614d39565b50505050508015610aba576000805461ff0019169055505050565b600054610100900460ff1680610f46575060005460ff16155b610f625760405162461bcd60e51b8152600401610986906152cc565b600054610100900460ff16158015610f84576000805461ffff19166101011790555b610fa68b8b8b8a8a73f3d1a027e858976634f81b7c41b09a05a46eda21611d17565b896001600160a01b0316886001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611012919061526a565b6001600160a01b03161461105e5760405162461bcd60e51b81526020600482015260136024820152720aadcc8cae4d8f2d2dcce40dad2e6dac2e8c6d606b1b6044820152606401610986565b61106788612562565b61107087612579565b8284106110d45760405162461bcd60e51b815260206004820152602c60248201527f4e756d657261746f722073686f756c6420626520736d616c6c6572207468616e60448201526b103232b737b6b4b730ba37b960a11b6064820152608401610986565b83851061112d5760405162461bcd60e51b815260206004820152602160248201527f5461726765742073686f756c64206265206c6f776572207468616e206c696d696044820152601d60fa1b6064820152608401610986565b61113683612590565b61114d60008051602061573e833981519152859055565b61116460008051602061591e833981519152869055565b61117c60008051602061589e833981519152836125a7565b6040805160018082528183019092526000916020808301908036833701905050905088816000815181106111b2576111b261531a565b6001600160a01b039283166020918202929092010152604051631853304760e31b81529089169063c2998238906111ed908490600401615375565b6000604051808303816000875af115801561120c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112349190810190615388565b50508015611248576000805461ff00191690555b5050505050505050505050565b61125d612481565b6001600160a01b0316336001600160a01b03161480611294575061127f612422565b6001600160a01b0316336001600160a01b0316145b806112b757506112a261140b565b6001600160a01b0316336001600160a01b0316145b6112d35760405162461bcd60e51b81526004016109869061541d565b6112db6125c1565b6112e36126be565b6112eb6127c4565b6112f3612b7f565b6112fb612c67565b565b6000611307612469565b6001600160a01b0316826001600160a01b0316148061133e57506113296114b2565b6001600160a01b0316826001600160a01b0316145b80611361575061134c61149a565b6001600160a01b0316826001600160a01b0316145b92915050565b61136f612499565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040161139a9190614db3565b602060405180830381865afa1580156113b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113db9190615287565b6113f75760405162461bcd60e51b8152600401610986906152a4565b6114016000612c8a565b6112f36001612cbd565b6000611415612499565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ba573d6000803e3d6000fd5b600061086e60008051602061585e8339815191525490565b600061086e6000805160206158fe8339815191525490565b600061086e60008051602061579e8339815191525490565b600061086e6000805160206156fe8339815191525490565b600061086e6000805160206158be8339815191525490565b600061086e60008051602061591e8339815191525490565b6114ea612499565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b81526004016115159190614db3565b602060405180830381865afa158015611532573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115569190615287565b6115725760405162461bcd60e51b8152600401610986906152a4565b6109b260008051602061589e833981519152826125a7565b6001818154811061159a57600080fd5b6000918252602090912001546001600160a01b0316905081565b600054610100900460ff16806115cd575060005460ff16155b6115e95760405162461bcd60e51b8152600401610986906152cc565b600054610100900460ff1615801561160b576000805461ffff19166101011790555b60017f62ae7bf2df4e95c187ea09c8c47c3fc3d9abc36298f5b5b6c5e2e7b4b291fe255580156109b2576000805461ff001916905550565b600061086e60008051602061581e8339815191525490565b611663612499565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040161168e9190614db3565b602060405180830381865afa1580156116ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116cf9190615287565b6116eb5760405162461bcd60e51b8152600401610986906152a4565b6001600160a01b0381166117415760405162461bcd60e51b815260206004820152601e60248201527f6e65772073746f726167652073686f756c646e277420626520656d70747900006044820152606401610986565b6109b281612cd5565b611752612499565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040161177d9190614db3565b602060405180830381865afa15801561179a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117be9190615287565b6117da5760405162461bcd60e51b8152600401610986906152a4565b60405163bdac7ca360e01b81526001600160a01b0383169063bdac7ca3906118089030908590600401615442565b600060405180830381600087803b15801561182257600080fd5b505af1158015611836573d6000803e3d6000fd5b505050505050565b611846612499565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b81526004016118719190614db3565b602060405180830381865afa15801561188e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b29190615287565b6118ce5760405162461bcd60e51b8152600401610986906152a4565b6112fb612ce7565b6000806118e1611643565b158015906118f557506118f2611643565b42115b8015611912575060006119066108de565b6001600160a01b031614155b61191a6108de565b915091509091565b600061192c612422565b6001600160a01b031663a83656936040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b600061086e60008051602061573e8339815191525490565b600061198b612422565b6001600160a01b031663b60f151a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084a573d6000803e3d6000fd5b600061086e6119d5611981565b6119e86119e0610bff565b6119e8610803565b906124c3565b6119f6612481565b6001600160a01b0316336001600160a01b03161480611a2d5750611a18612422565b6001600160a01b0316336001600160a01b0316145b80611a505750611a3b61140b565b6001600160a01b0316336001600160a01b0316145b611a6c5760405162461bcd60e51b81526004016109869061541d565b6000611a766114b2565b9050611a826001612c8a565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190611ab1903090600401614db3565b602060405180830381865afa158015611ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af29190615251565b90508015611b1657611b16611b05612481565b6001600160a01b03841690836124ed565b611b1e612c67565b5050565b611b2a612499565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b8152600401611b559190614db3565b602060405180830381865afa158015611b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b969190615287565b611bb25760405162461bcd60e51b8152600401610986906152a4565b611bba610c46565b811115611c175760405162461bcd60e51b815260206004820152602560248201527f436f6c6c61746572616c20666163746f722063616e6e6f742062652074686973604482015264040d0d2ced60db1b6064820152608401610986565b611c1f6114ca565b8111611c8b5760405162461bcd60e51b815260206004820152603560248201527f436f6c6c61746572616c20666163746f722073686f756c642062652068696768604482015274195c881d1a185b88189bdc9c9bddc81d185c99d95d605a1b6064820152608401610986565b6109b260008051602061573e833981519152829055565b600054610100900460ff1680611cbb575060005460ff16155b611cd75760405162461bcd60e51b8152600401610986906152cc565b600054610100900460ff16158015611cf9576000805461ffff19166101011790555b611d0282612cfb565b8015611b1e576000805461ff00191690555050565b600054610100900460ff1680611d30575060005460ff16155b611d4c5760405162461bcd60e51b8152600401610986906152cc565b600054610100900460ff16158015611d6e576000805461ffff19166101011790555b611d7787611ca2565b611d8086612d63565b611d8985612d7a565b611d9284612d91565b611d9b83612da8565b611da482612dbf565b611dae6001612dd6565b611db86000612cbd565b8015611dca576000805461ff00191690555b50505050505050565b600080611dde61149a565b90506000816001600160a01b0316633af9e669306040518263ffffffff1660e01b8152600401611e0e9190614db3565b6020604051808303816000875af1158015611e2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e519190615251565b90506000826001600160a01b03166317bfdfbc306040518263ffffffff1660e01b8152600401611e819190614db3565b6020604051808303816000875af1158015611ea0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec49190615251565b9050611ed08282612556565b935050505090565b611ee0612481565b6001600160a01b0316336001600160a01b03161480611f175750611f02612422565b6001600160a01b0316336001600160a01b0316145b80611f3a5750611f2561140b565b6001600160a01b0316336001600160a01b0316145b611f565760405162461bcd60e51b81526004016109869061541d565b611f5e612dee565b6000611f686114b2565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611f989190614db3565b602060405180830381865afa158015611fb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd99190615251565b9050808311611ffe57610aba611fed612481565b6001600160a01b03841690856124ed565b600061200a8483612556565b905061201581612e64565b612031612020612481565b6001600160a01b03851690866124ed565b6040516370a0823160e01b81526001600160a01b038416906370a082319061205d903090600401614db3565b602060405180830381865afa15801561207a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209e9190615251565b915081156120ae576120ae612b7f565b6120b6612c67565b50505050565b600061086e60008051602061583e833981519152612543565b6120dd612499565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b81526004016121089190614db3565b602060405180830381865afa158015612125573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121499190615287565b6121655760405162461bcd60e51b8152600401610986906152a4565b6112fb6000612cbd565b600061086e60008051602061589e833981519152612543565b600061086e60008051602061587e8339815191525490565b336000805160206158de833981519152146121ba57600080fd5b60005462010000900460ff1615806121dc57506000546301000000900460ff16155b61221f5760405162461bcd60e51b81526020600482015260146024820152734f6e6c79206f6e652063616e206265207472756560601b6044820152606401610986565b60005462010000900460ff168061223f57506000546301000000900460ff165b6122805760405162461bcd60e51b81526020600482015260126024820152714f6e652068617320746f206265207472756560701b6044820152606401610986565b600061228a6114b2565b905060006122d5846000815181106122a4576122a461531a565b6020026020010151866000815181106122bf576122bf61531a565b60200260200101516124c390919063ffffffff16565b60005490915062010000900460ff161561231a5761230c856000815181106122ff576122ff61531a565b6020026020010151612fe7565b612315816131f4565b612400565b600061232461149a565b90506000816001600160a01b03166317bfdfbc306040518263ffffffff1660e01b81526004016123549190614db3565b6020604051808303816000875af1158015612373573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123979190615251565b905060006123bf886000815181106123b1576123b161531a565b602002602001015183613277565b90506123d66001600160a01b03861684600061328d565b6123ea6001600160a01b038616848361328d565b6123f381613390565b6123fc84613448565b5050505b6118366001600160a01b0383166000805160206158de833981519152836124ed565b600061242c612499565b6001600160a01b031663f77c47916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ba573d6000803e3d6000fd5b600061086e6000805160206157fe8339815191525490565b600061086e6000805160206157be8339815191525490565b60008051602061571e8339815191525490565b6109b260008051602061575e833981519152829055565b60006124cf8284615472565b9392505050565b6109b260008051602061581e833981519152829055565b610aba8363a9059cbb60e01b848460405160240161250c929190615485565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261353a565b600061254d825490565b60011492915050565b60006124cf828461549e565b6109b26000805160206156fe833981519152829055565b6109b260008051602061585e833981519152829055565b6109b260008051602061595e833981519152829055565b611b1e82826125b75760006125ba565b60015b60ff169055565b6125c9612dee565b60006125d361146a565b905060648111156109b2576125e781613448565b60006125f16114b2565b905061266982826001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016126239190614db3565b602060405180830381865afa158015612640573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126649190615251565b613277565b915060006126906126786119c8565b61268a612683610abf565b869061360f565b9061361b565b905061269c8282613627565b610aba6000805160206158fe8339815191526126ba85610e1f61146a565b9055565b60006126c8611452565b6001600160a01b03166361252fd16040518163ffffffff1660e01b8152600401600060405180830381865afa158015612705573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261272d91908101906154b1565b905060005b8151811015611b1e57600082828151811061274f5761274f61531a565b60200260200101519050806001600160a01b031663ca37271b306040518263ffffffff1660e01b81526004016127859190614db3565b600060405180830381600087803b15801561279f57600080fd5b505af11580156127b3573d6000803e3d6000fd5b505060019093019250612732915050565b6127cc610d70565b612814577f408a4b113351e616bb41bad991f29bbad84b43c3810e7492a6bc7c6388dfe0c26127f9610d70565b604080519115158252600060208301520160405180910390a1565b600061281e612469565b9050600061282a610873565b905060006128366114b2565b905060005b6001548110156129ac5760006001828154811061285a5761285a61531a565b60009182526020822001546040516370a0823160e01b81526001600160a01b03909116925082906370a0823190612895903090600401614db3565b602060405180830381865afa1580156128b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d69190615251565b90506000811180156128fa5750856001600160a01b0316826001600160a01b031614155b156129a2576129146001600160a01b03831686600061328d565b6129286001600160a01b038316868361328d565b60405163d5bcb9b560e01b81526001600160a01b0386169063d5bcb9b59061295d9085908a9086906001903090600401615545565b6020604051808303816000875af115801561297c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a09190615251565b505b505060010161283b565b506040516370a0823160e01b81526000906001600160a01b038516906370a08231906129dc903090600401614db3565b602060405180830381865afa1580156129f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1d9190615251565b9050655af3107a4000811015612a335750505050565b612a3d8482613627565b6040516370a0823160e01b81526000906001600160a01b038616906370a0823190612a6c903090600401614db3565b602060405180830381865afa158015612a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aad9190615251565b905080600003612abe575050505050565b846001600160a01b0316836001600160a01b031614612b7857612aec6001600160a01b03861685600061328d565b612b006001600160a01b038616858361328d565b60405163d5bcb9b560e01b81526001600160a01b0385169063d5bcb9b590612b35908890879086906001903090600401615545565b6020604051808303816000875af1158015612b54573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118369190615251565b5050505050565b612b876120bc565b15612bc65760405162461bcd60e51b815260206004820152600f60248201526e656d657267656e637920737461746560881b6044820152606401610986565b6000612bd06114b2565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401612c009190614db3565b602060405180830381865afa158015612c1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c419190615251565b90508015612c5257612c5281612fe7565b612c5a61216f565b15611b1e57611b1e6139dd565b6000612c71611dd3565b90506109b260008051602061587e833981519152829055565b8015612cad57612c986125c1565b612ca06126be565b612ca86127c4565b612cb5565b612cb5612dee565b6109b2613fb6565b6109b260008051602061583e833981519152826125a7565b60008051602061571e83398151915255565b612cf160006124ac565b6112fb60006124d6565b600054610100900460ff1680612d14575060005460ff16155b612d305760405162461bcd60e51b8152600401610986906152cc565b600054610100900460ff16158015612d52576000805461ffff19166101011790555b612d5b82612cd5565b611d026115b4565b6109b26000805160206158be833981519152829055565b6109b26000805160206157be833981519152829055565b6109b260008051602061579e833981519152829055565b6109b26000805160206157fe833981519152829055565b6109b260008051602061577e833981519152829055565b6109b26000805160206156de833981519152826125a7565b6000612df8612188565b612e00611dd3565b1115612e3e576000612e1b612e13612188565b610e1f611dd3565b9050612e3a612e28610abf565b61268a612e336119c8565b849061360f565b9150505b612e5c6000805160206158fe8339815191526126ba836119e861146a565b6109b2612c67565b6000612e6e6114b2565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401612e9e9190614db3565b602060405180830381865afa158015612ebb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612edf9190615251565b9050612f0583612eed61216f565b612ef857600061424b565b612f006114ca565b61424b565b6040516370a0823160e01b81526000906001600160a01b038416906370a0823190612f34903090600401614db3565b602060405180830381865afa158015612f51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f759190615251565b905083612f828284612556565b10156120b65760405162461bcd60e51b815260206004820152602e60248201527f556e61626c6520746f2077697468647261772074686520656e7469726520616d60448201526d6f756e74556e6465726c79696e6760901b6064820152608401610986565b80600003612ff25750565b6000612ffc6114b2565b9050600061300861149a565b90506000613014611452565b6001600160a01b03166302c3bcbb836040518263ffffffff1660e01b815260040161303f9190614db3565b602060405180830381865afa15801561305c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130809190615251565b90508060000361308f57506000195b600061316c670de0b6b3a764000061268a856001600160a01b031663bd6d894d6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156130e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131049190615251565b866001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613142573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131669190615251565b9061360f565b905081811061317c575050505050565b846131878383612556565b1161319e5761319b6002610e1f8484612556565b94505b6131b36001600160a01b03851684600061328d565b6131c76001600160a01b038516848761328d565b60405163140e25ad60e31b8152600481018690526001600160a01b0384169063a0712d6890602401612b35565b806000036131ff5750565b61320761149a565b6001600160a01b031663c5ebeaec826040518263ffffffff1660e01b815260040161323491815260200190565b6020604051808303816000875af1158015613253573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1e9190615251565b600081831061328657816124cf565b5090919050565b8015806133065750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e906132c39030908690600401615442565b602060405180830381865afa1580156132e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133049190615251565b155b6133715760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610986565b610aba8363095ea7b360e01b848460405160240161250c929190615485565b8060000361339b5750565b60006133a56114b2565b905060006133b161149a565b90506133c86001600160a01b03831682600061328d565b6133dc6001600160a01b038316828561328d565b60405163073a938160e11b8152600481018490526001600160a01b03821690630e752702906024015b6020604051808303816000875af1158015613424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b69190615251565b806000036134535750565b600061345d61149a565b90506000816001600160a01b031663bd6d894d6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156134a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134c59190615251565b9050806134da84670de0b6b3a764000061360f565b101561350d5760405163db006a7560e01b8152600160048201526001600160a01b0383169063db006a7590602401613405565b60405163852a12e360e01b8152600481018490526001600160a01b0383169063852a12e390602401613405565b600061358f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166145929092919063ffffffff16565b90508051600014806135b05750808060200190518101906135b09190615287565b610aba5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610986565b60006124cf8284615575565b60006124cf828461558c565b60648111156138ba57600061363a610abf565b9050600061364d8261268a612683610803565b905060006136678361268a613660610bff565b879061360f565b905060006136818461268a61367a611981565b889061360f565b9050600061368d610be7565b90506000613699612422565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136fa919061526a565b9050876001600160a01b03166000805160206156be833981519152888542604051613727939291906155ae565b60405180910390a2876001600160a01b0316816001600160a01b031660008051602061593e833981519152898742604051613764939291906155ae565b60405180910390a3876001600160a01b0316826001600160a01b03166000805160206157de8339815191528988426040516137a1939291906155ae565b60405180910390a360006137b3612422565b6001600160a01b031663a98e929c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613814919061526a565b905061382b6001600160a01b038a1682600061328d565b61383f6001600160a01b038a16828a61328d565b604051631112a1b760e11b81526001600160a01b038a81166004830152602482018690526044820188905260648201879052821690632225436e90608401600060405180830381600087803b15801561389757600080fd5b505af11580156138ab573d6000803e3d6000fd5b50505050505050505050505050565b816001600160a01b03166000805160206156be833981519152600080426040516138e6939291906155ae565b60405180910390a2816001600160a01b0316613900612422565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b8152600401602060405180830381865afa15801561393d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613961919061526a565b6001600160a01b031660008051602061593e8339815191526000804260405161398c939291906155ae565b60405180910390a3816001600160a01b03166139a6610be7565b6001600160a01b03166000805160206157de833981519152600080426040516139d1939291906155ae565b60405180910390a35050565b60006139e761149a565b905060006139f3610c46565b905060006139ff6114ca565b90506000836001600160a01b0316633af9e669306040518263ffffffff1660e01b8152600401613a2f9190614db3565b6020604051808303816000875af1158015613a4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a729190615251565b90506000846001600160a01b03166317bfdfbc306040518263ffffffff1660e01b8152600401613aa29190614db3565b6020604051808303816000875af1158015613ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ae59190615251565b90506000613af38383612556565b90506000613b0e613b048787612556565b61268a848861360f565b905080831115613b2957613b226000612e64565b5081613db2565b6000613b33611452565b90506000816001600160a01b0316634a5844328a6040518263ffffffff1660e01b8152600401613b639190614db3565b602060405180830381865afa158015613b80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ba49190615251565b90506000826001600160a01b03166302c3bcbb8b6040518263ffffffff1660e01b8152600401613bd49190614db3565b602060405180830381865afa158015613bf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c159190615251565b905081600003613c255760001991505b80600003613c3257506000195b60008a6001600160a01b03166347bd37186040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c969190615251565b90506000613d4b670de0b6b3a764000061268a8e6001600160a01b031663bd6d894d6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015613ce9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d0d9190615251565b8f6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613142573d6000803e3d6000fd5b9050600084831015613d9757613d666002610e1f8786612556565b905083821015613d8f57613d88613d826002610e1f8786612556565b82613277565b9050613d9b565b506000613d9b565b5060005b613da9876126648b846124c3565b96505050505050505b6000613dbe8285612556565b90506000613dca6114b2565b90506000816001600160a01b03166370a082316000805160206158de8339815191526040518263ffffffff1660e01b8152600401613e089190614db3565b602060405180830381865afa158015613e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e499190615251565b905080831115613e6157613e5c846145a9565b613faa565b6040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505060408051600060208201819052929350016040516020818303038152906040529050613ece6114b2565b83600081518110613ee157613ee161531a565b60200260200101906001600160a01b031690816001600160a01b0316815250508582600081518110613f1557613f1561531a565b60209081029190910101526000805462ff0000191662010000179055604051632e1c224f60e11b81526000805160206158de83398151915290635c38449e90613f68903090879087908790600401615614565b600060405180830381600087803b158015613f8257600080fd5b505af1158015613f96573d6000803e3d6000fd5b50506000805462ff00001916905550505050505b50505050505050505050565b6000613fc061149a565b90506000816001600160a01b0316633b1d21a26040518163ffffffff1660e01b8152600401602060405180830381865afa158015614002573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140269190615251565b90506000826001600160a01b0316633af9e669306040518263ffffffff1660e01b81526004016140569190614db3565b6020604051808303816000875af1158015614075573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140999190615251565b90506000836001600160a01b03166317bfdfbc306040518263ffffffff1660e01b81526004016140c99190614db3565b6020604051808303816000875af11580156140e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061410c9190615251565b9050600061412561411b61146a565b610e1f8585612556565b905061413b6141348286613277565b600061424b565b846001600160a01b0316633b1d21a26040518163ffffffff1660e01b8152600401602060405180830381865afa158015614179573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061419d9190615251565b604051633af9e66960e01b81529094506001600160a01b03861690633af9e669906141cc903090600401614db3565b6020604051808303816000875af11580156141eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061420f9190615251565b925061421961146a565b6142238486613277565b1115612b7857612b7861424661423c60016119e861146a565b610e1f8688613277565b613448565b600061425561149a565b90506000816001600160a01b0316633af9e669306040518263ffffffff1660e01b81526004016142859190614db3565b6020604051808303816000875af11580156142a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142c89190615251565b90506000826001600160a01b03166317bfdfbc306040518263ffffffff1660e01b81526004016142f89190614db3565b6020604051808303816000875af1158015614317573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061433b9190615251565b905060008061434a8484612556565b905060006143588289612556565b905061437361436988610e1f610c46565b61268a838a61360f565b9250505060008183101561438957506000614396565b6143938383612556565b90505b60006143a06114b2565b90506000816001600160a01b03166370a082316000805160206158de8339815191526040518263ffffffff1660e01b81526004016143de9190614db3565b602060405180830381865afa1580156143fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061441f9190615251565b90508083111561443857614433898561485a565b614587565b604080516001808252818301909252600091602080830190803683375050604080516001808252818301909252929350600092915060208083019080368337019050506040805160006020820181905292935001604051602081830303815290604052905084836000815181106144b1576144b161531a565b60200260200101906001600160a01b031690816001600160a01b03168152505085826000815181106144e5576144e561531a565b60209081029190910101526000805463ff00000019166301000000179055604051632e1c224f60e11b81526000805160206158de83398151915290635c38449e9061453a903090879087908790600401615614565b600060405180830381600087803b15801561455457600080fd5b505af1158015614568573d6000803e3d6000fd5b50506000805463ff000000191690555061458390508c613448565b5050505b505050505050505050565b60606145a18484600085614bc0565b949350505050565b60006145b36114b2565b905060006145bf61149a565b90506000816001600160a01b03166317bfdfbc306040518263ffffffff1660e01b81526004016145ef9190614db3565b6020604051808303816000875af115801561460e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146329190615251565b90506000826001600160a01b0316633af9e669306040518263ffffffff1660e01b81526004016146629190614db3565b6020604051808303816000875af1158015614681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146a59190615251565b90505b84821015612b785760006146bc8684612556565b905060006146da84610e1f6146cf610c46565b61268a61367a611969565b90506146ee6146e98383613277565b6131f4565b6040516370a0823160e01b81526000906001600160a01b038816906370a082319061471d903090600401614db3565b602060405180830381865afa15801561473a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061475e9190615251565b9050801561476f5761476f81612fe7565b6040516305eff7ef60e21b81526001600160a01b038716906317bfdfbc9061479b903090600401614db3565b6020604051808303816000875af11580156147ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147de9190615251565b604051633af9e66960e01b81529095506001600160a01b03871690633af9e6699061480d903090600401614db3565b6020604051808303816000875af115801561482c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148509190615251565b93505050506146a8565b60006148646114b2565b9050600061487061149a565b90506000816001600160a01b03166317bfdfbc306040518263ffffffff1660e01b81526004016148a09190614db3565b6020604051808303816000875af11580156148bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148e39190615251565b90506000826001600160a01b0316633af9e669306040518263ffffffff1660e01b81526004016149139190614db3565b6020604051808303816000875af1158015614932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149569190615251565b90505b84821115614b1d57600061497961496e611969565b61268a612683610c46565b905060006149878488612556565b905060006149a26149988585612556565b6126648b856124c3565b90506149ad81613448565b6040516370a0823160e01b81526000906001600160a01b038916906370a08231906149dc903090600401614db3565b602060405180830381865afa1580156149f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a1d9190615251565b9050614a31614a2c8483613277565b613390565b6040516305eff7ef60e21b81526001600160a01b038816906317bfdfbc90614a5d903090600401614db3565b6020604051808303816000875af1158015614a7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614aa09190615251565b604051633af9e66960e01b81529096506001600160a01b03881690633af9e66990614acf903090600401614db3565b6020604051808303816000875af1158015614aee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b129190615251565b945050505050614959565b6040516370a0823160e01b81526000906001600160a01b038616906370a0823190614b4c903090600401614db3565b602060405180830381865afa158015614b69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b8d9190615251565b905086811015611dca576000614ba38883612556565b90506000614bb18486612556565b90506145876142468383613277565b606082471015614c215760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610986565b600080866001600160a01b03168587604051614c3d919061568e565b60006040518083038185875af1925050503d8060008114614c7a576040519150601f19603f3d011682016040523d82523d6000602084013e614c7f565b606091505b5091509150614c9087838387614c9b565b979650505050505050565b60608315614d0a578251600003614d03576001600160a01b0385163b614d035760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610986565b50816145a1565b6145a18383815115614d1f5781518083602001fd5b8060405162461bcd60e51b815260040161098691906156aa565b828054828255906000526020600020908101928215614d8e579160200282015b82811115614d8e57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614d59565b50614d9a929150614d9e565b5090565b5b80821115614d9a5760008155600101614d9f565b6001600160a01b0391909116815260200190565b6001600160a01b03811681146109b257600080fd5b600060208284031215614dee57600080fd5b81356124cf81614dc7565b600080600060608486031215614e0e57600080fd5b8335614e1981614dc7565b92506020840135614e2981614dc7565b929592945050506040919091013590565b600060208284031215614e4c57600080fd5b5035919050565b60008060408385031215614e6657600080fd5b8235614e7181614dc7565b91506020830135614e8181614dc7565b809150509250929050565b80151581146109b257600080fd5b6000806000806000806000806000806101408b8d031215614eba57600080fd5b8a35614ec581614dc7565b995060208b0135614ed581614dc7565b985060408b0135614ee581614dc7565b975060608b0135614ef581614dc7565b965060808b0135614f0581614dc7565b955060a08b0135614f1581614dc7565b945060c08b0135935060e08b013592506101008b013591506101208b0135614f3c81614e8c565b809150509295989b9194979a5092959850565b600060208284031215614f6157600080fd5b81356124cf81614e8c565b60008060008060008060c08789031215614f8557600080fd5b8635614f9081614dc7565b95506020870135614fa081614dc7565b94506040870135614fb081614dc7565b93506060870135614fc081614dc7565b92506080870135614fd081614dc7565b915060a0870135614fe081614dc7565b809150509295509295509295565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561502c5761502c614fee565b604052919050565b60006001600160401b0382111561504d5761504d614fee565b5060051b60200190565b600082601f83011261506857600080fd5b813561507b61507682615034565b615004565b8082825260208201915060208360051b86010192508583111561509d57600080fd5b602085015b838110156150ba5780358352602092830192016150a2565b5095945050505050565b600082601f8301126150d557600080fd5b81356001600160401b038111156150ee576150ee614fee565b615101601f8201601f1916602001615004565b81815284602083860101111561511657600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561514957600080fd5b84356001600160401b0381111561515f57600080fd5b8501601f8101871361517057600080fd5b803561517e61507682615034565b8082825260208201915060208360051b8501019250898311156151a057600080fd5b6020840193505b828410156151cb5783356151ba81614dc7565b8252602093840193909101906151a7565b965050505060208501356001600160401b038111156151e957600080fd5b6151f587828801615057565b93505060408501356001600160401b0381111561521157600080fd5b61521d87828801615057565b92505060608501356001600160401b0381111561523957600080fd5b615245878288016150c4565b91505092959194509250565b60006020828403121561526357600080fd5b5051919050565b60006020828403121561527c57600080fd5b81516124cf81614dc7565b60006020828403121561529957600080fd5b81516124cf81614e8c565b6020808252600e908201526d4e6f7420676f7665726e616e636560901b604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561536b5781516001600160a01b0316865260209586019590910190600101615344565b5093949350505050565b6020815260006124cf6020830184615330565b60006020828403121561539a57600080fd5b81516001600160401b038111156153b057600080fd5b8201601f810184136153c157600080fd5b80516153cf61507682615034565b8082825260208201915060208360051b8501019250868311156153f157600080fd5b6020840193505b828410156154135783518252602093840193909101906153f8565b9695505050505050565b6020808252600b908201526a1b9bdd08185b1b1bddd95960aa1b604082015260600190565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b600052601160045260246000fd5b808201808211156113615761136161545c565b6001600160a01b03929092168252602082015260400190565b818103818111156113615761136161545c565b6000602082840312156154c357600080fd5b81516001600160401b038111156154d957600080fd5b8201601f810184136154ea57600080fd5b80516154f861507682615034565b8082825260208201915060208360051b85010192508683111561551a57600080fd5b6020840193505b8284101561541357835161553481614dc7565b825260209384019390910190615521565b6001600160a01b039586168152938516602085015260408401929092526060830152909116608082015260a00190565b80820281158282048414176113615761136161545c565b6000826155a957634e487b7160e01b600052601260045260246000fd5b500490565b9283526020830191909152604082015260600190565b60005b838110156155df5781810151838201526020016155c7565b50506000910152565b600081518084526156008160208601602086016155c4565b601f01601f19169290920160200192915050565b6001600160a01b038516815260806020820181905260009061563890830186615330565b82810360408401528451808252602080870192019060005b8181101561566e578351835260209384019390920191600101615650565b5050838103606085015261568281866155e8565b98975050505050505050565b600082516156a08184602087016155c4565b9190910192915050565b6020815260006124cf60208301846155e856fe1072be0ffac0739a43e2bbe8b9b7dd277f79e5eed4fc2bac67005b3f09118a7d656de32df98753b07482576beb0d00a6b949ebf84c066c765f54f26725221bb6316ad921d519813e6e41c0e056b79e4395192c2b101f8b61cf5b94999360d568a7ec62784904ff31cbcc32d09932a58e7f1e4476e1d041995b37c917990b16dc129eccdfbcf3761d8e2f66393221fa8277b7623ad13ed7693a0025435931c64a29f7fcd4fe2517c1963807a1ec27b0e45e67c60a874d5eeac7a0b1ab1bb844476a7b588c950d46e2de3db2f157e5e0e4f29054c8d60f17bf0c30352e223a458d3d9bb16e77837e25cada0cf894835418b38e8e18fbec6cfd192eb344bebfa6b8efd7c7d9ef1040fc87e7ad11fe15f86e1d11e1df03c6d7c87f7e1f4041f08d4111b8e2ade018b082c0f17123af08137fdf13800d50b83fda08b49ba4ca2aa5cddae0aafd977983cb1e78d8f638900ff361dc3c48c43118ca1dd77d1af3f47bbf414c5263b05428f1be1bfa98e25407cc78dd031d0d3cd2a2e3d63b488804f22ea07a20a2d463a602c2b891eb35f244624d9068572811f63d0e094072fb54591a21864471ca9d8b67bc7f58951fb160897ce623fdb405c56534d08a363a47e235280539da846b4989609abdccfea039bd1453e4f710c670b29b9eeaca0730c1a21841be4c16015a744c9fbf595f7c6b32d40278c16c1fc7cf2de88c6348de44baa1709211eeccf8f4ad5b6700d52a1a9525b5f5ae1e9e5f9e5a0c2fc23c86e530000000000000000000000000ba12222222228d8ba445958a75a0704d566bf2c80af7af9f5ccfa82c3497f40c7c382677637aee27293a6243a22216b51481bd97a65533f4b41f3786d877c8fdd4ae6d27ada84e1d9c62ea3aca309e9aa03af1cda9dc538e563d9581dd26a09bae7f821924cec58d0811f80e8462740f2adab4c74e92df66cc717205e8df80bec55fc1429f703d590a2d456b97b74f0008b4a3eea2646970667358221220aa633d34d5a5e5ce8708877da6ee33884dab07d6870c543f90c66aa7d826076064736f6c634300081a0033