0 txs
0 calls
constructor
constructor()
functions
aToken
viewfunction aToken() view returns (address)
borrowedInUnderlying
viewfunction borrowedInUnderlying() view returns (uint256)
borrowTargetFactorNumerator
viewfunction borrowTargetFactorNumerator() view returns (uint256)
bVault
viewfunction bVault() view returns (address)
collateralFactorNumerator
viewfunction collateralFactorNumerator() view returns (uint256)
controller
viewfunction controller() view returns (address)
currentBalance
viewfunction currentBalance() view returns (uint256)
debtToken
viewfunction debtToken() 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)
isAToken
viewfunction isAToken(address) view returns (bool)
isRewardToken
viewfunction isRewardToken(address _token) view returns (bool)
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() view returns (address[])
rewardTokens
viewfunction rewardTokens(uint256) view returns (address)
sell
viewfunction sell() view returns (bool)
sellFloor
viewfunction sellFloor() view returns (uint256)
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)
suppliedInUnderlying
viewfunction suppliedInUnderlying() 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)
continueInvesting
nonpayablefunction continueInvesting()
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 _aToken, address _debtToken, 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)
ProfitAndBuybackLog
event ProfitAndBuybackLog(address indexed rewardToken, uint256 profitAmount, uint256 feeAmount, uint256 timestamp)
ProfitAndBuybackLog
event ProfitAndBuybackLog(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
0x608060405234801561001057600080fd5b5061003c60017f62ae7bf2df4e95c187ea09c8c47c3fc3d9abc36298f5b5b6c5e2e7b4b291fe2661086e565b7f62ae7bf2df4e95c187ea09c8c47c3fc3d9abc36298f5b5b6c5e2e7b4b291fe251461006a5761006a610895565b61009560017fa7ec62784904ff31cbcc32d09932a58e7f1e4476e1d041995b37c917990b16dd61086e565b7fa7ec62784904ff31cbcc32d09932a58e7f1e4476e1d041995b37c917990b16dc146100c3576100c3610895565b6100ee60017fa1709211eeccf8f4ad5b6700d52a1a9525b5f5ae1e9e5f9e5a0c2fc23c86e53161086e565b7fa1709211eeccf8f4ad5b6700d52a1a9525b5f5ae1e9e5f9e5a0c2fc23c86e5301461011c5761011c610895565b61014760017fefd7c7d9ef1040fc87e7ad11fe15f86e1d11e1df03c6d7c87f7e1f4041f08d4261086e565b7fefd7c7d9ef1040fc87e7ad11fe15f86e1d11e1df03c6d7c87f7e1f4041f08d411461017557610175610895565b6101a060017fdae0aafd977983cb1e78d8f638900ff361dc3c48c43118ca1dd77d1af3f47bc061086e565b7fdae0aafd977983cb1e78d8f638900ff361dc3c48c43118ca1dd77d1af3f47bbf146101ce576101ce610895565b6101f960017f45418d9b5c2787ae64acbffccad43f2b487c1a16e24385aa9d2b059f9d1d163d61086e565b7f45418d9b5c2787ae64acbffccad43f2b487c1a16e24385aa9d2b059f9d1d163c1461022757610227610895565b61025260017f3d9bb16e77837e25cada0cf894835418b38e8e18fbec6cfd192eb344bebfa6b961086e565b7f3d9bb16e77837e25cada0cf894835418b38e8e18fbec6cfd192eb344bebfa6b81461028057610280610895565b6102ab60017fc403216a7704d160f6a3b5c3b149a1226a6080f0a5dd27b27d9ba9c022fa0afd61086e565b7fc403216a7704d160f6a3b5c3b149a1226a6080f0a5dd27b27d9ba9c022fa0afc146102d9576102d9610895565b61030460017f656de32df98753b07482576beb0d00a6b949ebf84c066c765f54f26725221bb761086e565b7f656de32df98753b07482576beb0d00a6b949ebf84c066c765f54f26725221bb61461033257610332610895565b61035d60017fa07a20a2d463a602c2b891eb35f244624d9068572811f63d0e094072fb54591b61086e565b7fa07a20a2d463a602c2b891eb35f244624d9068572811f63d0e094072fb54591a1461038b5761038b610895565b6103b660017fe3ee74fb7893020b457d8071ed1ef76ace2bf4903abd7b24d3ce312e9c72c02a61086e565b7fe3ee74fb7893020b457d8071ed1ef76ace2bf4903abd7b24d3ce312e9c72c029146103e4576103e4610895565b61040f60017f0286fd414602b432a8c80a0125e9a25de9bba96da9d5068c832ff73f09208a3c61086e565b7f0286fd414602b432a8c80a0125e9a25de9bba96da9d5068c832ff73f09208a3b1461043d5761043d610895565b61046860017f29f7fcd4fe2517c1963807a1ec27b0e45e67c60a874d5eeac7a0b1ab1bb8444861086e565b7f29f7fcd4fe2517c1963807a1ec27b0e45e67c60a874d5eeac7a0b1ab1bb844471461049657610496610895565b6104c160017f414c5263b05428f1be1bfa98e25407cc78dd031d0d3cd2a2e3d63b488804f22f61086e565b7f414c5263b05428f1be1bfa98e25407cc78dd031d0d3cd2a2e3d63b488804f22e146104ef576104ef610895565b61051a60017f82b330ca72bcd6db11a26f10ce47ebcfe574a9c646bccbc6f1cd4478eae16b3261086e565b7f82b330ca72bcd6db11a26f10ce47ebcfe574a9c646bccbc6f1cd4478eae16b311461054857610548610895565b61057360017f6a7b588c950d46e2de3db2f157e5e0e4f29054c8d60f17bf0c30352e223a458e61086e565b7f6a7b588c950d46e2de3db2f157e5e0e4f29054c8d60f17bf0c30352e223a458d146105a1576105a1610895565b6105cc60017f8cdee58637b787efaa2d78bb1da1e053a2c91e61640b32339bfbba65c00abd6961086e565b7f8cdee58637b787efaa2d78bb1da1e053a2c91e61640b32339bfbba65c00abd68146105fa576105fa610895565b61062560017f29e482e0e21cdcc43d1f0a48ba975f14078bf56d1ca40ed3f48e655ac06df8cc61086e565b7f29e482e0e21cdcc43d1f0a48ba975f14078bf56d1ca40ed3f48e655ac06df8cb1461065357610653610895565b61067e60017f280539da846b4989609abdccfea039bd1453e4f710c670b29b9eeaca0730c1a361086e565b7f280539da846b4989609abdccfea039bd1453e4f710c670b29b9eeaca0730c1a2146106ac576106ac610895565b6106d760017f0af7af9f5ccfa82c3497f40c7c382677637aee27293a6243a22216b51481bd9861086e565b7f0af7af9f5ccfa82c3497f40c7c382677637aee27293a6243a22216b51481bd971461070557610705610895565b61073060017f129eccdfbcf3761d8e2f66393221fa8277b7623ad13ed7693a0025435931c64b61086e565b7f129eccdfbcf3761d8e2f66393221fa8277b7623ad13ed7693a0025435931c64a1461075e5761075e610895565b61078960017f4e92df66cc717205e8df80bec55fc1429f703d590a2d456b97b74f0008b4a3ef61086e565b7f4e92df66cc717205e8df80bec55fc1429f703d590a2d456b97b74f0008b4a3ee146107b7576107b7610895565b6107e260017fa65533f4b41f3786d877c8fdd4ae6d27ada84e1d9c62ea3aca309e9aa03af1ce61086e565b7fa65533f4b41f3786d877c8fdd4ae6d27ada84e1d9c62ea3aca309e9aa03af1cd1461081057610810610895565b61083b60017f1841be4c16015a744c9fbf595f7c6b32d40278c16c1fc7cf2de88c6348de44bb61086e565b7f1841be4c16015a744c9fbf595f7c6b32d40278c16c1fc7cf2de88c6348de44ba1461086957610869610895565b6108ab565b8181038181111561088f57634e487b7160e01b600052601160045260246000fd5b92915050565b634e487b7160e01b600052600160045260246000fd5b615bc6806108ba6000396000f3fe6080604052600436106103905760003560e01c80639a138d6d116101dc578063cc2a9a5b11610102578063e684f46a116100a0578063f77c47911161006f578063f77c47911461097a578063f7c618c11461098f578063f8d89898146109a4578063fbfa77cf146109b957600080fd5b8063e684f46a14610908578063e9eca9941461091d578063ec09560614610932578063f04f27071461095a57600080fd5b8063d3df8aa4116100dc578063d3df8aa414610898578063d610101b146108ad578063d7102067146108c3578063db620485146108f357600080fd5b8063cc2a9a5b14610843578063ce845d1d14610863578063ce8c42e81461087857600080fd5b8063b5fd73f81161017a578063c23ff8b611610149578063c23ff8b6146107cd578063c2a2a07b146107ed578063c2b18aa014610801578063c4d66de81461082357600080fd5b8063b5fd73f81461076e578063b60f151a1461078e578063b8d3370b146107a3578063bfd131f1146107b857600080fd5b8063a0c1f15e116101b6578063a0c1f15e1461071a578063a1dab23e1461072f578063a836569314610744578063b5d7a94f1461075957600080fd5b80639a138d6d146106b15780639a508c8e146106d15780639d16acfd146106e657600080fd5b80634ed65416116102c157806366666aa91161025f5780637bb7bed11161022e5780637bb7bed1146106475780638129fc1c1461066757806382de9c1b1461067c5780639137c1a71461069157600080fd5b806366666aa9146105e85780636f307dc3146105fd578063759098881461061257806375f6d6ce1461062757600080fd5b80635641ec031161029b5780635641ec03146105935780635aa6e675146105a8578063627c96ca146105bd578063643090bc146105d357600080fd5b80634ed654161461053e5780634fa5d8541461055e578063501859461461057357600080fd5b806320d1ceaf1161032e5780633f282b8d116103085780633f282b8d146104c457806345710074146104e457806345d01e4a146105095780634d352ab21461051e57600080fd5b806320d1ceaf1461047257806320d88ac714610487578063394b71cf1461049c57600080fd5b80630c80447a1161036a5780630c80447a146104065780631113ef5214610428578063180b0d7e146104485780631fe4a6861461045d57600080fd5b806303140ff41461039c57806306974e8d146103c457806309ff18f0146103f157600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103b16109ce565b6040519081526020015b60405180910390f35b3480156103d057600080fd5b506103d9610a3e565b6040516001600160a01b0390911681526020016103bb565b3480156103fd57600080fd5b506103d9610aa9565b34801561041257600080fd5b506104266104213660046153c8565b610ad3565b005b34801561043457600080fd5b506104266104433660046153e5565b610b98565b34801561045457600080fd5b506103b1610ca8565b34801561046957600080fd5b506103d9610cef565b34801561047e57600080fd5b506103b1610d19565b34801561049357600080fd5b506103b1610d60565b3480156104a857600080fd5b506103d973ba12222222228d8ba445958a75a0704d566bf2c881565b3480156104d057600080fd5b506104266104df366004615426565b610d8a565b3480156104f057600080fd5b506104f9610eb4565b60405190151581526020016103bb565b34801561051557600080fd5b506103b1610edf565b34801561052a57600080fd5b5061042661053936600461543f565b610f75565b34801561054a57600080fd5b50610426610559366004615486565b6110af565b34801561056a57600080fd5b5061042661140b565b34801561057f57600080fd5b506104f961058e3660046153c8565b6114b6565b34801561059f57600080fd5b506104266114fd565b3480156105b457600080fd5b506103d961169b565b3480156105c957600080fd5b506103b160025481565b3480156105df57600080fd5b506103b16116f0565b3480156105f457600080fd5b506103d961171a565b34801561060957600080fd5b506103d9611744565b34801561061e57600080fd5b506103b161176e565b34801561063357600080fd5b5061042661064236600461553b565b611798565b34801561065357600080fd5b506103d9610662366004615426565b611858565b34801561067357600080fd5b50610426611882565b34801561068857600080fd5b506103b1611911565b34801561069d57600080fd5b506104266106ac3660046153c8565b61193b565b3480156106bd57600080fd5b506104266106cc36600461543f565b611a3d565b3480156106dd57600080fd5b50610426611b39565b3480156106f257600080fd5b506106fb611bd7565b6040805192151583526001600160a01b039091166020830152016103bb565b34801561072657600080fd5b506103d9611c23565b34801561073b57600080fd5b506103b1611c4d565b34801561075057600080fd5b506103b1611c77565b34801561076557600080fd5b506103b1611cbe565b34801561077a57600080fd5b506104f96107893660046153c8565b611ce8565b34801561079a57600080fd5b506103b1611cfb565b3480156107af57600080fd5b506103b1611d42565b3480156107c457600080fd5b50610426611d62565b3480156107d957600080fd5b506104266107e8366004615426565b611efc565b3480156107f957600080fd5b5060016104f9565b34801561080d57600080fd5b50610816612094565b6040516103bb919061559d565b34801561082f57600080fd5b5061042661083e3660046153c8565b6120bf565b34801561084f57600080fd5b5061042661085e3660046155b0565b612135565b34801561086f57600080fd5b506103b16121fb565b34801561088457600080fd5b50610426610893366004615426565b6122e5565b3480156108a457600080fd5b506104f96125b3565b3480156108b957600080fd5b506103b160015481565b3480156108cf57600080fd5b506104f96108de3660046153c8565b60056020526000908152604090205460ff1681565b3480156108ff57600080fd5b506104266125de565b34801561091457600080fd5b506104f9612680565b34801561092957600080fd5b506103b16126ab565b34801561093e57600080fd5b506103d973f49440c1f012d041802b25a73e5b0b9166a75c0281565b34801561096657600080fd5b5061042661097536600461577a565b6126d5565b34801561098657600080fd5b506103d961291a565b34801561099b57600080fd5b506103d961296f565b3480156109b057600080fd5b506103d9612999565b3480156109c557600080fd5b506103d96129c3565b60006109d861291a565b6001600160a01b03166303140ff46040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a39919061589c565b905090565b6000610a4861291a565b6001600160a01b03166306974e8d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3991906158b5565b6000610a397f29f7fcd4fe2517c1963807a1ec27b0e45e67c60a874d5eeac7a0b1ab1bb844475490565b600080516020615b71833981519152546040516337b87c3960e21b81523360048201526001600160a01b03919091169063dee1f0e490602401602060405180830381865afa158015610b29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4d91906158d2565b610b725760405162461bcd60e51b8152600401610b69906158ef565b60405180910390fd5b610b7b816129ed565b610b95610b90610b89611c77565b4290612a16565b612a29565b50565b600080516020615b71833981519152546040516337b87c3960e21b81523360048201526001600160a01b03919091169063dee1f0e490602401602060405180830381865afa158015610bee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1291906158d2565b610c2e5760405162461bcd60e51b8152600401610b69906158ef565b610c37826114b6565b15610c8f5760405162461bcd60e51b815260206004820152602260248201527f746f6b656e20697320646566696e6564206173206e6f742073616c76616761626044820152616c6560f01b6064820152608401610b69565b610ca36001600160a01b0383168483612a52565b505050565b6000610cb261291a565b6001600160a01b031663180b0d7e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a15573d6000803e3d6000fd5b6000610a397f6a7b588c950d46e2de3db2f157e5e0e4f29054c8d60f17bf0c30352e223a458d5490565b6000610d2361291a565b6001600160a01b03166320d1ceaf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a15573d6000803e3d6000fd5b6000610a397f4e92df66cc717205e8df80bec55fc1429f703d590a2d456b97b74f0008b4a3ee5490565b600080516020615b71833981519152546040516337b87c3960e21b81523360048201526001600160a01b03919091169063dee1f0e490602401602060405180830381865afa158015610de0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0491906158d2565b610e205760405162461bcd60e51b8152600401610b69906158ef565b610e28611cbe565b8110610e8b5760405162461bcd60e51b815260206004820152602c60248201527f5461726765742073686f756c64206265206c6f776572207468616e20636f6c6c60448201526b185d195c985b081b1a5b5a5d60a21b6064820152608401610b69565b610b957fa65533f4b41f3786d877c8fdd4ae6d27ada84e1d9c62ea3aca309e9aa03af1cd829055565b6000610a397f656de32df98753b07482576beb0d00a6b949ebf84c066c765f54f26725221bb6612ab5565b6000610a39610eec6116f0565b610f6f610ef76126ab565b610eff611744565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015610f45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f69919061589c565b90612a16565b90612ac8565b600054610100900460ff1680610f8e575060005460ff16155b610faa5760405162461bcd60e51b8152600401610b6990615917565b600054610100900460ff16158015610fcc576000805461ffff19166101011790555b73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48732a1fbcb52ed4d9b23dad17e1e8aed4bb0e6079b873ed90de2d824ee766c6fd22e90b12e598f681dc9f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273c035a7cf15375ce2706766804551791ad035e0c261104b888689878787600060016103e8826110af565b60408051602081019091526001600160a01b0382168152611070906004906001615339565b506001600160a01b03166000908152600560205260409020805460ff19166001179055505082159150610ca39050576000805461ff0019169055505050565b600054610100900460ff16806110c8575060005460ff16155b6110e45760405162461bcd60e51b8152600401610b6990615917565b600054610100900460ff16158015611106576000805461ffff19166101011790555b6111288b8b8b8b8a73f49440c1f012d041802b25a73e5b0b9166a75c02612135565b896001600160a01b0316886001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611170573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119491906158b5565b6001600160a01b0316146111e05760405162461bcd60e51b81526020600482015260136024820152720aadcc8cae4d8f2d2dcce40dad2e6dac2e8c6d606b1b6044820152606401610b69565b896001600160a01b0316876001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124c91906158b5565b6001600160a01b0316146112985760405162461bcd60e51b81526020600482015260136024820152720aadcc8cae4d8f2d2dcce40dad2e6dac2e8c6d606b1b6044820152606401610b69565b6112a188612ad4565b6112aa87612afd565b82841061130e5760405162461bcd60e51b815260206004820152602c60248201527f4e756d657261746f722073686f756c6420626520736d616c6c6572207468616e60448201526b103232b737b6b4b730ba37b960a11b6064820152608401610b69565b8385106113675760405162461bcd60e51b815260206004820152602160248201527f5461726765742073686f756c64206265206c6f776572207468616e206c696d696044820152601d60fa1b6064820152608401610b69565b61137083612b26565b6113997f129eccdfbcf3761d8e2f66393221fa8277b7623ad13ed7693a0025435931c64a859055565b6113c27fa65533f4b41f3786d877c8fdd4ae6d27ada84e1d9c62ea3aca309e9aa03af1cd869055565b6113ec7f1841be4c16015a744c9fbf595f7c6b32d40278c16c1fc7cf2de88c6348de44ba83612b4f565b80156113fe576000805461ff00191690555b5050505050505050505050565b6114136129c3565b6001600160a01b0316336001600160a01b0316148061144a575061143561291a565b6001600160a01b0316336001600160a01b0316145b8061146d575061145861169b565b6001600160a01b0316336001600160a01b0316145b6114895760405162461bcd60e51b8152600401610b6990615965565b611491612b69565b600061149b612c77565b90506114a681612e74565b6114ae613436565b610b95613550565b60006114c0611744565b6001600160a01b0316826001600160a01b031614806114f757506114e2611c23565b6001600160a01b0316826001600160a01b0316145b92915050565b600080516020615b71833981519152546040516337b87c3960e21b81523360048201526001600160a01b03919091169063dee1f0e490602401602060405180830381865afa158015611553573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157791906158d2565b6115935760405162461bcd60e51b8152600401610b69906158ef565b61159d6000613585565b6115a760016135be565b6115af613550565b6115b7611c23565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa1580156115fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611621919061589c565b60015561162c612999565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015611672573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611696919061589c565b600255565b60006116b3600080516020615b718339815191525490565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a85573d6000803e3d6000fd5b6000610a397f0af7af9f5ccfa82c3497f40c7c382677637aee27293a6243a22216b51481bd975490565b6000610a397f3d9bb16e77837e25cada0cf894835418b38e8e18fbec6cfd192eb344bebfa6b85490565b6000610a397fa1709211eeccf8f4ad5b6700d52a1a9525b5f5ae1e9e5f9e5a0c2fc23c86e5305490565b6000610a397fa65533f4b41f3786d877c8fdd4ae6d27ada84e1d9c62ea3aca309e9aa03af1cd5490565b600080516020615b71833981519152546040516337b87c3960e21b81523360048201526001600160a01b03919091169063dee1f0e490602401602060405180830381865afa1580156117ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181291906158d2565b61182e5760405162461bcd60e51b8152600401610b69906158ef565b610b957f1841be4c16015a744c9fbf595f7c6b32d40278c16c1fc7cf2de88c6348de44ba82612b4f565b6004818154811061186857600080fd5b6000918252602090912001546001600160a01b0316905081565b600054610100900460ff168061189b575060005460ff16155b6118b75760405162461bcd60e51b8152600401610b6990615917565b600054610100900460ff161580156118d9576000805461ffff19166101011790555b60017f62ae7bf2df4e95c187ea09c8c47c3fc3d9abc36298f5b5b6c5e2e7b4b291fe25558015610b95576000805461ff001916905550565b6000610a397f414c5263b05428f1be1bfa98e25407cc78dd031d0d3cd2a2e3d63b488804f22e5490565b600080516020615b71833981519152546040516337b87c3960e21b81523360048201526001600160a01b03919091169063dee1f0e490602401602060405180830381865afa158015611991573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b591906158d2565b6119d15760405162461bcd60e51b8152600401610b69906158ef565b6001600160a01b038116611a275760405162461bcd60e51b815260206004820152601e60248201527f6e65772073746f726167652073686f756c646e277420626520656d70747900006044820152606401610b69565b610b9581600080516020615b7183398151915255565b600080516020615b71833981519152546040516337b87c3960e21b81523360048201526001600160a01b03919091169063dee1f0e490602401602060405180830381865afa158015611a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab791906158d2565b611ad35760405162461bcd60e51b8152600401610b69906158ef565b60405163bdac7ca360e01b81523060048201526001600160a01b03828116602483015283169063bdac7ca3906044015b600060405180830381600087803b158015611b1d57600080fd5b505af1158015611b31573d6000803e3d6000fd5b505050505050565b600080516020615b71833981519152546040516337b87c3960e21b81523360048201526001600160a01b03919091169063dee1f0e490602401602060405180830381865afa158015611b8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb391906158d2565b611bcf5760405162461bcd60e51b8152600401610b69906158ef565b6115af6135e8565b600080611be2611911565b15801590611bf65750611bf3611911565b42115b8015611c1357506000611c07610aa9565b6001600160a01b031614155b611c1b610aa9565b915091509091565b6000610a397f8cdee58637b787efaa2d78bb1da1e053a2c91e61640b32339bfbba65c00abd685490565b6000610a397fc403216a7704d160f6a3b5c3b149a1226a6080f0a5dd27b27d9ba9c022fa0afc5490565b6000611c8161291a565b6001600160a01b031663a83656936040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a15573d6000803e3d6000fd5b6000610a397f129eccdfbcf3761d8e2f66393221fa8277b7623ad13ed7693a0025435931c64a5490565b60006114f782611cf6612094565b6135fc565b6000611d0561291a565b6001600160a01b031663b60f151a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a15573d6000803e3d6000fd5b6000610a39611d4f611cfb565b610f69611d5a610d19565b610f696109ce565b611d6a6129c3565b6001600160a01b0316336001600160a01b03161480611da15750611d8c61291a565b6001600160a01b0316336001600160a01b0316145b80611dc45750611daf61169b565b6001600160a01b0316336001600160a01b0316145b611de05760405162461bcd60e51b8152600401610b6990615965565b6000611dea611744565b9050611df66001613585565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611e3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e61919061589c565b1115611eeb57611eeb611e726129c3565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eda919061589c565b6001600160a01b0384169190612a52565b611ef3613550565b506115b7611c23565b600080516020615b71833981519152546040516337b87c3960e21b81523360048201526001600160a01b03919091169063dee1f0e490602401602060405180830381865afa158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7691906158d2565b611f925760405162461bcd60e51b8152600401610b69906158ef565b611f9a610d60565b811115611ff75760405162461bcd60e51b815260206004820152602560248201527f436f6c6c61746572616c20666163746f722063616e6e6f742062652074686973604482015264040d0d2ced60db1b6064820152608401610b69565b611fff61176e565b811161206b5760405162461bcd60e51b815260206004820152603560248201527f436f6c6c61746572616c20666163746f722073686f756c642062652068696768604482015274195c881d1a185b88189bdc9c9bddc81d185c99d95d605a1b6064820152608401610b69565b610b957f129eccdfbcf3761d8e2f66393221fa8277b7623ad13ed7693a0025435931c64a829055565b6060610a397f45418d9b5c2787ae64acbffccad43f2b487c1a16e24385aa9d2b059f9d1d163c613657565b600054610100900460ff16806120d8575060005460ff16155b6120f45760405162461bcd60e51b8152600401610b6990615917565b600054610100900460ff16158015612116576000805461ffff19166101011790555b61211f82613706565b8015612131576000805461ff00191690555b5050565b600054610100900460ff168061214e575060005460ff16155b61216a5760405162461bcd60e51b8152600401610b6990615917565b600054610100900460ff1615801561218c576000805461ffff19166101011790555b612195876120bf565b61219e8661377b565b6121a7856137a4565b6121b0846137cd565b6121b9836137f6565b6121c28261381f565b6121cc6001613848565b6121d66000613872565b6121e060006135be565b80156121f2576000805461ff00191690555b50505050505050565b6000610a39612208612999565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa15801561224e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612272919061589c565b61227a611c23565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a08231906024015b602060405180830381865afa1580156122c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6f919061589c565b6122ed6129c3565b6001600160a01b0316336001600160a01b03161480612324575061230f61291a565b6001600160a01b0316336001600160a01b0316145b80612347575061233261169b565b6001600160a01b0316336001600160a01b0316145b6123635760405162461bcd60e51b8152600401610b6990615965565b61236b61389b565b6000612375611744565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156123bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e3919061589c565b905080831161240f576124086123f76129c3565b6001600160a01b0384169085612a52565b50506124c6565b600061241b8483612ac8565b90506124268161391b565b6124426124316129c3565b6001600160a01b0385169086612a52565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015612486573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124aa919061589c565b915081156124ba576124ba613436565b6124c2613550565b5050505b6124ce611c23565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015612514573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612538919061589c565b600155612543612999565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015612589573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ad919061589c565b60025550565b6000610a397fa07a20a2d463a602c2b891eb35f244624d9068572811f63d0e094072fb54591a612ab5565b600080516020615b71833981519152546040516337b87c3960e21b81523360048201526001600160a01b03919091169063dee1f0e490602401602060405180830381865afa158015612634573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265891906158d2565b6126745760405162461bcd60e51b8152600401610b69906158ef565b61267e60006135be565b565b6000610a397f1841be4c16015a744c9fbf595f7c6b32d40278c16c1fc7cf2de88c6348de44ba612ab5565b6000610a397f280539da846b4989609abdccfea039bd1453e4f710c670b29b9eeaca0730c1a25490565b3373ba12222222228d8ba445958a75a0704d566bf2c8146126f557600080fd5b60035460ff16158061270f5750600354610100900460ff16155b6127525760405162461bcd60e51b81526020600482015260146024820152734f6e6c79206f6e652063616e206265207472756560601b6044820152606401610b69565b60035460ff168061276a5750600354610100900460ff165b6127ab5760405162461bcd60e51b81526020600482015260126024820152714f6e652068617320746f206265207472756560701b6044820152606401610b69565b60006127b5611744565b90506000612800846000815181106127cf576127cf6159c2565b6020026020010151866000815181106127ea576127ea6159c2565b6020026020010151612a1690919063ffffffff16565b60035490915060ff161561283f5761283185600081518110612824576128246159c2565b6020026020010151613a9c565b61283a81613bb5565b6128f2565b6000612849612999565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa15801561288f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b3919061589c565b905060006128db876000815181106128cd576128cd6159c2565b602002602001015183613c8b565b90506128e681613ca1565b6128ef83613d90565b50505b611b316001600160a01b03831673ba12222222228d8ba445958a75a0704d566bf2c883612a52565b6000612932600080516020615b718339815191525490565b6001600160a01b031663f77c47916040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a85573d6000803e3d6000fd5b6000610a397fdae0aafd977983cb1e78d8f638900ff361dc3c48c43118ca1dd77d1af3f47bbf5490565b6000610a397f29e482e0e21cdcc43d1f0a48ba975f14078bf56d1ca40ed3f48e655ac06df8cb5490565b6000610a397fefd7c7d9ef1040fc87e7ad11fe15f86e1d11e1df03c6d7c87f7e1f4041f08d415490565b610b957f29f7fcd4fe2517c1963807a1ec27b0e45e67c60a874d5eeac7a0b1ab1bb84447829055565b6000612a2282846159ee565b9392505050565b610b957f414c5263b05428f1be1bfa98e25407cc78dd031d0d3cd2a2e3d63b488804f22e829055565b6040516001600160a01b038316602482015260448101829052610ca390849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613e58565b6000612abf825490565b60011492915050565b6000612a228284615a01565b610b957f8cdee58637b787efaa2d78bb1da1e053a2c91e61640b32339bfbba65c00abd68829055565b610b957f29e482e0e21cdcc43d1f0a48ba975f14078bf56d1ca40ed3f48e655ac06df8cb829055565b610b957f4e92df66cc717205e8df80bec55fc1429f703d590a2d456b97b74f0008b4a3ee829055565b6121318282612b5f576000612b62565b60015b60ff169055565b612b7161389b565b6000612b7b6116f0565b9050612710811115610b9557612b9081613d90565b6000612b9a611744565b6040516370a0823160e01b8152306004820152909150612c109083906001600160a01b038416906370a0823190602401602060405180830381865afa158015612be7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c0b919061589c565b613c8b565b91506000612c37612c1f611d42565b612c31612c2a610ca8565b8690613f2d565b90613f39565b9050612c438282613f45565b610ca37f0af7af9f5ccfa82c3497f40c7c382677637aee27293a6243a22216b51481bd97612c7385610f6f6116f0565b9055565b600080612c82611c23565b90506000816001600160a01b03166375d264136040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ce891906158b5565b60408051600280825260608201835292935060009290916020830190803683370190505090508281600081518110612d2257612d226159c2565b60200260200101906001600160a01b031690816001600160a01b031681525050612d4a612999565b81600181518110612d5d57612d5d6159c2565b6001600160a01b0392831660209182029290920101526040516370a0823160e01b81523060048201526000918516906370a0823190602401602060405180830381865afa158015612db2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd6919061589c565b60405163bb492bf560e01b81529091506001600160a01b0384169063bb492bf590612e079085903090600401615a14565b600060405180830381600087803b158015612e2157600080fd5b505af1158015612e35573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152612e6b92508391506001600160a01b038716906370a08231906024016122a4565b94505050505090565b612e7c610eb4565b612ec5577f408a4b113351e616bb41bad991f29bbad84b43c3810e7492a6bc7c6388dfe0c2612ea9610eb4565b604080519115158252600060208301520160405180910390a150565b6000612ecf61296f565b90506000612edb610a3e565b905060005b60045481101561326c57600060048281548110612eff57612eff6159c2565b60009182526020822001546001600160a01b03169150612f1d611c23565b6001600160a01b0316826001600160a01b031603612f4f575084612f4081613d90565b612f48611744565b9150613186565b6001600160a01b03821660009081526005602052604090205460ff161561311b576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015612fb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd8919061589c565b90508015613116576000826001600160a01b0316637535d2466040518163ffffffff1660e01b8152600401602060405180830381865afa158015613020573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304491906158b5565b9050826001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a891906158b5565b604051631a4ca37b60e21b81526001600160a01b03808316600483015260248201859052306044830152919450908216906369328dec90606401600060405180830381600087803b1580156130fc57600080fd5b505af1158015613110573d6000803e3d6000fd5b50505050505b613186565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa15801561315f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613183919061589c565b90505b80600003613195575050613264565b846001600160a01b0316826001600160a01b031614613261576131c36001600160a01b0383168560006143b6565b6131d76001600160a01b03831685836143b6565b60405163d5bcb9b560e01b81526001600160a01b0383811660048301528681166024830152604482018390526001606483015230608483015285169063d5bcb9b59060a4016020604051808303816000875af115801561323b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325f919061589c565b505b50505b600101612ee0565b506040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156132b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d8919061589c565b90506132e48382613f45565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa15801561332b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334f919061589c565b905080600003613360575050505050565b600061336a611744565b9050846001600160a01b0316816001600160a01b031614611b315761339a6001600160a01b0386168560006143b6565b6133ae6001600160a01b03861685846143b6565b60405163d5bcb9b560e01b81526001600160a01b0386811660048301528281166024830152604482018490526001606483015230608483015285169063d5bcb9b59060a4016020604051808303816000875af1158015613412573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f2919061589c565b61343e6125b3565b156134a85760405162461bcd60e51b815260206004820152603460248201527f416374696f6e20626c6f636b65642061732074686520737472617465677920696044820152737320696e20656d657267656e637920737461746560601b6064820152608401610b69565b60006134b2611744565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156134fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613520919061589c565b905080156135315761353181613a9c565b613539612680565b15613546576135466144cb565b50506115b7611c23565b600061355a6121fb565b9050610b957f280539da846b4989609abdccfea039bd1453e4f710c670b29b9eeaca0730c1a2829055565b80156135ae57613593612b69565b600061359d612c77565b90506135a881612e74565b506135b6565b6135b661389b565b610b95614815565b610b957fa07a20a2d463a602c2b891eb35f244624d9068572811f63d0e094072fb54591a82612b4f565b6135f260006129ed565b61267e6000612a29565b6000805b825181101561364d57836001600160a01b0316838281518110613625576136256159c2565b60200260200101516001600160a01b0316036136455760019150506114f7565b600101613600565b5060009392505050565b6060613661825490565b67ffffffffffffffff81111561367957613679615632565b6040519080825280602002602001820160405280156136a2578160200160208202803683370190505b50905060005b8151811015613700576136ce816136c08560016159ee565b6136ca91906159ee565b5490565b8282815181106136e0576136e06159c2565b6001600160a01b03909216602092830291909101909101526001016136a8565b50919050565b600054610100900460ff168061371f575060005460ff16155b61373b5760405162461bcd60e51b8152600401610b6990615917565b600054610100900460ff1615801561375d576000805461ffff19166101011790555b61377382600080516020615b7183398151915255565b61211f611882565b610b957fa1709211eeccf8f4ad5b6700d52a1a9525b5f5ae1e9e5f9e5a0c2fc23c86e530829055565b610b957fefd7c7d9ef1040fc87e7ad11fe15f86e1d11e1df03c6d7c87f7e1f4041f08d41829055565b610b957f3d9bb16e77837e25cada0cf894835418b38e8e18fbec6cfd192eb344bebfa6b8829055565b610b957fdae0aafd977983cb1e78d8f638900ff361dc3c48c43118ca1dd77d1af3f47bbf829055565b610b957f6a7b588c950d46e2de3db2f157e5e0e4f29054c8d60f17bf0c30352e223a458d829055565b610b957f656de32df98753b07482576beb0d00a6b949ebf84c066c765f54f26725221bb682612b4f565b610b957fc403216a7704d160f6a3b5c3b149a1226a6080f0a5dd27b27d9ba9c022fa0afc829055565b60006138a56126ab565b6138ad6121fb565b11156138eb5760006138c86138c06126ab565b610f6f6121fb565b90506138e76138d5610ca8565b612c316138e0611d42565b8490613f2d565b9150505b6114ae7f0af7af9f5ccfa82c3497f40c7c382677637aee27293a6243a22216b51481bd97612c7383610f696116f0565b6000613925611744565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561396f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613993919061589c565b90506139b9836139a1612680565b6139ac5760006149c6565b6139b461176e565b6149c6565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015613a00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a24919061589c565b905083613a318284612ac8565b1015613a965760405162461bcd60e51b815260206004820152602e60248201527f556e61626c6520746f2077697468647261772074686520656e7469726520616d60448201526d6f756e74556e6465726c79696e6760901b6064820152608401610b69565b50505050565b80600003613aa75750565b6000613ab1611744565b90506000613abd611c23565b6001600160a01b0316637535d2466040518163ffffffff1660e01b8152600401602060405180830381865afa158015613afa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b1e91906158b5565b9050613b356001600160a01b0383168260006143b6565b613b496001600160a01b03831682856143b6565b60405163617ba03760e01b81526001600160a01b038381166004830152602482018590523060448301526000606483015282169063617ba037906084015b600060405180830381600087803b158015613ba157600080fd5b505af11580156121f2573d6000803e3d6000fd5b80600003613bc05750565b6000613bca611c23565b6001600160a01b0316637535d2466040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2b91906158b5565b9050806001600160a01b031663a415bcad613c44611744565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101859052600260448201526000606482015230608482015260a401611b03565b6000818310613c9a5781612a22565b5090919050565b80600003613cac5750565b6000613cb6611744565b90506000613cc2611c23565b6001600160a01b0316637535d2466040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d2391906158b5565b9050613d3a6001600160a01b0383168260006143b6565b613d4e6001600160a01b03831682856143b6565b60405163573ade8160e01b81526001600160a01b038381166004830152602482018590526002604483015230606483015282169063573ade8190608401613b87565b80600003613d9b5750565b6000613da5611c23565b6001600160a01b0316637535d2466040518163ffffffff1660e01b8152600401602060405180830381865afa158015613de2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e0691906158b5565b9050806001600160a01b03166369328dec613e1f611744565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101859052306044820152606401611b03565b6000613ead826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614d0f9092919063ffffffff16565b9050805160001480613ece575080806020019051810190613ece91906158d2565b610ca35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610b69565b6000612a228284615a3e565b6000612a228284615a55565b6064811115614236576000613f58610ca8565b90506000613f6b82612c31612c2a6109ce565b90506000613f8583612c31613f7e610d19565b8790613f2d565b90506000613f9f84612c31613f98611cfb565b8890613f2d565b90506000613fab610cef565b90506000613fb761291a565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ff4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061401891906158b5565b6040805189815260208101869052428183015290519192506001600160a01b038a16917f1072be0ffac0739a43e2bbe8b9b7dd277f79e5eed4fc2bac67005b3f09118a7d9181900360600190a2876001600160a01b0316816001600160a01b03167fa9dc538e563d9581dd26a09bae7f821924cec58d0811f80e8462740f2adab4c78987426040516140bd939291909283526020830191909152604082015260600190565b60405180910390a3876001600160a01b0316826001600160a01b03167f11b8e2ade018b082c0f17123af08137fdf13800d50b83fda08b49ba4ca2aa5cd89884260405161411d939291909283526020830191909152604082015260600190565b60405180910390a3600061412f61291a565b6001600160a01b031663a98e929c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561416c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061419091906158b5565b90506141a76001600160a01b038a168260006143b6565b6141bb6001600160a01b038a16828a6143b6565b604051631112a1b760e11b81526001600160a01b038a81166004830152602482018690526044820188905260648201879052821690632225436e90608401600060405180830381600087803b15801561421357600080fd5b505af1158015614227573d6000803e3d6000fd5b50505050505050505050505050565b6040805160008082526020820152428183015290516001600160a01b038416917f1072be0ffac0739a43e2bbe8b9b7dd277f79e5eed4fc2bac67005b3f09118a7d919081900360600190a2816001600160a01b031661429361291a565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b8152600401602060405180830381865afa1580156142d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142f491906158b5565b6001600160a01b03167fa9dc538e563d9581dd26a09bae7f821924cec58d0811f80e8462740f2adab4c760008042604051614342939291909283526020830191909152604082015260600190565b60405180910390a3816001600160a01b031661435c610cef565b6001600160a01b03167f11b8e2ade018b082c0f17123af08137fdf13800d50b83fda08b49ba4ca2aa5cd600080426040516143aa939291909283526020830191909152604082015260600190565b60405180910390a35050565b8015806144305750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801561440a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061442e919061589c565b155b61449b5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610b69565b6040516001600160a01b038316602482015260448101829052610ca390849063095ea7b360e01b90606401612a7e565b60006144d5610d60565b905060006144e161176e565b905060006144ed611c23565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015614533573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614557919061589c565b90506000614563612999565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa1580156145a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145cd919061589c565b905060006145db8383612ac8565b905060006145f66145ec8787612ac8565b612c318488613f2d565b90506000818411156146145761460c600061391b565b506000614621565b61461e8285612ac8565b90505b600061462b611744565b6040516370a0823160e01b815273ba12222222228d8ba445958a75a0704d566bf2c860048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015614689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146ad919061589c565b9050808311156146c8576146c387878b8b614d26565b61480a565b60408051600180825281830190925260009160208083019080368337505060408051600180825281830190925292935060009291506020808301908036833701905050604080516000602082018190529293500160405160208183030381529060405290508483600081518110614741576147416159c2565b60200260200101906001600160a01b031690816001600160a01b0316815250508582600081518110614775576147756159c2565b60209081029190910101526003805460ff19166001179055604051632e1c224f60e11b815273ba12222222228d8ba445958a75a0704d566bf2c890635c38449e906147ca903090879087908790600401615ac7565b600060405180830381600087803b1580156147e457600080fd5b505af11580156147f8573d6000803e3d6000fd5b50506003805460ff1916905550505050505b505050505050505050565b600061481f611c23565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015614869573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061488d919061589c565b90506000614899612999565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa1580156148df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614903919061589c565b905060006149216149176001610f696116f0565b610f6f8585612ac8565b905061492e8160006149c6565b6040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa158015614972573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614996919061589c565b92506149a06116f0565b831115613a9657613a966149c16149ba6001610f696116f0565b8590612ac8565b613d90565b60006149d0611c23565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015614a16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a3a919061589c565b90506000614a46612999565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015614a8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ab0919061589c565b9050600080614abf8484612ac8565b90506000614acd8288612ac8565b9050614ae8614ade87610f6f610d60565b612c318389613f2d565b92505050600081831015614afe57506000614b0b565b614b088383612ac8565b90505b6000614b15611744565b6040516370a0823160e01b815273ba12222222228d8ba445958a75a0704d566bf2c860048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015614b73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b97919061589c565b905080831115614bba57614bb5888787614baf610d60565b8b614f0e565b614d05565b60408051600180825281830190925260009160208083019080368337505060408051600180825281830190925292935060009291506020808301908036833701905050604080516000602082018190529293500160405160208183030381529060405290508483600081518110614c3357614c336159c2565b60200260200101906001600160a01b031690816001600160a01b0316815250508582600081518110614c6757614c676159c2565b60209081029190910101526003805461ff001916610100179055604051632e1c224f60e11b815273ba12222222228d8ba445958a75a0704d566bf2c890635c38449e90614cbe903090879087908790600401615ac7565b600060405180830381600087803b158015614cd857600080fd5b505af1158015614cec573d6000803e3d6000fd5b50506003805461ff0019169055506113fe90508b613d90565b5050505050505050565b6060614d1e84846000856151c0565b949350505050565b6000614d30611744565b90506000614d3e8686612ac8565b90506000614d59614d4f8686612ac8565b612c318487613f2d565b90505b808610156121f2576000614d708288612ac8565b90506000614d8e88610f6f89612c31614d87611cbe565b8e90613f2d565b9050614da2614d9d8383613c8b565b613bb5565b6040516370a0823160e01b81523060048201526000906001600160a01b038716906370a0823190602401602060405180830381865afa158015614de9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e0d919061589c565b90508015614e1e57614e1e81613a9c565b614e26612999565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015614e6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e90919061589c565b9850614e9a611c23565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015614ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f04919061589c565b9950505050614d5c565b6000614f18611744565b9050600080614f278787612ac8565b90506000614f35828a612ac8565b9050614f4e614f448787612ac8565b612c318388613f2d565b925050505b80851115615116576000614f72614f68611cbe565b612c318888613f2d565b90506000614f808784612ac8565b90506000614f9b614f918a85612ac8565b612c0b8c85612a16565b9050614fa681613d90565b6040516370a0823160e01b81523060048201526000906001600160a01b038716906370a0823190602401602060405180830381865afa158015614fed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615011919061589c565b90506150256150208483613c8b565b613ca1565b61502d612999565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015615073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615097919061589c565b98506150a1611c23565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa1580156150e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061510b919061589c565b995050505050614f53565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa15801561515d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615181919061589c565b905087811015614d055760006151978983612ac8565b905060006151a58989612ac8565b90506151b46149c18383613c8b565b50505050505050505050565b6060824710156152215760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610b69565b600080866001600160a01b0316858760405161523d9190615b41565b60006040518083038185875af1925050503d806000811461527a576040519150601f19603f3d011682016040523d82523d6000602084013e61527f565b606091505b50915091506152908783838761529b565b979650505050505050565b6060831561530a578251600003615303576001600160a01b0385163b6153035760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b69565b5081614d1e565b614d1e838381511561531f5781518083602001fd5b8060405162461bcd60e51b8152600401610b699190615b5d565b82805482825590600052602060002090810192821561538e579160200282015b8281111561538e57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190615359565b5061539a92915061539e565b5090565b5b8082111561539a576000815560010161539f565b6001600160a01b0381168114610b9557600080fd5b6000602082840312156153da57600080fd5b8135612a22816153b3565b6000806000606084860312156153fa57600080fd5b8335615405816153b3565b92506020840135615415816153b3565b929592945050506040919091013590565b60006020828403121561543857600080fd5b5035919050565b6000806040838503121561545257600080fd5b823561545d816153b3565b9150602083013561546d816153b3565b809150509250929050565b8015158114610b9557600080fd5b6000806000806000806000806000806101408b8d0312156154a657600080fd5b8a356154b1816153b3565b995060208b01356154c1816153b3565b985060408b01356154d1816153b3565b975060608b01356154e1816153b3565b965060808b01356154f1816153b3565b955060a08b0135615501816153b3565b945060c08b0135935060e08b013592506101008b013591506101208b013561552881615478565b809150509295989b9194979a5092959850565b60006020828403121561554d57600080fd5b8135612a2281615478565b600081518084526020840193506020830160005b828110156155935781516001600160a01b031686526020958601959091019060010161556c565b5093949350505050565b602081526000612a226020830184615558565b60008060008060008060c087890312156155c957600080fd5b86356155d4816153b3565b955060208701356155e4816153b3565b945060408701356155f4816153b3565b93506060870135615604816153b3565b92506080870135615614816153b3565b915060a0870135615624816153b3565b809150509295509295509295565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561567157615671615632565b604052919050565b600067ffffffffffffffff82111561569357615693615632565b5060051b60200190565b600082601f8301126156ae57600080fd5b81356156c16156bc82615679565b615648565b8082825260208201915060208360051b8601019250858311156156e357600080fd5b602085015b838110156157005780358352602092830192016156e8565b5095945050505050565b600082601f83011261571b57600080fd5b813567ffffffffffffffff81111561573557615735615632565b615748601f8201601f1916602001615648565b81815284602083860101111561575d57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561579057600080fd5b843567ffffffffffffffff8111156157a757600080fd5b8501601f810187136157b857600080fd5b80356157c66156bc82615679565b8082825260208201915060208360051b8501019250898311156157e857600080fd5b6020840193505b82841015615813578335615802816153b3565b8252602093840193909101906157ef565b9650505050602085013567ffffffffffffffff81111561583257600080fd5b61583e8782880161569d565b935050604085013567ffffffffffffffff81111561585b57600080fd5b6158678782880161569d565b925050606085013567ffffffffffffffff81111561588457600080fd5b6158908782880161570a565b91505092959194509250565b6000602082840312156158ae57600080fd5b5051919050565b6000602082840312156158c757600080fd5b8151612a22816153b3565b6000602082840312156158e457600080fd5b8151612a2281615478565b6020808252600e908201526d4e6f7420676f7665726e616e636560901b604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526039908201527f5468652073656e6465722068617320746f2062652074686520636f6e74726f6c60408201527f6c65722c20676f7665726e616e63652c206f72207661756c7400000000000000606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156114f7576114f76159d8565b818103818111156114f7576114f76159d8565b604081526000615a276040830185615558565b905060018060a01b03831660208301529392505050565b80820281158282048414176114f7576114f76159d8565b600082615a7257634e487b7160e01b600052601260045260246000fd5b500490565b60005b83811015615a92578181015183820152602001615a7a565b50506000910152565b60008151808452615ab3816020860160208601615a77565b601f01601f19169290920160200192915050565b6001600160a01b0385168152608060208201819052600090615aeb90830186615558565b82810360408401528451808252602080870192019060005b81811015615b21578351835260209384019390920191600101615b03565b50508381036060850152615b358186615a9b565b98975050505050505050565b60008251615b53818460208701615a77565b9190910192915050565b602081526000612a226020830184615a9b56fea7ec62784904ff31cbcc32d09932a58e7f1e4476e1d041995b37c917990b16dca26469706673582212206428fa28e4461efe5a8e570439f2c1eec0282348fa6ce4867b55e86a418c932664736f6c634300081a0033