0 txs
0 calls
constructor
No constructor.
functions
getGaugePointImplementationForToken
viewfunction getGaugePointImplementationForToken(address token) view returns (tuple)
getLiquidityWeightImplementationForToken
viewfunction getLiquidityWeightImplementationForToken(address token) view returns (tuple)
getOracleImplementationForToken
viewfunction getOracleImplementationForToken(address token) view returns (tuple)
getSiloTokens
viewfunction getSiloTokens() view returns (address[] tokens)
getWhitelistedLpTokens
viewfunction getWhitelistedLpTokens() view returns (address[] tokens)
getWhitelistedTokens
viewfunction getWhitelistedTokens() view returns (address[] tokens)
getWhitelistedWellLpTokens
viewfunction getWhitelistedWellLpTokens() view returns (address[] tokens)
getWhitelistStatus
viewfunction getWhitelistStatus(address token) view returns (tuple _whitelistStatuses)
getWhitelistStatuses
viewfunction getWhitelistStatuses() view returns (tuple[] _whitelistStatuses)
dewhitelistToken
payablefunction dewhitelistToken(address token) payable
updateGaugeForToken
payablefunction updateGaugeForToken(address token, uint64 optimalPercentDepositedBdv, tuple gpImplementation, tuple lwImplementation) payable
updateGaugePointImplementationForToken
payablefunction updateGaugePointImplementationForToken(address token, tuple impl) payable
updateLiquidityWeightImplementationForToken
payablefunction updateLiquidityWeightImplementationForToken(address token, tuple impl) payable
updateOracleImplementationForToken
payablefunction updateOracleImplementationForToken(address token, tuple impl) payable
updateSeedGaugeSettings
nonpayablefunction updateSeedGaugeSettings(tuple updatedSeedGaugeSettings)
updateStalkPerBdvPerSeasonForToken
payablefunction updateStalkPerBdvPerSeasonForToken(address token, uint40 stalkEarnedPerSeason) payable
whitelistToken
payablefunction whitelistToken(address token, bytes4 selector, uint48 stalkIssuedPerBdv, uint40 stalkEarnedPerSeason, bytes1 encodeType, uint128 gaugePoints, uint64 optimalPercentDepositedBdv, tuple oracleImplementation, tuple gaugePointImplementation, tuple liquidityWeightImplementation) payable
events
AddWhitelistStatus
event AddWhitelistStatus(address token, uint256 index, bool isWhitelisted, bool isWhitelistedLp, bool isWhitelistedWell, bool isSoppable)
DewhitelistToken
event DewhitelistToken(address indexed token)
UpdatedEvaluationParameters
event UpdatedEvaluationParameters((uint256 maxBeanMaxLpGpPerBdvRatio, uint256 minBeanMaxLpGpPerBdvRatio, uint256 targetSeasonsToCatchUp, uint256 podRateLowerBound, uint256 podRateOptimal, uint256 podRateUpperBound, uint256 deltaPodDemandLowerBound, uint256 deltaPodDemandUpperBound, uint256 lpToSupplyRatioUpperBound, uint256 lpToSupplyRatioOptimal, uint256 lpToSupplyRatioLowerBound, uint256 excessivePriceThreshold, uint256 soilCoefficientHigh, uint256 soilCoefficientLow, uint256 baseReward, uint128 minAvgGsPerBdv, uint128 rainingMinBeanMaxLpGpPerBdvRatio))
UpdatedGaugePointImplementationForToken
event UpdatedGaugePointImplementationForToken(address indexed token, (address target, bytes4 selector, bytes1 encodeType, bytes data) gaugePointImplementation)
UpdatedLiquidityWeightImplementationForToken
event UpdatedLiquidityWeightImplementationForToken(address indexed token, (address target, bytes4 selector, bytes1 encodeType, bytes data) liquidityWeightImplementation)
UpdatedOptimalPercentDepositedBdvForToken
event UpdatedOptimalPercentDepositedBdvForToken(address indexed token, uint64 optimalPercentDepositedBdv)
UpdatedOracleImplementationForToken
event UpdatedOracleImplementationForToken(address indexed token, (address target, bytes4 selector, bytes1 encodeType, bytes data) oracleImplementation)
UpdatedStalkPerBdvPerSeason
event UpdatedStalkPerBdvPerSeason(address indexed token, uint40 stalkEarnedPerSeason, uint32 season)
UpdateWhitelistStatus
event UpdateWhitelistStatus(address token, uint256 index, bool isWhitelisted, bool isWhitelistedLp, bool isWhitelistedWell, bool isSoppable)
WhitelistToken
event WhitelistToken(address indexed token, bytes4 selector, uint40 stalkEarnedPerSeason, uint256 stalkIssuedPerBdv, uint128 gaugePoints, uint64 optimalPercentDepositedBdv)
errors
SafeCastOverflowedIntDowncast
error SafeCastOverflowedIntDowncast(uint8 bits, int256 value)
SafeCastOverflowedUintToInt
error SafeCastOverflowedUintToInt(uint256 value)
creation bytecode
0x6080604052348015600e575f80fd5b5061422f8061001c5f395ff3fe6080604052600436106100dc575f3560e01c8063793257041161008357806379325704146101c45780638104d586146101e357806385657e121461020257806386b40a1b14610215578063874b87b9146102285780639d1d28771461023b578063d9ba32fc1461024f578063e26f79001461027b578063e9522c081461028f575f80fd5b8063170cf084146100e057806319b8f5181461010a5780634b6f418c1461011f5780634fb907a01461013257806352d7f6321461014557806356b7b49c14610158578063738cb80b1461018457806376a7bc84146101a3575b5f80fd5b3480156100eb575f80fd5b506100f46102a3565b6040516101019190613639565b60405180910390f35b61011d610118366004613845565b6102b2565b005b61011d61012d3660046138da565b610533565b61011d61014036600461390d565b6107a7565b61011d610153366004613984565b6107bd565b348015610163575f80fd5b50610177610172366004613a79565b6107e3565b6040516101019190613ac2565b34801561018f575f80fd5b5061017761019e366004613a79565b6108ec565b3480156101ae575f80fd5b506101b7610970565b6040516101019190613b1a565b3480156101cf575f80fd5b5061011d6101de366004613b5a565b61097a565b3480156101ee575f80fd5b506101776101fd366004613a79565b610b1d565b61011d61021036600461390d565b610ba1565b61011d610223366004613a79565b610bb3565b61011d61023636600461390d565b610e25565b348015610246575f80fd5b506101b7610e37565b34801561025a575f80fd5b5061026e610269366004613a79565b610e41565b6040516101019190613c3c565b348015610286575f80fd5b506101b7610e58565b34801561029a575f80fd5b506101b7610e62565b60606102ad610e6c565b905090565b60c4545f6102be610f17565b90505f6102ca82611046565b90505f8060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015610317573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061033b9190613c4a565b6003549091506001190161036a5760405162461bcd60e51b815260040161036190613c61565b60405180910390fd5b6002600355610377611147565b610383888888886111dd565b6001600381905554604080516318160ddd60e01b8152905183926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa1580156103cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103f39190613c4a565b146104105760405162461bcd60e51b815260040161036190613c98565b505f61041b83611046565b9050835f60c4015410156104415760405162461bcd60e51b815260040161036190613cc5565b5f5b83518110156104a55781818151811061045e5761045e613cfc565b602002602001015183828151811061047857610478613cfc565b60200260200101511461049d5760405162461bcd60e51b815260040161036190613d10565b600101610443565b50505050505f6104b3610f17565b90505f806104c083611201565b915091505f5b8351811015610529578281815181106104e1576104e1613cfc565b60200260200101518282815181106104fb576104fb613cfc565b602002602001015110156105215760405162461bcd60e51b815260040161036190613d54565b6001016104c6565b5050505050505050565b60c4545f61053f610f17565b90505f61054b82611046565b90505f8060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015610598573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105bc9190613c4a565b600354909150600119016105e25760405162461bcd60e51b815260040161036190613c61565b60026003556105ef611147565b6105f98686611601565b6001600381905554604080516318160ddd60e01b8152905183926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa158015610645573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106699190613c4a565b146106865760405162461bcd60e51b815260040161036190613c98565b505f61069183611046565b9050835f60c4015410156106b75760405162461bcd60e51b815260040161036190613cc5565b5f5b835181101561071b578181815181106106d4576106d4613cfc565b60200260200101518382815181106106ee576106ee613cfc565b6020026020010151146107135760405162461bcd60e51b815260040161036190613d10565b6001016106b9565b50505050505f610729610f17565b90505f8061073683611201565b915091505f5b835181101561079f5782818151811061075757610757613cfc565b602002602001015182828151811061077157610771613cfc565b602002602001015110156107975760405162461bcd60e51b815260040161036190613d54565b60010161073c565b505050505050565b6107af611147565b6107b982826117c0565b5050565b6107c5611147565b6107d78a8a8a8a8a8a8a8a8a8a6118b9565b50505050505050505050565b6107eb61355b565b6001600160a01b038281165f90815260226020908152604091829020825160808101845281549485168152600160a01b850460e01b6001600160e01b03191692810192909252600160c01b90930460f81b6001600160f81b0319169181019190915260018201805491929160608401919061086590613d8b565b80601f016020809104026020016040519081016040528092919081815260200182805461089190613d8b565b80156108dc5780601f106108b3576101008083540402835291602001916108dc565b820191905f5260205f20905b8154815290600101906020018083116108bf57829003601f168201915b5050505050815250509050919050565b6108f461355b565b6001600160a01b038281165f90815260c8602090815260409182902082516080810184526002820180549586168252600160a01b860460e01b6001600160e01b03191693820193909352600160c01b90940460f81b6001600160f81b031916928401929092526003909101805460608401919061086590613d8b565b60606102ad611ecc565b610982611147565b805160f255602081015160f35560408082015160f455606082015160f555608082015160f65560a082015160f75560c082015160f85560e082015160f9556101008083015160fa5561012083015160fb5561014083015160fc5561016083015160fd5561018083015160fe556101a083015160ff556101c083015190556101e08201516102008301516001600160801b03908116600160801b0291161761010155517f74fb22c99b2fa35f8c91bd1fcb70f618633b198cd5717945a4cc70f076f1c1da90610b12908390815181526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0808301519082015260c0808301519082015260e08083015190820152610100808301519082015261012080830151908201526101408083015190820152610160808301519082015261018080830151908201526101a080830151908201526101c080830151908201526101e0808301516001600160801b03908116918301919091526102009283015116918101919091526102200190565b60405180910390a150565b610b2561355b565b6001600160a01b038281165f90815260c8602090815260409182902082516080810184526004820180549586168252600160a01b860460e01b6001600160e01b03191693820193909352600160c01b90940460f81b6001600160f81b031916928401929092526005909101805460608401919061086590613d8b565b610ba9611147565b6107b98282611fcd565b60c4545f610bbf610f17565b90505f610bcb82611046565b90505f8060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015610c18573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c3c9190613c4a565b60035490915060011901610c625760405162461bcd60e51b815260040161036190613c61565b6002600355610c6f611147565b610c78856120c6565b6001600381905554604080516318160ddd60e01b8152905183926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa158015610cc4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ce89190613c4a565b14610d055760405162461bcd60e51b815260040161036190613c98565b505f610d1083611046565b9050835f60c401541015610d365760405162461bcd60e51b815260040161036190613cc5565b5f5b8351811015610d9a57818181518110610d5357610d53613cfc565b6020026020010151838281518110610d6d57610d6d613cfc565b602002602001015114610d925760405162461bcd60e51b815260040161036190613d10565b600101610d38565b50505050505f610da8610f17565b90505f80610db583611201565b915091505f5b8351811015610e1e57828181518110610dd657610dd6613cfc565b6020026020010151828281518110610df057610df0613cfc565b60200260200101511015610e165760405162461bcd60e51b815260040161036190613d54565b600101610dbb565b5050505050565b610e2d611147565b6107b98282612280565b60606102ad61233d565b610e49613580565b610e5282612434565b92915050565b60606102ad6124d6565b60606102ad6125cd565b60605f8060c981018054604080516020808402820181019092528281529394505f9084015b82821015610f0d575f8481526020908190206040805160a081018252918501546001600160a01b038116835260ff600160a01b82048116151584860152600160a81b82048116151592840192909252600160b01b8104821615156060840152600160b81b90041615156080820152825260019092019101610e91565b5050505091505090565b60605f610f226124d6565b90505f610f2d61268a565b90505f81518351610f3e9190613dd1565b9050806001600160401b03811115610f5857610f586136bb565b604051908082528060200260200182016040528015610f81578160200160208202803683370190505b5093505f5b8351811015610fdb57838181518110610fa157610fa1613cfc565b6020026020010151858281518110610fbb57610fbb613cfc565b6001600160a01b0390921660209283029190910190910152600101610f86565b505f5b825181101561103f57828181518110610ff957610ff9613cfc565b60200260200101518582865161100f9190613dd1565b8151811061101f5761101f613cfc565b6001600160a01b0390921660209283029190910190910152600101610fde565b5050505090565b606081516001600160401b03811115611061576110616136bb565b60405190808252806020026020018201604052801561108a578160200160208202803683370190505b5090505f5b8251811015611141578281815181106110aa576110aa613cfc565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156110f8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061111c9190613c4a565b82828151811061112e5761112e613cfc565b602090810291909101015260010161108f565b50919050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c600401546001600160a01b031633148061118157503330145b6111db5760405162461bcd60e51b815260206004820152602560248201527f4c69624469616d6f6e643a204d75737420626520636f6e7472616374206f722060448201526437bbb732b960d91b6064820152608401610361565b565b6111e784836117c0565b6111f18482611fcd565b6111fb84846126f6565b50505050565b6060805f83516001600160401b0381111561121e5761121e6136bb565b604051908082528060200260200182016040528015611247578160200160208202803683370190505b50925083516001600160401b03811115611263576112636136bb565b60405190808252806020026020018201604052801561128c578160200160208202803683370190505b5091505f5b84518110156115fa5781600101601b015f8683815181106112b4576112b4613cfc565b6020908102919091018101516001600160a01b031682528101919091526040015f908120549060ca840190600181526020019081526020015f205f87848151811061130157611301613cfc565b6020908102919091018101516001600160a01b031682528101919091526040015f908120546001600160801b03169060ca8501908081526020019081526020015f205f88858151811061135657611356613cfc565b6020908102919091018101516001600160a01b031682528101919091526040015f9081205488516001600160801b039091169160c78701918a90879081106113a0576113a0613cfc565b6020908102919091018101516001600160a01b031682528101919091526040015f20546113d691906001600160801b0316613de4565b6113e09190613de4565b6001600160801b03166113f39190613dd1565b84828151811061140557611405613cfc565b6020908102919091010152600182015485516001600160a01b039091169086908390811061143557611435613cfc565b60200260200101516001600160a01b0316036114e157816001016008015484828151811061146557611465613cfc565b602002602001018181516114799190613dd1565b9052505f5b60088301548110156114df575f818152602080850190526040902060018101546002909101546114ae9190613e0b565b8583815181106114c0576114c0613cfc565b602002602001018181516114d49190613dd1565b90525060010161147e565b505b81600101610101015f015f8683815181106114fe576114fe613cfc565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205484828151811061153857611538613cfc565b6020026020010181815161154c9190613dd1565b905250845185908290811061156357611563613cfc565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156115b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115d59190613c4a565b8382815181106115e7576115e7613cfc565b6020908102919091010152600101611291565b5050915091565b6001600160a01b0382165f90815260c86020526040812054600160781b900463ffffffff16810361166c5760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881b9bdd081dda1a5d195b1a5cdd1959605a1b6044820152606401610361565b8164ffffffffff165f0361167f57600191505b6116888361276d565b6001600160a01b0384165f90815260c883016020526040902080546bffffffffffffffffffffffff92909216600160981b026bffffffffffffffffffffffff60981b1983168117825560d4840154600160781b63ffffffff9091160263ffffffff60781b19909116600160781b600160f81b03199093169290921791909117908190556117259064ffffffffff6401000000009091041683613e1e565b6001600160a01b0384165f81815260c88401602090815260409182902060018101805464ffffffffff191664ffffffffff968716179055805468ffffffffff00000000191664010000000095881695860217905560d4850154825194855263ffffffff169084015290917f8d064a5e129d920577973a5ead7b971dcc243cd10249e5f8077174a1da3c3c0e91015b60405180910390a2505050565b6001600160a01b0382165f90815260c8602052604081208054909160e09190911b6001600160e01b03191690036118095760405162461bcd60e51b815260040161036190613e47565b61181282612832565b81516002820180546020850151604086015160f81c600160c01b0260ff60c01b1960e09290921c600160a01b026001600160c01b03199093166001600160a01b039095169490941791909117169190911781556060830151839190600384019061187c9082613ed8565b50905050826001600160a01b03167fd85c3e3135df73f3cf7c451fc0b1925b5b038e2b533b7d5c888e128d18271bf8836040516117b39190613ac2565b5f6118c383612832565b6118cc82612969565b6118d78b8b8b612a9f565b60018101546001600160a01b038c81169116146119f8576001600160a01b038b165f908152601f82016020908152604080832060019055601e840190915281206001600160801b01905561192a8c612bd6565b90506119368186612c66565b6001600160a01b038082165f90815260228401602090815260409182902088518154928a0151938a015160f81c600160c01b0260ff60c01b1960e09590951c600160a01b026001600160c01b031990941691909516179190911791909116919091178155606086015186919060018201906119b19082613ed8565b50905050806001600160a01b03167f4feb733f3c6a968998762a33da124b435d6306a873272b8d67206f04b9c376b8866040516119ee9190613ac2565b60405180910390a2505b6001600160a01b038b165f90815260c882016020526040902054600160781b900463ffffffff1615611a3c5760405162461bcd60e51b815260040161036190613f93565b8764ffffffffff165f03611a4f57600197505b898160010160c3016004015f8d6001600160a01b03166001600160a01b031681526020019081526020015f205f015f6101000a81548163ffffffff021916908360e01c0217905550878160010160c3016004015f8d6001600160a01b03166001600160a01b031681526020019081526020015f205f0160046101000a81548164ffffffffff021916908364ffffffffff160217905550888160010160c3016004015f8d6001600160a01b03166001600160a01b031681526020019081526020015f205f0160096101000a81548165ffffffffffff021916908365ffffffffffff1602179055508060010160d3015f015f9054906101000a900463ffffffff168160010160c3016004015f8d6001600160a01b03166001600160a01b031681526020019081526020015f205f01600f6101000a81548163ffffffff021916908363ffffffff160217905550868160010160c3016004015f8d6001600160a01b03166001600160a01b031681526020019081526020015f205f01601f6101000a81548160ff021916908360f81c0217905550858160010160c3016004015f8d6001600160a01b03166001600160a01b031681526020019081526020015f2060010160056101000a8154816001600160801b0302191690836001600160801b03160217905550848160010160c3016004015f8d6001600160a01b03166001600160a01b031681526020019081526020015f2060010160156101000a8154816001600160401b0302191690836001600160401b03160217905550828160010160c3016004015f8d6001600160a01b03166001600160a01b031681526020019081526020015f206002015f820151815f015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506020820151815f0160146101000a81548163ffffffff021916908360e01c02179055506040820151815f0160186101000a81548160ff021916908360f81c02179055506060820151816001019081611d369190613ed8565b5050506001600160a01b03808c165f90815260c8830160209081526040918290208551600482018054938801519488015160f81c600160c01b0260ff60c01b1960e09690961c600160a01b026001600160c01b031990951692909616919091179290921792909216929092178255606084015184929160050190611dba9082613ed8565b5050604080516001600160e01b03198d16815264ffffffffff8b16602082015265ffffffffffff8c16818301526001600160801b03891660608201526001600160401b038816608082015290516001600160a01b038e1692507f1f55af1df5d6fa69a3dee872002a3fa44e65cc31e7214c031307f5cdfba4694e9181900360a00190a28a6001600160a01b03167fd85c3e3135df73f3cf7c451fc0b1925b5b038e2b533b7d5c888e128d18271bf884604051611e769190613ac2565b60405180910390a28a6001600160a01b03167f17cd7a3cfeb7851ca87ede57f2c70b7b03bbc5cf8ca860b56da0ba2d6b972ae483604051611eb79190613ac2565b60405180910390a25050505050505050505050565b60c9546060905f9081816001600160401b03811115611eed57611eed6136bb565b604051908082528060200260200182016040528015611f16578160200160208202803683370190505b5093505f5b82811015611fc35760c98401805482908110611f3957611f39613cfc565b5f91825260209091200154600160b01b900460ff1615611fbb5760c98401805482908110611f6957611f69613cfc565b5f918252602090912001546001600160a01b03168583611f8881613fd7565b945081518110611f9a57611f9a613cfc565b60200260200101906001600160a01b031690816001600160a01b0316815250505b600101611f1b565b5080845250505090565b6001600160a01b0382165f90815260c8602052604081208054909160e09190911b6001600160e01b03191690036120165760405162461bcd60e51b815260040161036190613e47565b61201f82612969565b81516004820180546020850151604086015160f81c600160c01b0260ff60c01b1960e09290921c600160a01b026001600160c01b03199093166001600160a01b03909516949094179190911716919091178155606083015183919060058401906120899082613ed8565b50905050826001600160a01b03167f17cd7a3cfeb7851ca87ede57f2c70b7b03bbc5cf8ca860b56da0ba2d6b972ae4836040516117b39190613ac2565b5f806120d183612f3d565b905061210f835f805f8660010160c30160050186815481106120f5576120f5613cfc565b5f91825260209091200154600160b81b900460ff16612ff8565b61211a836001611601565b6001600160a01b0383165f90815260c88301602052604081208054640100000000600160f81b0316815560018101805465010000000000600160a81b03191690556002810180546001600160c81b0319168155919061217c90600301826135ad565b50506001600160a01b0383165f90815260c88301602052604081206004810180546001600160c81b031916815591906121b890600501826135ad565b50506001600160a01b0383165f90815260c883016020526040812060018101805467ffffffffffffffff60a81b191690556002810180546001600160c81b0319168155919061220a90600301826135ad565b50506001600160a01b0383165f90815260c88301602052604081206004810180546001600160c81b0319168155919061224690600501826135ad565b50506040516001600160a01b038416907fc9cc738906f64d4a4d9521d856f5a985c4451514612d425061c01cdab7e60e99905f90a2505050565b61228a8282612c66565b6001600160a01b038281165f90815260226020908152604080832085518154938701519287015160f81c600160c01b0260ff60c01b1960e09490941c600160a01b026001600160c01b03199095169190961617929092171692909217825560608301519091839160018201906123009082613ed8565b50905050826001600160a01b03167f4feb733f3c6a968998762a33da124b435d6306a873272b8d67206f04b9c376b8836040516117b39190613ac2565b60c9546060905f9081816001600160401b0381111561235e5761235e6136bb565b604051908082528060200260200182016040528015612387578160200160208202803683370190505b5093505f5b82811015611fc35760c984018054829081106123aa576123aa613cfc565b5f91825260209091200154600160a81b900460ff161561242c5760c984018054829081106123da576123da613cfc565b5f918252602090912001546001600160a01b031685836123f981613fd7565b94508151811061240b5761240b613cfc565b60200260200101906001600160a01b031690816001600160a01b0316815250505b60010161238c565b61243c613580565b5f8061244784612f3d565b60c983018054919250908290811061246157612461613cfc565b5f9182526020918290206040805160a08101825291909201546001600160a01b038116825260ff600160a01b82048116151594830194909452600160a81b81048416151592820192909252600160b01b8204831615156060820152600160b81b90910490911615156080820152949350505050565b60c9546060905f9081816001600160401b038111156124f7576124f76136bb565b604051908082528060200260200182016040528015612520578160200160208202803683370190505b5093505f5b82811015611fc35760c9840180548290811061254357612543613cfc565b5f91825260209091200154600160a01b900460ff16156125c55760c9840180548290811061257357612573613cfc565b5f918252602090912001546001600160a01b0316858361259281613fd7565b9450815181106125a4576125a4613cfc565b60200260200101906001600160a01b031690816001600160a01b0316815250505b600101612525565b60c9546060905f90806001600160401b038111156125ed576125ed6136bb565b604051908082528060200260200182016040528015612616578160200160208202803683370190505b5092505f5b818110156126845760c9830180548290811061263957612639613cfc565b5f9182526020909120015484516001600160a01b039091169085908390811061266457612664613cfc565b6001600160a01b039092166020928302919091019091015260010161261b565b50505090565b60605f612695613144565b90505f5b8151811015611141576126c48282815181106126b7576126b7613cfc565b6020026020010151612bd6565b8282815181106126d6576126d6613cfc565b6001600160a01b0390921660209283029190910190910152600101612699565b6001600160a01b0382165f81815260c8602090815260409182902060018101805467ffffffffffffffff60a81b1916600160a81b6001600160401b03881690810291909117909155925192835292917fa07788a5e0286af6ee83db7eb8c73643ace2f3c3917084637c9dfb0153c97e8991016117b3565b6001600160a01b0381165f90815260c8602052604081205481906127fd906127c2906127a590600160781b900463ffffffff1661323b565b60d48401546127b99063ffffffff1661323b565b600b0b9061324d565b6001600160a01b0385165f90815260c8840160205260409020546127f490640100000000900464ffffffffff1661323b565b600b0b90613258565b6001600160a01b0384165f90815260c88301602052604090205461282b9190600160981b9004600b0b613fef565b9392505050565b80515f906001600160a01b03161561284b57815161284d565b305b90505f80826001600160a01b031684602001515f805f886060015160405160240161287b949392919061401c565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516128b99190614053565b5f60405180830381855afa9150503d805f81146128f1576040519150601f19603f3d011682016040523d82523d5f602084013e6128f6565b606091505b509150915081801561290857505f8151115b6111fb5760405162461bcd60e51b815260206004820152602c60248201527f57686974656c6973743a20496e76616c6964204761756765506f696e7420496d60448201526b383632b6b2b73a30ba34b7b760a11b6064820152608401610361565b80515f906001600160a01b031615612982578151612984565b305b90505f80826001600160a01b0316846020015185606001516040516024016129ac9190614069565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516129ea9190614053565b5f60405180830381855afa9150503d805f8114612a22576040519150601f19603f3d011682016040523d82523d5f602084013e612a27565b606091505b5091509150818015612a3957505f8151115b6111fb5760405162461bcd60e51b815260206004820152603160248201527f57686974656c6973743a20496e76616c6964204c697175696469747957656967604482015270343a1024b6b83632b6b2b73a30ba34b7b760791b6064820152608401610361565b5f8080612aab86613263565b90925090508115612ace5760405162461bcd60e51b815260040161036190613f93565b8015612b0e57600183810154612b099188916001600160a01b03808416911614156001600160e01b0319891663c84c772760e01b1480612ff8565b612b43565b600183810154612b439188916001600160a01b03808416911614156001600160e01b0319891663c84c772760e01b148061332e565b801561079f576001600160a01b0386165f90815260c88401602052604090205465ffffffffffff858116600160481b909204161461079f5760405162461bcd60e51b815260206004820152602a60248201527f57686974656c6973743a2043616e6e6f7420757064617465207374616c6b497360448201526939bab2b22832b921323b60b11b6064820152608401610361565b5f80826001600160a01b0316639d63848a6040518163ffffffff1660e01b81526004015f60405180830381865afa158015612c13573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612c3a919081019061407b565b905080612c4682613466565b81518110612c5657612c56613cfc565b6020026020010151915050919050565b60408101515f906060906001600160f81b031990811601612d0b57825160408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516001600160a01b0390921691612cc39190614053565b5f60405180830381855afa9150503d805f8114612cfb576040519150601f19603f3d011682016040523d82523d5f602084013e612d00565b606091505b509092509050612ed3565b60408301516001600160f81b031916607f60f91b01612d6657825160408051600481526024810182526020810180516001600160e01b0316630dfe168160e01b17905290516001600160a01b0390921691612cc39190614053565b82516001600160a01b0316612dc75760405162461bcd60e51b815260206004820152602160248201527f57686974656c6973743a20496e76616c696420546172676574204164647265736044820152607360f81b6064820152608401610361565b825f01516001600160a01b03168360200151856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e15573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e399190614127565b6060860151604051612e5092915f91602401614147565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612e8e9190614053565b5f604051808303815f865af19150503d805f8114612ec7576040519150601f19603f3d011682016040523d82523d5f602084013e612ecc565b606091505b5090925090505b818015612ee057505f8151115b6111fb5760405162461bcd60e51b815260206004820152602860248201527f57686974656c6973743a20496e76616c6964204f7261636c6520496d706c656d60448201526732b73a30ba34b7b760c11b6064820152608401610361565b60c9545f908190815b60c9830180546001600160a01b038716919083908110612f6857612f68613cfc565b5f918252602090912001546001600160a01b031614612ff05780612f8b81613fd7565b915050818110612feb5760405162461bcd60e51b815260206004820152602560248201527f4c696257686974656c6973746564546f6b656e733a20546f6b656e206e6f7420604482015264199bdd5b9960da1b6064820152608401610361565b612f46565b949350505050565b5f8061300387612f3d565b60c98301805491925087918390811061301e5761301e613cfc565b5f9182526020909120018054911515600160a01b0260ff60a01b1990921691909117905560c9820180548691908390811061305b5761305b613cfc565b5f9182526020909120018054911515600160a81b0260ff60a81b1990921691909117905560c9820180548591908390811061309857613098613cfc565b5f9182526020909120018054911515600160b01b0260ff60b01b1990921691909117905560c982018054849190839081106130d5576130d5613cfc565b5f9182526020909120018054911515600160b81b0260ff60b81b199092169190911790556040517f23f1f5ea949580076732a0337dcd8deda56a0521a037e68f7670618bcaa8a83a9061313390899084908a908a908a908a90614174565b60405180910390a150505050505050565b60c9546060905f9081816001600160401b03811115613165576131656136bb565b60405190808252806020026020018201604052801561318e578160200160208202803683370190505b5093505f5b82811015611fc35760c984018054829081106131b1576131b1613cfc565b5f91825260209091200154600160b81b900460ff16156132335760c984018054829081106131e1576131e1613cfc565b5f918252602090912001546001600160a01b0316858361320081613fd7565b94508151811061321257613212613cfc565b60200260200101906001600160a01b031690816001600160a01b0316815250505b600101613193565b5f610e52613248836134f7565b613527565b5f61282b82846141ad565b5f61282b82846141da565b60c9545f908190819080820361327f57505f9485945092505050565b5f5b60c9830180546001600160a01b0388169190839081106132a3576132a3613cfc565b5f918252602090912001546001600160a01b0316146132e257806132c681613fd7565b9150508181106132dd57505f958695509350505050565b613281565b60c983018054829081106132f8576132f8613cfc565b5f91825260209091200154600160a01b900460ff161561332057506001955f95509350505050565b505f95600195509350505050565b6040805160a0810182526001600160a01b03878116825286151560208301908152861515938301938452851515606084019081528515156080850190815260c98054600180820183555f83815297517f66be4f155c5ef2ebd3772b228f2f00681e4ed5826cdb3b1943cc11ad15ad1d28909201805496519951955194511515600160b81b0260ff60b81b19951515600160b01b0260ff60b01b19971515600160a81b029790971661ffff60a81b199b1515600160a01b026001600160a81b0319909916949099169390931796909617989098169590951792909217169290921790555490917f07aaf8603d925a24a6f55d7f6a40a5058d44798fa5f3a5c4a7ac109258db5f4b91889161344091613e0b565b8787878760405161345696959493929190614174565b60405180910390a1505050505050565b5f805b82518210156134b75782828151811061348457613484613cfc565b602090810291909101015160018201546001600160a01b039081169116146134ac5750919050565b816001019150613469565b60405162461bcd60e51b81526020600482015260156024820152742737b716a132b0b7103737ba1034b7102bb2b6361760591b6044820152606401610361565b5f6001600160ff1b038211156135235760405163123baf0360e11b815260048101839052602401610361565b5090565b80600b81900b81146135565760405163327269a760e01b81526060600482015260248101839052604401610361565b919050565b604080516080810182525f808252602082018190529181019190915260608082015290565b6040805160a0810182525f8082526020820181905291810182905260608101829052608081019190915290565b5080546135b990613d8b565b5f825580601f106135c8575050565b601f0160209004905f5260205f20908101906135e491906135e7565b50565b5b80821115613523575f81556001016135e8565b80516001600160a01b031682526020808201511515908301526040808201511515908301526060808201511515908301526080908101511515910152565b602080825282518282018190525f9190848201906040850190845b8181101561367a576136678385516135fb565b9284019260a09290920191600101613654565b50909695505050505050565b6001600160a01b03811681146135e4575f80fd5b803561355681613686565b80356001600160401b0381168114613556575f80fd5b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156136f1576136f16136bb565b60405290565b60405161022081016001600160401b03811182821017156136f1576136f16136bb565b604051601f8201601f191681016001600160401b0381118282101715613742576137426136bb565b604052919050565b80356001600160e01b031981168114613556575f80fd5b80356001600160f81b031981168114613556575f80fd5b5f60808284031215613788575f80fd5b6137906136cf565b9050813561379d81613686565b815260206137ac83820161374a565b818301526137bc60408401613761565b604083015260608301356001600160401b03808211156137da575f80fd5b818501915085601f8301126137ed575f80fd5b8135818111156137ff576137ff6136bb565b613811601f8201601f1916850161371a565b91508082528684828501011115613826575f80fd5b80848401858401375f8482840101525080606085015250505092915050565b5f805f8060808587031215613858575f80fd5b843561386381613686565b9350613871602086016136a5565b925060408501356001600160401b038082111561388c575f80fd5b61389888838901613778565b935060608701359150808211156138ad575f80fd5b506138ba87828801613778565b91505092959194509250565b803564ffffffffff81168114613556575f80fd5b5f80604083850312156138eb575f80fd5b82356138f681613686565b9150613904602084016138c6565b90509250929050565b5f806040838503121561391e575f80fd5b823561392981613686565b915060208301356001600160401b03811115613943575f80fd5b61394f85828601613778565b9150509250929050565b803565ffffffffffff81168114613556575f80fd5b80356001600160801b0381168114613556575f80fd5b5f805f805f805f805f806101408b8d03121561399e575f80fd5b6139a78b61369a565b99506139b560208c0161374a565b98506139c360408c01613959565b97506139d160608c016138c6565b96506139df60808c01613761565b95506139ed60a08c0161396e565b94506139fb60c08c016136a5565b935060e08b01356001600160401b0380821115613a16575f80fd5b613a228e838f01613778565b94506101008d0135915080821115613a38575f80fd5b613a448e838f01613778565b93506101208d0135915080821115613a5a575f80fd5b50613a678d828e01613778565b9150509295989b9194979a5092959850565b5f60208284031215613a89575f80fd5b813561282b81613686565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602080825282516001600160a01b0316828201528201516001600160e01b0319166040808301919091528201516001600160f81b0319166060808301919091528201516080808301525f90612ff060a0840182613a94565b602080825282518282018190525f9190848201906040850190845b8181101561367a5783516001600160a01b031683529284019291840191600101613b35565b5f6102208284031215613b6b575f80fd5b613b736136f7565b823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c082015260e083013560e08201526101008084013581830152506101208084013581830152506101408084013581830152506101608084013581830152506101808084013581830152506101a08084013581830152506101c08084013581830152506101e0613c1f81850161396e565b90820152610200613c3184820161396e565b908201529392505050565b60a08101610e5282846135fb565b5f60208284031215613c5a575f80fd5b5051919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601390820152721253958e8814dd5c1c1b1e4818da185b99d959606a1b604082015260600190565b6020808252601e908201527f494e563a206e6f4e6574466c6f77205374616c6b206465637265617365640000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b60208082526024908201527f494e563a206e6f4e6574466c6f7720546f6b656e2062616c616e6365206368616040820152631b99d95960e21b606082015260800190565b6020808252601f908201527f494e563a20496e73756666696369656e7420746f6b656e2062616c616e636500604082015260600190565b600181811c90821680613d9f57607f821691505b60208210810361114157634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115610e5257610e52613dbd565b6001600160801b03818116838216019080821115613e0457613e04613dbd565b5092915050565b81810381811115610e5257610e52613dbd565b600482810b9082900b03647fffffffff198112647fffffffff82131715610e5257610e52613dbd565b60208082526028908201527f57686974656c6973743a20546f6b656e206e6f742077686974656c697374656460408201526720696e2053696c6f60c01b606082015260800190565b601f821115613ed357805f5260205f20601f840160051c81016020851015613eb45750805b601f840160051c820191505b81811015610e1e575f8155600101613ec0565b505050565b81516001600160401b03811115613ef157613ef16136bb565b613f0581613eff8454613d8b565b84613e8f565b602080601f831160018114613f38575f8415613f215750858301515b5f19600386901b1c1916600185901b17855561079f565b5f85815260208120601f198616915b82811015613f6657888601518255948401946001909101908401613f47565b5085821015613f8357878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526024908201527f57686974656c6973743a20546f6b656e20616c72656164792077686974656c696040820152631cdd195960e21b606082015260800190565b5f60018201613fe857613fe8613dbd565b5060010190565b600b81810b9083900b0160016001605f1b03811360016001605f1b031982121715610e5257610e52613dbd565b60ff8516815260ff8416602082015260ff83166040820152608060608201525f6140496080830184613a94565b9695505050505050565b5f82518060208501845e5f920191825250919050565b602081525f61282b6020830184613a94565b5f602080838503121561408c575f80fd5b82516001600160401b03808211156140a2575f80fd5b818501915085601f8301126140b5575f80fd5b8151818111156140c7576140c76136bb565b8060051b91506140d884830161371a565b81815291830184019184810190888411156140f1575f80fd5b938501935b8385101561411b578451925061410b83613686565b82825293850193908501906140f6565b98975050505050505050565b5f60208284031215614137575f80fd5b815160ff8116811461282b575f80fd5b60ff8416815260ff83166020820152606060408201525f61416b6060830184613a94565b95945050505050565b6001600160a01b03969096168652602086019490945291151560408501521515606084015215156080830152151560a082015260c00190565b600b82810b9082900b0360016001605f1b0319811260016001605f1b0382131715610e5257610e52613dbd565b5f82600b0b82600b0b0280600b0b9150808214613e0457613e04613dbd56fea2646970667358221220a8bd9cc4c813b280b989baa345fbfe62eefe19becd1eaa8403714e706bd2146464736f6c63430008190033