0 txs
0 calls
constructor
constructor(address _owner, address[] _rewardTokens, address[] _rewardManagers, uint256[] _rewardRates, address[] _gaugeControllers, address[] _rewardDistributors, address _stakingToken)
functions
calcCurCombinedWeight
viewfunction calcCurCombinedWeight(address account) view returns (uint256 old_combined_weight, uint256 new_vefxs_multiplier, uint256 new_combined_weight)
calcCurrLockMultiplier
viewfunction calcCurrLockMultiplier(address account, uint256 stake_idx) view returns (uint256 midpoint_lock_multiplier)
combinedWeightOf
viewfunction combinedWeightOf(address account) view returns (uint256)
earned
viewfunction earned(address account) view returns (uint256[] new_earned)
fraxPerLPStored
viewfunction fraxPerLPStored() view returns (uint256)
fraxPerLPToken
viewfunction fraxPerLPToken() view returns (uint256)
getAllRewardTokens
viewfunction getAllRewardTokens() view returns (address[])
getProxyFor
viewfunction getProxyFor(address addr) view returns (address)
getRewardForDuration
viewfunction getRewardForDuration() view returns (uint256[] rewards_per_duration_arr)
isTokenManagerFor
viewfunction isTokenManagerFor(address caller_addr, address reward_token_addr) view returns (bool)
lastRewardClaimTime
viewfunction lastRewardClaimTime(address) view returns (uint256)
lastUpdateTime
viewfunction lastUpdateTime() view returns (uint256)
lens
viewfunction lens() view returns (address)
lock_max_multiplier
viewfunction lock_max_multiplier() view returns (uint256)
lock_time_for_max_multiplier
viewfunction lock_time_for_max_multiplier() view returns (uint256)
lock_time_min
viewfunction lock_time_min() view returns (uint256)
lockedLiquidityOf
viewfunction lockedLiquidityOf(address account) view returns (uint256)
lockedStakes
viewfunction lockedStakes(address, uint256) view returns (bytes32 kek_id, uint256 start_timestamp, uint256 liquidity, uint256 ending_timestamp, uint256 lock_multiplier)
lockedStakesOf
viewfunction lockedStakesOf(address account) view returns (tuple[])
lockedStakesOfLength
viewfunction lockedStakesOfLength(address account) view returns (uint256)
lockMultiplier
viewfunction lockMultiplier(uint256 secs) view returns (uint256)
lp_tkn
viewfunction lp_tkn() view returns (address)
maxLPForMaxBoost
viewfunction maxLPForMaxBoost(address account) view returns (uint256)
minter
viewfunction minter() view returns (address)
minVeFXSForMaxBoost
viewfunction minVeFXSForMaxBoost(address account) view returns (uint256)
minVeFXSForMaxBoostProxy
viewfunction minVeFXSForMaxBoostProxy(address proxy_address) view returns (uint256)
nominatedOwner
viewfunction nominatedOwner() view returns (address)
owner
viewfunction owner() view returns (address)
periodFinish
viewfunction periodFinish() view returns (uint256)
proxy_lp_balances
viewfunction proxy_lp_balances(address) view returns (uint256)
proxyStakedFrax
viewfunction proxyStakedFrax(address proxy_address) view returns (uint256)
rewardManagers
viewfunction rewardManagers(address) view returns (address)
rewardRates
viewfunction rewardRates(uint256 token_idx) view returns (uint256 rwd_rate)
rewardsDuration
viewfunction rewardsDuration() view returns (uint256)
rewardsPerToken
viewfunction rewardsPerToken() view returns (uint256[] newRewardsPerTokenStored)
rewardTokenAddrToIdx
viewfunction rewardTokenAddrToIdx(address) view returns (uint256)
staker_designated_proxies
viewfunction staker_designated_proxies(address) view returns (address)
stakesUnlocked
viewfunction stakesUnlocked() view returns (bool)
stakingToken
viewfunction stakingToken() view returns (address)
totalCombinedWeight
viewfunction totalCombinedWeight() view returns (uint256)
totalLiquidityLocked
viewfunction totalLiquidityLocked() view returns (uint256)
univ3_pool
viewfunction univ3_pool() view returns (address)
userStakedFrax
viewfunction userStakedFrax(address account) view returns (uint256)
vefxs_boost_scale_factor
viewfunction vefxs_boost_scale_factor() view returns (uint256)
vefxs_max_multiplier
viewfunction vefxs_max_multiplier() view returns (uint256)
vefxs_per_frax_for_max_boost
viewfunction vefxs_per_frax_for_max_boost() view returns (uint256)
veFXSMultiplier
viewfunction veFXSMultiplier(address account) view returns (uint256 vefxs_multiplier)
acceptOwnership
nonpayablefunction acceptOwnership()
changeTokenManager
nonpayablefunction changeTokenManager(address reward_token_address, address new_manager_address)
getReward
nonpayablefunction getReward(address destination_address) returns (uint256[])
getReward2
nonpayablefunction getReward2(address destination_address, bool claim_extra_too) returns (uint256[])
getRewardExtraLogic
nonpayablefunction getRewardExtraLogic(address destination_address)
lockAdditional
nonpayablefunction lockAdditional(bytes32 kek_id, uint256 addl_liq)
lockLonger
nonpayablefunction lockLonger(bytes32 kek_id, uint256 new_ending_ts)
nominateNewOwner
nonpayablefunction nominateNewOwner(address _owner)
proxyToggleStaker
nonpayablefunction proxyToggleStaker(address staker_address)
recoverERC20
nonpayablefunction recoverERC20(address tokenAddress, uint256 tokenAmount)
setBunniAddrs
nonpayablefunction setBunniAddrs(address _lens, address _minter)
setMiscVariables
nonpayablefunction setMiscVariables(uint256[6] _misc_vars)
setPauses
nonpayablefunction setPauses(bool _stakingPaused, bool _withdrawalsPaused, bool _rewardsCollectionPaused, bool _collectRewardsOnWithdrawalPaused)
setRewardVars
nonpayablefunction setRewardVars(address reward_token_address, uint256 _new_rate, address _gauge_controller_address, address _rewards_distributor_address)
stakeLocked
nonpayablefunction stakeLocked(uint256 liquidity, uint256 secs) returns (bytes32)
stakerSetVeFXSProxy
nonpayablefunction stakerSetVeFXSProxy(address proxy_address)
sync_gauge_weights
nonpayablefunction sync_gauge_weights(bool force_update)
sync
nonpayablefunction sync()
toggleBunni3rdPartyOLITClaimer
nonpayablefunction toggleBunni3rdPartyOLITClaimer(address _claimer)
toggleValidVeFXSProxy
nonpayablefunction toggleValidVeFXSProxy(address _proxy_addr)
unlockStakes
nonpayablefunction unlockStakes()
withdrawLocked
nonpayablefunction withdrawLocked(bytes32 kek_id, address destination_address, bool claim_rewards) returns (uint256)
events
LockedAdditional
event LockedAdditional(address indexed user, bytes32 kek_id, uint256 amount)
LockedLonger
event LockedLonger(address indexed user, bytes32 kek_id, uint256 new_secs, uint256 new_start_ts, uint256 new_end_ts)
OwnerChanged
event OwnerChanged(address oldOwner, address newOwner)
OwnerNominated
event OwnerNominated(address newOwner)
RewardPaid
event RewardPaid(address indexed user, uint256 amount, address token_address, address destination_address)
StakeLocked
event StakeLocked(address indexed user, uint256 amount, uint256 secs, bytes32 kek_id, address source_address)
WithdrawLocked
event WithdrawLocked(address indexed user, uint256 liquidity, bytes32 kek_id, address destination_address)
errors
No errors.
creation bytecode
0x6080604052600480546001600160a01b031990811673b73f303472c4fd4ff3b9f59ce0f9b13e47fbfd19179091556005805490911673f087521ffca0fa8a43f5c445773ab37c5f574da0179055671bc16d674ec8000060098190556305a39a80600a5562091050600b55673782dace9d900000600c819055600d91909155600e553480156200008d57600080fd5b5060405162005fe238038062005fe2833981016040819052620000b09162000820565b86868686868686868686868686856001600160a01b038116620001195760405162461bcd60e51b815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f74206265203000000000000000604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b03831690811782556040805192835260208301919091527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a150600160025584516200018b906013906020880190620005f7565b508151620001a1906014906020850190620005f7565b508051620001b7906015906020840190620005f7565b508251620001cd90601690602086019062000661565b5060005b85518110156200038b578060186000888481518110620001f557620001f562000927565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055506001601760008884815181106200023c576200023c62000927565b6020908102919091018101516001600160a01b031682528101919091526040016000908120805460ff191692151592909217909155601980546001810182559082527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c969501558451859082908110620002b857620002b862000927565b602002602001015160126000888481518110620002d957620002d962000927565b6020908102919091018101516001600160a01b03908116835290820192909252604001600090812080546001600160a01b03191693909216929092179055601d805460018181019092557f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f01829055601e8054918201815582527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e35001558062000382816200093d565b915050620001d1565b506025805460ff19169055426008556040805163513872bd60e01b81529051733669c421b77340b2979d1a00a792cc2ee0fce7379163513872bd9160048083019260209291908290030181865afa158015620003eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000411919062000965565b6007555050600380546001600160a01b0319166001600160a01b038e1690811790915560408051634163183360e11b81529051919c506382c630669b5060048181019b5060209a509198508890030195508694508a93505050505afa1580156200047f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a591906200097f565b602780546001600160a01b0319166001600160a01b03929092169182179055604080516316f0115b60e01b815290516316f0115b916004808201926020929091908290030181865afa15801562000500573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200052691906200097f565b602880546001600160a01b0319166001600160a01b0392909216918217905560408051630dfe168160e01b8152905160009291630dfe16819160048083019260209291908290030181865afa15801562000584573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005aa91906200097f565b6025805460ff60281b191673853d955acef822db058eb8505911ed77f175b99e6001600160a01b039390931692909214650100000000000291909117905550620009a49650505050505050565b8280548282559060005260206000209081019282156200064f579160200282015b828111156200064f57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000618565b506200065d9291506200069f565b5090565b8280548282559060005260206000209081019282156200064f579160200282015b828111156200064f57825182559160200191906001019062000682565b5b808211156200065d5760008155600101620006a0565b80516001600160a01b0381168114620006ce57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620007145762000714620006d3565b604052919050565b60006001600160401b03821115620007385762000738620006d3565b5060051b60200190565b600082601f8301126200075457600080fd5b815160206200076d62000767836200071c565b620006e9565b82815260059290921b840181019181810190868411156200078d57600080fd5b8286015b84811015620007b357620007a581620006b6565b835291830191830162000791565b509695505050505050565b600082601f830112620007d057600080fd5b81516020620007e362000767836200071c565b82815260059290921b840181019181810190868411156200080357600080fd5b8286015b84811015620007b3578051835291830191830162000807565b600080600080600080600060e0888a0312156200083c57600080fd5b6200084788620006b6565b60208901519097506001600160401b03808211156200086557600080fd5b620008738b838c0162000742565b975060408a01519150808211156200088a57600080fd5b620008988b838c0162000742565b965060608a0151915080821115620008af57600080fd5b620008bd8b838c01620007be565b955060808a0151915080821115620008d457600080fd5b620008e28b838c0162000742565b945060a08a0151915080821115620008f957600080fd5b50620009088a828b0162000742565b9250506200091960c08901620006b6565b905092959891949750929550565b634e487b7160e01b600052603260045260246000fd5b6000600182016200095e57634e487b7160e01b600052601160045260246000fd5b5060010190565b6000602082840312156200097857600080fd5b5051919050565b6000602082840312156200099257600080fd5b6200099d82620006b6565b9392505050565b61562e80620009b46000396000f3fe608060405234801561001057600080fd5b50600436106104565760003560e01c80637f472e5411610250578063d2fbdc0d11610150578063e7f30582116100c8578063f2caeb1e11610097578063f77e34d11161007c578063f77e34d114610a69578063facefb6414610a7c578063fff6cae914610a8f57600080fd5b8063f2caeb1e14610a36578063f60abc1414610a4957600080fd5b8063e7f3058214610a08578063ebe2b12b14610a1b578063f288baf614610a24578063f2a8d34914610a2d57600080fd5b8063d9f96e8d1161011f578063de821e8511610104578063de821e85146109e5578063e01f62bf146109f8578063e1ba95d214610a0057600080fd5b8063d9f96e8d1461099c578063de1a6551146109d257600080fd5b8063d2fbdc0d14610950578063d42fc9b414610963578063d5e1a9c614610976578063d7400d561461098957600080fd5b8063aa1d4fce116101e3578063c3543826116101b2578063ca6df29d11610197578063ca6df29d14610908578063cdc82e801461093e578063d2010fb41461094757600080fd5b8063c3543826146108ec578063c8f33c91146108ff57600080fd5b8063aa1d4fce146108b4578063b85efd06146108bd578063b94c4dcb146108d0578063c00007b0146108d957600080fd5b806391cf600a1161021f57806391cf600a1461086e5780639637927f14610881578063a0f234761461088e578063a2ba0790146108a157600080fd5b80637f472e54146107fa5780638980f11f1461080d5780638bad86a7146108205780638da5cb5b1461084e57600080fd5b8063386a95251161035b5780636c430dbb116102ee578063774d4ae7116102bd5780637970833e116102a25780637970833e1461079757806379ba5097146107d25780637d6ef08e146107da57600080fd5b8063774d4ae7146107715780637910d17b1461078457600080fd5b80636c430dbb146107205780636e27cef91461074057806370641a361461074957806372f702f31461075157600080fd5b806353a47bb71161032a57806353a47bb7146106d05780635bfd9258146106f057806364f2c060146106f8578063693392451461070057600080fd5b8063386a95251461066a578063387edc861461067457806341a16f3f146106875780634fd2b536146106bd57600080fd5b80631c1f78eb116103ee5780632352aac1116103bd5780632c0c2a0a116103a25780632c0c2a0a1461060e5780632df079f11461062157806336f89af21461063457600080fd5b80632352aac1146105b857806328408bab146105d857600080fd5b80631c1f78eb1461055a5780631e090f01146105625780631face85614610582578063231b68dc1461059557600080fd5b8063112666b71161042a578063112666b7146104fd57806312edb24c1461051d5780631627540c1461053257806317b18c891461054757600080fd5b80628cc2621461045b5780630238b9361461048457806307546172146104a55780630d7bac4f146104ea575b600080fd5b61046e610469366004614fbe565b610a97565b60405161047b9190614fd9565b60405180910390f35b61049761049236600461502b565b610c16565b60405190815260200161047b565b6005546104c59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161047b565b6104976104f836600461506b565b610d17565b6004546104c59073ffffffffffffffffffffffffffffffffffffffff1681565b610525610d43565b60405161047b9190615084565b610545610540366004614fbe565b610db2565b005b6104976105553660046150d2565b610ed2565b61046e610f5c565b610575610570366004614fbe565b610ffd565b60405161047b91906150f4565b610497610590366004614fbe565b6110b1565b6105a86105a3366004615162565b6110f7565b604051901515815260200161047b565b6027546104c59073ffffffffffffffffffffffffffffffffffffffff1681565b6104c56105e6366004614fbe565b60246020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b61049761061c366004614fbe565b6111dd565b61054561062f366004615195565b6114c9565b610497610642366004614fbe565b73ffffffffffffffffffffffffffffffffffffffff1660009081526022602052604090205490565b61049762093a8081565b610545610682366004614fbe565b611630565b6104c5610695366004614fbe565b60126020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6104976106cb366004614fbe565b61171a565b6001546104c59073ffffffffffffffffffffffffffffffffffffffff1681565b61049761173b565b602054610497565b61049761070e366004614fbe565b60186020526000908152604090205481565b61049761072e366004614fbe565b601c6020526000908152604090205481565b610497600b5481565b61046e611976565b6003546104c59073ffffffffffffffffffffffffffffffffffffffff1681565b61049761077f3660046151f1565b611ad5565b61046e61079236600461521b565b611ce1565b6107aa6107a53660046151f1565b611d5d565b604080519586526020860194909452928401919091526060830152608082015260a00161047b565b610545611dab565b6104976107e8366004614fbe565b60236020526000908152604090205481565b610497610808366004614fbe565b611ef6565b61054561081b3660046151f1565b611f0d565b61083361082e366004614fbe565b6120a4565b6040805193845260208401929092529082015260600161047b565b6000546104c59073ffffffffffffffffffffffffffffffffffffffff1681565b61054561087c366004614fbe565b6122d8565b6025546105a89060ff1681565b61049761089c366004614fbe565b6123cb565b6105456108af366004615162565b612495565b610497600c5481565b6105456108cb3660046150d2565b612587565b610497600a5481565b61046e6108e7366004614fbe565b612739565b6104c56108fa366004614fbe565b6127c1565b61049760085481565b610497610916366004614fbe565b73ffffffffffffffffffffffffffffffffffffffff1660009081526026602052604090205490565b61049760095481565b61049760065481565b61054561095e3660046150d2565b612824565b610497610971366004614fbe565b612b8c565b610545610984366004615252565b612bc8565b610545610997366004614fbe565b612db7565b6104976109aa366004614fbe565b73ffffffffffffffffffffffffffffffffffffffff1660009081526021602052604090205490565b6105456109e0366004615162565b612fd5565b6105456109f3366004614fbe565b6130bc565b601f54610497565b6105456131e3565b610545610a16366004614fbe565b6132b4565b61049760075481565b610497600d5481565b610497600e5481565b610497610a4436600461506b565b613416565b6028546104c59073ffffffffffffffffffffffffffffffffffffffff1681565b610545610a7736600461529f565b61352d565b610545610a8a3660046152eb565b613703565b6105456138c3565b60606000610aa3611976565b60135490915067ffffffffffffffff811115610ac157610ac16152bc565b604051908082528060200260200182016040528015610aea578160200160208202803683370190505b5073ffffffffffffffffffffffffffffffffffffffff841660009081526022602052604090205490925015610c105760005b601354811015610c0e5773ffffffffffffffffffffffffffffffffffffffff84166000818152601b60209081526040808320858452825280832054938352601a82528083208584529091529020548351670de0b6b3a76400009190859085908110610b8957610b89615390565b6020026020010151610b9b91906153ee565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260226020526040902054610bcb9190615401565b610bd59190615418565b610bdf9190615453565b838281518110610bf157610bf1615390565b602090810291909101015280610c0681615466565b915050610b1c565b505b50919050565b60006002805403610c88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60028055602554610100900460ff1615610cfe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f5769746864726177616c732070617573656400000000000000000000000000006044820152606401610c7f565b610d0a338486856138f3565b6001600255949350505050565b600954600a54600091610d3d91610d2e8286615401565b610d389190615418565b613ac7565b92915050565b60606013805480602002602001604051908101604052809291908181526020018280548015610da857602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610d7d575b5050505050905090565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4f6e6c792074686520636f6e7472616374206f776e6572206d6179207065726660448201527f6f726d207468697320616374696f6e00000000000000000000000000000000006064820152608401610c7f565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229060200160405180910390a150565b60006002805403610f3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c7f565b60028055610f503380858542613adf565b60016002559392505050565b60165460609067ffffffffffffffff811115610f7a57610f7a6152bc565b604051908082528060200260200182016040528015610fa3578160200160208202803683370190505b50905060005b601654811015610ff95762093a80610fc082613416565b610fca9190615401565b828281518110610fdc57610fdc615390565b602090810291909101015280610ff181615466565b915050610fa9565b5090565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602660209081526040808320805482518185028101850190935280835260609492939192909184015b828210156110a657838290600052602060002090600502016040518060a00160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152505081526020019060010190611042565b505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260236020526040812054600654670de0b6b3a7640000916110ed91615401565b610d3d9190615418565b73ffffffffffffffffffffffffffffffffffffffff811660009081526017602052604081205460ff1661112c57506000610d3d565b73ffffffffffffffffffffffffffffffffffffffff83161580611163575073ffffffffffffffffffffffffffffffffffffffff8216155b1561117057506000610d3d565b60005473ffffffffffffffffffffffffffffffffffffffff9081169084160361119b57506001610d3d565b73ffffffffffffffffffffffffffffffffffffffff8281166000908152601260205260409020548185169116036111d457506001610d3d565b50600092915050565b600080806111ea846127c1565b905073ffffffffffffffffffffffffffffffffffffffff8116156112af576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015273c8418af6358ffdda74e09ca9cc3fe03ca6adc5b0906370a0823190602401602060405180830381865afa158015611286573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112aa919061549e565b611351565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273c8418af6358ffdda74e09ca9cc3fe03ca6adc5b0906370a0823190602401602060405180830381865afa15801561132d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611351919061549e565b91506000670de0b6b3a764000073c8418af6358ffdda74e09ca9cc3fe03ca6adc5b073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e1919061549e565b6113eb9190615401565b600c54600d546113fb9086615401565b6114059190615401565b61140f9190615418565b905060008073ffffffffffffffffffffffffffffffffffffffff84161561143e5761143984611ef6565b611447565b6114478761171a565b9050801561149957600081611464670de0b6b3a764000088615401565b61146e9190615418565b9050670de0b6b3a7640000600d54826114879190615401565b6114919190615418565b92505061149e565b600091505b508082116114ac57806114ae565b815b9450600d548511156114c057600d5494505b50505050919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314806115025750738412ebf45bac1b340bbe8f318b928c466c4e39ca33145b611568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f74206f776e6572206f722074696d656c6f636b00000000000000000000006044820152606401610c7f565b602580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ff166301000000951515959095027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169490941761010093151593909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff00ffff1662010000911515919091027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff161764010000000091151591909102179055565b600280540361169b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c7f565b6002805560255462010000900460ff1615611712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5265776172647320636f6c6c656374696f6e20706175736564000000000000006044820152606401610c7f565b506001600255565b6000670de0b6b3a7640000600e5461173184612b8c565b6110ed9190615401565b6040805160608101825260285473ffffffffffffffffffffffffffffffffffffffff908116825260275483517f59c4f905000000000000000000000000000000000000000000000000000000008152935160009485948594909360208086019491909216926359c4f9059260048083019391928290030181865afa1580156117c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117eb91906154b7565b60020b8152602754604080517f55b812a8000000000000000000000000000000000000000000000000000000008152905160209384019373ffffffffffffffffffffffffffffffffffffffff909316926355b812a892600480820193918290030181865afa158015611861573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188591906154b7565b600290810b90915260048054604080517f342a7470000000000000000000000000000000000000000000000000000000008152855173ffffffffffffffffffffffffffffffffffffffff908116948201949094526020860151850b60248201529085015190930b6044840152929350600092839291169063342a747090606401606060405180830381865afa158015611922573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194691906154da565b602554919450925065010000000000900460ff161590506119695781935061196d565b8093505b50919392505050565b6060601f54600014806119895750602054155b156119e3576019805480602002602001604051908101604052809291908181526020018280548015610da857602002820191906000526020600020905b8154815260200190600101908083116119c6575050505050905090565b60135467ffffffffffffffff8111156119fe576119fe6152bc565b604051908082528060200260200182016040528015611a27578160200160208202803683370190505b50905060005b601954811015610ff957602054611a4382613416565b600854611a4e613e29565b611a5891906153ee565b611a629190615401565b611a7490670de0b6b3a7640000615401565b611a7e9190615418565b60198281548110611a9157611a91615390565b9060005260206000200154611aa69190615453565b828281518110611ab857611ab8615390565b602090810291909101015280611acd81615466565b915050611a2d565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602660205260408120805482919084908110611b0f57611b0f615390565b600091825260208083206040805160a081018252600590940290910180548452600181015484840181905260028201548584015260038201546060860152600490910154608085015273ffffffffffffffffffffffffffffffffffffffff89168552601c9092528320549193501115611b8d57506020810151611bb5565b5073ffffffffffffffffffffffffffffffffffffffff84166000908152601c60205260409020545b42826060015111611c7557606082015173ffffffffffffffffffffffffffffffffffffffff86166000908152601c60205260409020541015611c6c576000818360600151611c0391906153ee565b90506000836060015142611c1791906153ee565b90506000611c296104f8600285615418565b90506000611c378382615401565b611c418584615401565b611c4b9190615453565b9050611c578385615453565b611c619082615418565b965050505050611cc5565b60009250611cc5565b600080828460600151611c8891906153ee565b90506000428560600151611c9c91906153ee565b90506002611caa8284615453565b611cb49190615418565b92505050611cc181610d17565b9350505b8160800151831115611cd957816080015192505b505092915050565b60606002805403611d4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c7f565b60028055610f50338484613e3c565b60266020528160005260406000208181548110611d7957600080fd5b600091825260209091206005909102018054600182015460028301546003840154600490940154929550909350919085565b60015473ffffffffffffffffffffffffffffffffffffffff163314611e52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527f2063616e20616363657074206f776e65727368697000000000000000000000006064820152608401610c7f565b6000546001546040805173ffffffffffffffffffffffffffffffffffffffff93841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160018054600080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b6000670de0b6b3a7640000600e54611731846110b1565b600054829073ffffffffffffffffffffffffffffffffffffffff16331480611f3a5750611f3a33826110f7565b611fa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f74206f776e6572206f7220746b6e206d67720000000000000000000000006044820152606401610c7f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526017602052604090205460ff16808015611ffc575073ffffffffffffffffffffffffffffffffffffffff8481166000908152601260205260409020541633145b80612027575080158015612027575060005473ffffffffffffffffffffffffffffffffffffffff1633145b1561203d5761203784338561410a565b50505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4e6f2076616c696420746f6b656e7320746f207265636f7665720000000000006044820152606401610c7f565b505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526022602052604081205490806120d5846111dd565b73ffffffffffffffffffffffffffffffffffffffff85166000908152602160205260408120549193509015801561212f575073ffffffffffffffffffffffffffffffffffffffff8516600090815260226020526040902054155b8061215f575073ffffffffffffffffffffffffffffffffffffffff85166000908152600f60205260409020548310155b1561216b5750816121ab565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600f602052604090205460029061219e9085615453565b6121a89190615418565b90505b6000915060005b73ffffffffffffffffffffffffffffffffffffffff86166000908152602660205260409020548110156122cf5773ffffffffffffffffffffffffffffffffffffffff8616600090815260266020526040812080548390811061221657612216615390565b90600052602060002090600502016040518060a0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815250509050600061226f8884611ad5565b60408301519091506000670de0b6b3a764000061228c8785615453565b6122969084615401565b6122a09190615418565b6122aa9083615453565b90506122b68188615453565b96505050505080806122c790615466565b9150506121b2565b50509193909250565b60005473ffffffffffffffffffffffffffffffffffffffff163314806123115750738412ebf45bac1b340bbe8f318b928c466c4e39ca33145b612377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f74206f776e6572206f722074696d656c6f636b00000000000000000000006044820152606401610c7f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260106020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00811660ff90911615179055565b6000600654600e546123dd9190615401565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152670de0b6b3a764000090819073c8418af6358ffdda74e09ca9cc3fe03ca6adc5b0906370a0823190602401602060405180830381865afa158015612467573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248b919061549e565b6117319190615401565b60005473ffffffffffffffffffffffffffffffffffffffff163314806124ce5750738412ebf45bac1b340bbe8f318b928c466c4e39ca33145b612534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f74206f776e6572206f722074696d656c6f636b00000000000000000000006044820152606401610c7f565b6004805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560058054929093169116179055565b60028054036125f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c7f565b6002805533600161260582826000614273565b60008061261233876143cd565b9150915060008583604001516126289190615453565b905060035461264f9073ffffffffffffffffffffffffffffffffffffffff16333089614592565b6040805160a0810182528881526020858101518183015281830184905260608087015190830152608080870151908301523360009081526026909152919091208054849081106126a1576126a1615390565b906000526020600020906005020160008201518160000155602082015181600101556040820151816002015560608201518160030155608082015181600401559050506126f033876001614728565b604080518881526020810188905233917f2640b32e7e5d0fa2a21ea06b22fbd75fda0fda384a895a5fdeef43646de47a0c910160405180910390a2505060016002555050505050565b606060028054036127a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c7f565b600280556127b633836001613e3c565b600160025592915050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604081205460ff16156127f3575090565b5073ffffffffffffffffffffffffffffffffffffffff9081166000908152602460205260409020541690565b919050565b600280540361288f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c7f565b600280553360016128a282826000614273565b6000806128af33876143cd565b9150915042851161291c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d75737420626520696e207468652066757475726500000000000000000000006044820152606401610c7f565b600042836060015111612930576000612940565b42836060015161294091906153ee565b9050600061294e42886153ee565b90508181116129b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f43616e6e6f742073686f7274656e206c6f636b2074696d6500000000000000006044820152606401610c7f565b600b54811015612a25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4d696e696d756d207374616b652074696d65206e6f74206d65740000000000006044820152606401610c7f565b600a54811115612a91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f547279696e6720746f206c6f636b20666f7220746f6f206c6f6e6700000000006044820152606401610c7f565b6040518060a0016040528089815260200142815260200185604001518152602001888152602001612ac183610d17565b9052336000908152602660205260409020805485908110612ae457612ae4615390565b90600052602060002090600502016000820151816000015560208201518160010155604082015181600201556060820151816003015560808201518160040155905050612b343360006001614273565b6040805189815260208101839052428183015260608101899052905133917fc2cf1aae6decacbc52f96b4e4fec96d4ebab5236e4ed987165537bc463014a43919081900360800190a250506001600255505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260216020526040812054600654670de0b6b3a7640000916110ed91615401565b600054849073ffffffffffffffffffffffffffffffffffffffff16331480612bf55750612bf533826110f7565b612c5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f74206f776e6572206f7220746b6e206d67720000000000000000000000006044820152606401610c7f565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260186020526040902054601680548692908110612c9657612c96615390565b9060005260206000200181905550826014601860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110612cf757612cf7615390565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff948516179055918716815260189091526040902054601580548492908110612d6857612d68615390565b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604090205460ff16612e46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c69642070726f7879000000000000000000000000000000000000006044820152606401610c7f565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260116020908152604080832033845290915290205460ff16612ee0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f50726f787920686173206e6f7420616c6c6f77656420796f75207965740000006044820152606401610c7f565b3360009081526024602052604090205473ffffffffffffffffffffffffffffffffffffffff168015612f56573360009081526021602090815260408083205473ffffffffffffffffffffffffffffffffffffffff8516845260239092528220805491929091612f509084906153ee565b90915550505b33600090815260246020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8716908117909155602183528184205490845260239092528220805491929091612fcc908490615453565b90915550505050565b600054829073ffffffffffffffffffffffffffffffffffffffff16331480613002575061300233826110f7565b613068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f74206f776e6572206f7220746b6e206d67720000000000000000000000006044820152606401610c7f565b5073ffffffffffffffffffffffffffffffffffffffff918216600090815260126020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314806130f55750738412ebf45bac1b340bbe8f318b928c466c4e39ca33145b61315b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f74206f776e6572206f722074696d656c6f636b00000000000000000000006044820152606401610c7f565b6005546040517fdd289d6000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301529091169063dd289d6090602401600060405180830381600087803b1580156131c857600080fd5b505af11580156131dc573d6000803e3d6000fd5b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633148061321c5750738412ebf45bac1b340bbe8f318b928c466c4e39ca33145b613282576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f74206f776e6572206f722074696d656c6f636b00000000000000000000006044820152606401610c7f565b602580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00811660ff90911615179055565b3360009081526010602052604090205460ff1661332d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c69642070726f7879000000000000000000000000000000000000006044820152606401610c7f565b33600081815260116020908152604080832073ffffffffffffffffffffffffffffffffffffffff8681168552908352818420805460ff8116157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090911617905560249092529091205416036134135773ffffffffffffffffffffffffffffffffffffffff8116600090815260246020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560218252808320543384526023909252822080549192909161340d9084906153ee565b90915550505b50565b6000806014838154811061342c5761342c615390565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169050801561350757670de0b6b3a7640000601d848154811061347257613472615390565b90600052602060002001548273ffffffffffffffffffffffffffffffffffffffff16630a3be7576040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134ec919061549e565b6134f69190615401565b6135009190615418565b9150610c10565b6016838154811061351a5761351a615390565b9060005260206000200154915050919050565b60005b6014548110156136ff5760006014828154811061354f5761354f615390565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905080156136ec5782806135a15750601e828154811061359357613593615390565b906000526020600020015442115b156136ec576040517f6472eee100000000000000000000000000000000000000000000000000000000815230600482015242602482015273ffffffffffffffffffffffffffffffffffffffff821690636472eee1906044016020604051808303816000875af1158015613618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061363c919061549e565b601d838154811061364f5761364f615390565b90600052602060002001819055508073ffffffffffffffffffffffffffffffffffffffff1663513872bd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136cc919061549e565b601e83815481106136df576136df615390565b6000918252602090912001555b50806136f781615466565b915050613530565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff1633148061373c5750738412ebf45bac1b340bbe8f318b928c466c4e39ca33145b6137a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f74206f776e6572206f722074696d656c6f636b00000000000000000000006044820152606401610c7f565b8051670de0b6b3a76400001115613815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4d757374206265203e3d204d554c2050524543000000000000000000000000006044820152606401610c7f565b608081015160011180159061382f575060a0810151600111155b613895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4d757374206265203e3d203100000000000000000000000000000000000000006044820152606401610c7f565b80516009556020810151600d556040810151600e556060810151600c556080810151600a5560a00151600b55565b6138cd600061352d565b6138d561173b565b60065560075442106138eb576138e961489d565b565b6138e9614e27565b6000818061390c5750602554640100000000900460ff16155b156139235761391d85856001613e3c565b50613930565b6139308560016000614273565b60008061393d87866143cd565b9150915081606001514210158061395b575060255460ff1615156001145b6139c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f5374616b65206973207374696c6c206c6f636b656421000000000000000000006044820152606401610c7f565b60408201518015613abc576003546139f09073ffffffffffffffffffffffffffffffffffffffff16888361410a565b73ffffffffffffffffffffffffffffffffffffffff88166000908152602660205260409020805483908110613a2757613a27615390565b600091825260208220600590910201818155600181018290556002810182905560038101829055600401819055613a619089908390614728565b604080518281526020810188905273ffffffffffffffffffffffffffffffffffffffff898116828401529151918a16917f1d9308f6b22a2754a1c622bb30889e8f8f956c83e524d039e9d65d5f052eb9089181900360600190a25b979650505050505050565b6000818310613ad65781613ad8565b825b9392505050565b6000856001613af082826000614273565b6025546301000000900460ff1615613b64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f5374616b696e67207061757365640000000000000000000000000000000000006044820152606401610c7f565b600b54851015613bd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4d696e696d756d207374616b652074696d65206e6f74206d65740000000000006044820152606401610c7f565b600a54851115613c3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f547279696e6720746f206c6f636b20666f7220746f6f206c6f6e6700000000006044820152606401610c7f565b600354613c619073ffffffffffffffffffffffffffffffffffffffff16883089614592565b6000613c6c86610d17565b73ffffffffffffffffffffffffffffffffffffffff8a1660009081526021602090815260408083205490517fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608f901b169281019290925260348201899052605482018b9052607482015291925090609401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012073ffffffffffffffffffffffffffffffffffffffff8e1660009081526026835283902060a0850184528185529184018a90529183018b90529092509060608101613d5f8a8a615453565b81526020908101859052825460018181018555600094855293829020835160059092020190815590820151818401556040820151600282015560608201516003820155608090910151600490910155613dbb908b908a90614728565b604080518981526020810189905290810182905273ffffffffffffffffffffffffffffffffffffffff8a811660608301528b16907ff400e72e69ef4402819dfc57eeddc66f5eb69bf405e0e8098b1946ec1ac14a229060800160405180910390a29998505050505050505050565b6000613e3742600754613ac7565b905090565b6060836001613e4d82826000614273565b73ffffffffffffffffffffffffffffffffffffffff86166000908152601c6020526040902042905560255462010000900460ff1615613ee8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5265776172647320636f6c6c656374696f6e20706175736564000000000000006044820152606401610c7f565b60135467ffffffffffffffff811115613f0357613f036152bc565b604051908082528060200260200182016040528015613f2c578160200160208202803683370190505b50925060005b6013548110156141005773ffffffffffffffffffffffffffffffffffffffff87166000908152601b602090815260408083208484529091529020548451859083908110613f8157613f81615390565b60209081029190910181019190915273ffffffffffffffffffffffffffffffffffffffff88166000908152601b825260408082208483529092529081208190558451859083908110613fd557613fd5615390565b602002602001015111156140ee5761404460138281548110613ff957613ff9615390565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168786848151811061403757614037615390565b602002602001015161410a565b8673ffffffffffffffffffffffffffffffffffffffff167f1d2f2ca53af5d2f333bd32fdd45f9c52ad8ebe31414f7792912077fcb3876dff85838151811061408e5761408e615390565b6020026020010151601384815481106140a9576140a9615390565b600091825260209182902001546040805193845273ffffffffffffffffffffffffffffffffffffffff918216928401929092528a169082015260600160405180910390a25b806140f881615466565b915050613f32565b5050509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392908716916141a1919061554a565b6000604051808303816000865af19150503d80600081146141de576040519150601f19603f3d011682016040523d82523d6000602084013e6141e3565b606091505b509150915081801561420d57508051158061420d57508080602001905181019061420d9190615566565b6131dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c4544006044820152606401610c7f565b8115614281576142816138c3565b80156142b757614290836111dd565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600f60205260409020555b73ffffffffffffffffffffffffffffffffffffffff83161561209f5760008060006142e1866120a4565b9250925092506142f086614e9a565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600f6020526040902082905582811061437457600061432b84836153ee565b90508060205461433b9190615453565b6020556143488185615453565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260226020526040902055506143c5565b600061438082856153ee565b90508060205461439091906153ee565b60205561439d81856153ee565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260226020526040902055505b505050505050565b6144026040518060a0016040528060008019168152602001600081526020016000815260200160008152602001600081525090565b6000805b73ffffffffffffffffffffffffffffffffffffffff85166000908152602660205260409020548110156145205773ffffffffffffffffffffffffffffffffffffffff8516600090815260266020526040902080548290811061446a5761446a615390565b906000526020600020906005020160000154840361450e5773ffffffffffffffffffffffffffffffffffffffff851660009081526026602052604090208054829081106144b9576144b9615390565b90600052602060002090600502016040518060a0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815250509250809150614520565b8061451881615466565b915050614406565b508151831461458b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5374616b65206e6f7420666f756e6400000000000000000000000000000000006044820152606401610c7f565b9250929050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790529151600092839290881691614631919061554a565b6000604051808303816000865af19150503d806000811461466e576040519150601f19603f3d011682016040523d82523d6000602084013e614673565b606091505b509150915081801561469d57508051158061469d57508080602001905181019061469d9190615566565b6143c5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160448201527f494c4544000000000000000000000000000000000000000000000000000000006064820152608401610c7f565b6000614733846127c1565b905081156147e85782601f600082825461474d9190615453565b909155505073ffffffffffffffffffffffffffffffffffffffff841660009081526021602052604081208054859290614787908490615453565b909155505073ffffffffffffffffffffffffffffffffffffffff8116156147e35773ffffffffffffffffffffffffffffffffffffffff8116600090815260236020526040812080548592906147dd908490615453565b90915550505b614890565b82601f60008282546147fa91906153ee565b909155505073ffffffffffffffffffffffffffffffffffffffff8416600090815260216020526040812080548592906148349084906153ee565b909155505073ffffffffffffffffffffffffffffffffffffffff8116156148905773ffffffffffffffffffffffffffffffffffffffff81166000908152602360205260408120805485929061488a9084906153ee565b90915550505b6120378460006001614273565b6148a5614e27565b60005b601554811015614996576000601582815481106148c7576148c7615390565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1690508015614983576040517f092193ab00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff82169063092193ab9060240160408051808303816000875af115801561495c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149809190615583565b50505b508061498e81615466565b9150506148a8565b50600062093a80600754426149ab91906153ee565b6149b59190615418565b905060005b601354811015614b9857601381815481106149d7576149d7615390565b6000918252602090912001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015614a4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a72919061549e565b614a7d836001615453565b62093a80614a8a84613416565b614a949190615401565b614a9e9190615401565b111560138281548110614ab357614ab3615390565b60009182526020918290200154604080517f4e6f7420656e6f7567682072657761726420746f6b656e7320617661696c6162938101939093527f6c653a20000000000000000000000000000000000000000000000000000000009083015260601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016604482015260580160405160208183030381529060405290614b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7f91906155a7565b5080614b9081615466565b9150506149ba565b5062093a80614ba8826001615453565b614bb29190615401565b600754614bbf9190615453565b600755601680546001908110614bd757614bd7615390565b9060005260206000200154600014614e235760006013600181548110614bff57614bff615390565b6000918252602090912001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015614c76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c9a919061549e565b6005546003546040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529293501690636a627842906024016020604051808303816000875af1158015614d10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614d34919061549e565b5060006013600181548110614d4b57614d4b615390565b6000918252602090912001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015614dc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614de6919061549e565b905062093a80614df683836153ee565b614e009190615418565b6016600181548110614e1457614e14615390565b60009182526020909120015550505b6134135b6000614e31611976565b905060005b601954811015614e8b57818181518110614e5257614e52615390565b602002602001015160198281548110614e6d57614e6d615390565b60009182526020909120015580614e8381615466565b915050614e36565b50614e94613e29565b60085550565b73ffffffffffffffffffffffffffffffffffffffff811615613413576000614ec182610a97565b905060005b8151811015614f2f57818181518110614ee157614ee1615390565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff85166000908152601b83526040808220858352909352919091205580614f2781615466565b915050614ec6565b5060005b815181101561209f5760198181548110614f4f57614f4f615390565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff86168352601a8252604080842085855290925291205580614f9281615466565b915050614f33565b803573ffffffffffffffffffffffffffffffffffffffff8116811461281f57600080fd5b600060208284031215614fd057600080fd5b613ad882614f9a565b6020808252825182820181905260009190848201906040850190845b8181101561501157835183529284019291840191600101614ff5565b50909695505050505050565b801515811461341357600080fd5b60008060006060848603121561504057600080fd5b8335925061505060208501614f9a565b915060408401356150608161501d565b809150509250925092565b60006020828403121561507d57600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b8181101561501157835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016150a0565b600080604083850312156150e557600080fd5b50508035926020909101359150565b602080825282518282018190526000919060409081850190868401855b828110156151555781518051855286810151878601528581015186860152606080820151908601526080908101519085015260a09093019290850190600101615111565b5091979650505050505050565b6000806040838503121561517557600080fd5b61517e83614f9a565b915061518c60208401614f9a565b90509250929050565b600080600080608085870312156151ab57600080fd5b84356151b68161501d565b935060208501356151c68161501d565b925060408501356151d68161501d565b915060608501356151e68161501d565b939692955090935050565b6000806040838503121561520457600080fd5b61520d83614f9a565b946020939093013593505050565b6000806040838503121561522e57600080fd5b61523783614f9a565b915060208301356152478161501d565b809150509250929050565b6000806000806080858703121561526857600080fd5b61527185614f9a565b93506020850135925061528660408601614f9a565b915061529460608601614f9a565b905092959194509250565b6000602082840312156152b157600080fd5b8135613ad88161501d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060c082840312156152fd57600080fd5b82601f83011261530c57600080fd5b60405160c0810181811067ffffffffffffffff82111715615356577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528060c084018581111561536b57600080fd5b845b8181101561538557803583526020928301920161536d565b509195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610d3d57610d3d6153bf565b8082028115828204841417610d3d57610d3d6153bf565b60008261544e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820180821115610d3d57610d3d6153bf565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615497576154976153bf565b5060010190565b6000602082840312156154b057600080fd5b5051919050565b6000602082840312156154c957600080fd5b81518060020b8114613ad857600080fd5b6000806000606084860312156154ef57600080fd5b83516fffffffffffffffffffffffffffffffff8116811461550f57600080fd5b602085015160409095015190969495509392505050565b60005b83811015615541578181015183820152602001615529565b50506000910152565b6000825161555c818460208701615526565b9190910192915050565b60006020828403121561557857600080fd5b8151613ad88161501d565b6000806040838503121561559657600080fd5b505080516020909101519092909150565b60208152600082518060208401526155c6816040850160208701615526565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220068850f92579be5d574e5052dc74b236c80c34dbe0a4b2ba882a9c4301fb63fb64736f6c63430008110033000000000000000000000000ff5b4bcbf765fe363269114e1c765229a29edefd00000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000260000000000000000000000000471a34823ddd9506fe8dfd6bc5c2890e4114fafe00000000000000000000000000000000000000000000000000000000000000020000000000000000000000003432b6a60d23ca0dfca7761b7ab56459d9c964d0000000000000000000000000627fee87d0d9d2c55098a06ac805db8f98b158aa0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000b1748c79709f4ba2dd82834b8c82d4a505003f27000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000001af2af8c84000000000000000000000000000000000000000000000000000000174876e8000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000278dc748eda1d8efef1adfb518542612b49fcd340000000000000000000000000000000000000000000000000000000000000000