Farseen0/scar-pairs huggingface dataset:
MEDIUM severity: Vulnerable function: ```\nFile: TreasuryAction.sol\n    function _executeRebalance(uint16 currencyId) private {\n        . ```\nFile: TreasuryAction.sol\n    function _executeRebalance(uint16 currencyId) private {\n        IPrimeCashHoldingsOracle oracle = PrimeCashExchangeRate.getPrimeCashHoldingsOracle(currencyId);\n        uint8[] memory rebalancingTargets = _getRebalancingTargets(currencyId, oracle.holdings());\n   

Vulnerable code:
```\nFile: TreasuryAction.sol\n    function _executeRebalance(uint16 currencyId) private {\n        IPrimeCashHoldingsOracle oracle = PrimeCashExchangeRate.getPrimeCashHoldingsOracle(currencyId);\n        uint8[] memory rebalancingTargets = _getRebalancingTargets(currencyId, oracle.holdings());\n        (RebalancingData memory data) = REBALANCING_STRATEGY.calculateRebalance(oracle, rebalancingTargets);\n\n        (/* */, uint256 totalUnderlyingValueBefore) = oracle.getTotalUnderlyingValueStateful();\n\n        // Process redemptions first\n        Token memory underlyingToken = TokenHandler.getUnderlyingToken(currencyId);\n        TokenHandler.executeMoneyMarketRedemptions(underlyingToken, data.redeemData);\n\n        // Process deposits\n        _executeDeposits(underlyingToken, data.depositData);\n\n        (/* */, uint256 totalUnderlyingValueAfter) = oracle.getTotalUnderlyingValueStateful();\n\n        int256 underlyingDelta = totalUnderlyingValueBefore.toInt().sub(totalUnderlyingValueAfter.toInt());\n        require(underlyingDelta.abs() < Constants.REBALANCING_UNDERLYING_DELTA);\n    }\n```\n
HIGH severity: Vulnerable function: ```\nif (validSignerCount > maxSigners) {\n    revert MaxSignersReached();\n}\n`. ```\nif (validSignerCount > maxSigners) {\n    revert MaxSignersReached();\n}\n```\n

Vulnerable code:
```\nif (validSignerCount > maxSigners) {\n    revert MaxSignersReached();\n}\n```\n
MEDIUM severity: Vulnerable function: ```\n  function blacklistProtocol(uint256 _protocolNum) external onlyGuardian {\n    uint256 balance. ```\n  function blacklistProtocol(uint256 _protocolNum) external onlyGuardian {\n    uint256 balanceProtocol = balanceUnderlying(_protocolNum);\n    currentAllocations[_protocolNum] = 0;\n    controller.setProtocolBlacklist(vaultNumber, _protocolNum);\n    savedTotalUnderlying -= balanceProtocol;\n 

Vulnerable code:
```\n  function blacklistProtocol(uint256 _protocolNum) external onlyGuardian {\n    uint256 balanceProtocol = balanceUnderlying(_protocolNum);\n    currentAllocations[_protocolNum] = 0;\n    controller.setProtocolBlacklist(vaultNumber, _protocolNum);\n    savedTotalUnderlying -= balanceProtocol;\n    withdrawFromProtocol(_protocolNum, balanceProtocol);\n  }\n```\n
HIGH severity: Vulnerable function: ```\nbUsdo.executeModule(\n    IUsdo.Module.UsdoMarketReceiver, \n    abi.encode. ```\nbUsdo.executeModule(\n    IUsdo.Module.UsdoMarketReceiver, \n    abi.encodeWithSelector(\n        UsdoMarketReceiverModule.removeAssetReceiver.selector, \n        marketMsg_), \n    false);\n```\n

Vulnerable code:
```\nbUsdo.executeModule(\n    IUsdo.Module.UsdoMarketReceiver, \n    abi.encodeWithSelector(\n        UsdoMarketReceiverModule.removeAssetReceiver.selector, \n        marketMsg_), \n    false);\n```\n
HIGH severity: Vulnerable function: ```\n        function _mintInternal(address _receiver, uint _balanceIncreased, uint _totalAsset\n   . ```\n        function _mintInternal(address _receiver, uint _balanceIncreased, uint _totalAsset\n             ) internal returns (uint mintShares) {\n                unfreezeTime[_receiver] = block.timestamp + mintFreezeInterval;\n        if (freezeBuckets.interval > 0) {\n             FreezeBuckets

Vulnerable code:
```\n        function _mintInternal(address _receiver, uint _balanceIncreased, uint _totalAsset\n             ) internal returns (uint mintShares) {\n                unfreezeTime[_receiver] = block.timestamp + mintFreezeInterval;\n        if (freezeBuckets.interval > 0) {\n             FreezeBuckets.addToFreezeBuckets(freezeBuckets, _balanceIncreased.toUint96());\n        }\n                 uint _totalSupply = totalSupply();\n                    if (_totalAsset == 0 || _totalSupply == 0) {\n                     mintShares = _balanceIncreased + _totalAsset;\n                 } else {\n             mintShares = (_balanceIncreased * _totalSupply) / _totalAsset;\n             }\n            if (mintShares == 0) {\n        revert ZeroAmount();\n        }\n        _mint(_receiver, mintShares);\n        }\n```\n
MEDIUM severity: Vulnerable function: ```\n    function setLenderManager(address _lenderManager)\n        external\n        reinitializer(. ```\n    function setLenderManager(address _lenderManager)\n        external\n        reinitializer(8)\n        onlyOwner\n    {\n        _setLenderManager(_lenderManager);\n    }\n\n    function _setLenderManager(address _lenderManager)\n        internal\n        onlyInitializing\n    {\n        re

Vulnerable code:
```\n    function setLenderManager(address _lenderManager)\n        external\n        reinitializer(8)\n        onlyOwner\n    {\n        _setLenderManager(_lenderManager);\n    }\n\n    function _setLenderManager(address _lenderManager)\n        internal\n        onlyInitializing\n    {\n        require(\n            _lenderManager.isContract(),\n            "LenderManager must be a contract"\n        );\n        lenderManager = ILenderManager(_lenderManager);\n    }\n```\n
HIGH severity: Vulnerable function: ```\nmodifier onlySource(address _originSender, uint32 _origin) {\n  require(_or. ```\nmodifier onlySource(address _originSender, uint32 _origin) {\n  require(_originSender == trustedRemoteConnext[_origin] && msg.sender == connext, "Not trusted");\n  _;\n}\n```\n

Vulnerable code:
```\nmodifier onlySource(address _originSender, uint32 _origin) {\n  require(_originSender == trustedRemoteConnext[_origin] && msg.sender == connext, "Not trusted");\n  _;\n}\n```\n
MEDIUM severity: Vulnerable function: ```\nif (\n    !context.currentPosition.local.margined(context.latestVersion, co. ```\nif (\n    !context.currentPosition.local.margined(context.latestVersion, context.riskParameter, context.pendingCollateral)\n) revert MarketInsufficientMarginError();\n```\n

Vulnerable code:
```\nif (\n    !context.currentPosition.local.margined(context.latestVersion, context.riskParameter, context.pendingCollateral)\n) revert MarketInsufficientMarginError();\n```\n
MEDIUM severity: Vulnerable function: ```\n    function shutdownMarket(address asset)\n        external\n        onlyValidAsset(asset)\n  . ```\n    function shutdownMarket(address asset)\n        external\n        onlyValidAsset(asset)\n        isNotFrozen(asset)\n        nonReentrant\n    {\n      uint256 cRatio = _getAssetCollateralRatio(asset);\n      if (cRatio > LibAsset.minimumCR(asset)) {\n            revert Errors.SufficientCol

Vulnerable code:
```\n    function shutdownMarket(address asset)\n        external\n        onlyValidAsset(asset)\n        isNotFrozen(asset)\n        nonReentrant\n    {\n      uint256 cRatio = _getAssetCollateralRatio(asset);\n      if (cRatio > LibAsset.minimumCR(asset)) {\n            revert Errors.SufficientCollateral();\n        } else {\n            STypes.Asset storage Asset = s.asset[asset];\n            uint256 vault = Asset.vault;\n            uint88 assetZethCollateral = Asset.zethCollateral;\n            s.vault[vault].zethCollateral -= assetZethCollateral;\n          Asset.frozen = F.Permanent;\n            if (cRatio > 1 ether) {\n                // More than enough collateral to redeem ERC 1:1, send extras to TAPP\n                uint88 excessZeth =\n                    assetZethCollateral - assetZethCollateral.divU88(cRatio);\n                s.vaultUser[vault][address(this)].ethEscrowed += excessZeth;\n                // Reduces c-ratio to 1\n                Asset.zethCollateral -= excessZeth;\n            }\n        }\n        emit Events.ShutdownMarket(asset);\n    }\n\n    // rest of code\n\n    function _getAssetCollateralRatio(address asset)\n        private\n        view\n        returns (uint256 cRatio)\n    {\n        STypes.Asset storage Asset = s.asset[asset];\n      return Asset.zethCollateral.div(LibOracle.getPrice(asset).mul(Asset.ercDebt));\n    }\n```\n
MEDIUM severity: Vulnerable function: ```\nfunction \_setPeriod(uint64 \_period) internal {\n    require(\_period > 0, ERROR\_TIME\_PERIOD. ```\nfunction \_setPeriod(uint64 \_period) internal {\n    require(\_period > 0, ERROR\_TIME\_PERIOD\_ZERO);\n    require(openDate == 0 || openDate + \_period > getTimestamp64(), ERROR\_INVALID\_TIME\_PERIOD);\n    period = \_period;\n}\n```\n

Vulnerable code:
```\nfunction \_setPeriod(uint64 \_period) internal {\n    require(\_period > 0, ERROR\_TIME\_PERIOD\_ZERO);\n    require(openDate == 0 || openDate + \_period > getTimestamp64(), ERROR\_INVALID\_TIME\_PERIOD);\n    period = \_period;\n}\n```\n
MEDIUM severity: Vulnerable function: ```\n    function setTierWinner(\n        string calldata _bountyId,\n        uint256 _tier,\n      . ```\n    function setTierWinner(\n        string calldata _bountyId,\n        uint256 _tier,\n        string calldata _winner\n    ) external {\n        IBounty bounty = getBounty(_bountyId);\n        require(msg.sender == bounty.issuer(), Errors.CALLER_NOT_ISSUER);\n        bounty.setTierWinner(_wi

Vulnerable code:
```\n    function setTierWinner(\n        string calldata _bountyId,\n        uint256 _tier,\n        string calldata _winner\n    ) external {\n        IBounty bounty = getBounty(_bountyId);\n        require(msg.sender == bounty.issuer(), Errors.CALLER_NOT_ISSUER);\n        bounty.setTierWinner(_winner, _tier);\n\n        emit TierWinnerSelected(\n            address(bounty),\n            bounty.getTierWinners(),\n            new bytes(0),\n            VERSION_1\n        );\n    }\n\n    function setTierWinner(string memory _winner, uint256 _tier)\n        external\n        onlyOpenQ\n    {\n        tierWinners[_tier] = _winner;\n    }\n```\n
HIGH severity: Vulnerable function: ```\nfunction _verifyLendingPoolIsActive(\n    IDefaultStateManager defaultStateManager,\n    addres. ```\nfunction _verifyLendingPoolIsActive(\n    IDefaultStateManager defaultStateManager,\n    address _protectionPoolAddress,\n    address _lendingPoolAddress\n  ) internal view {\n    LendingPoolStatus poolStatus = defaultStateManager.getLendingPoolStatus(\n      _protectionPoolAddress,\n      _len

Vulnerable code:
```\nfunction _verifyLendingPoolIsActive(\n    IDefaultStateManager defaultStateManager,\n    address _protectionPoolAddress,\n    address _lendingPoolAddress\n  ) internal view {\n    LendingPoolStatus poolStatus = defaultStateManager.getLendingPoolStatus(\n      _protectionPoolAddress,\n      _lendingPoolAddress\n    );\n\n    // rest of code\n    if (\n      poolStatus == LendingPoolStatus.LateWithinGracePeriod ||\n      poolStatus == LendingPoolStatus.Late\n    ) {\n      revert IProtectionPool.LendingPoolHasLatePayment(_lendingPoolAddress);\n    }\n    // rest of code\n}\n```\n
HIGH severity: Vulnerable function: ```\n    function executeWithdraw(address from, address to, bool isInternal, bytes memory param) ext. ```\n    function executeWithdraw(address from, address to, bool isInternal, bytes memory param) external nonReentrant {\n        Funding.executeWithdraw(state, from, to, isInternal, param);\n    }\n```\n

Vulnerable code:
```\n    function executeWithdraw(address from, address to, bool isInternal, bytes memory param) external nonReentrant {\n        Funding.executeWithdraw(state, from, to, isInternal, param);\n    }\n```\n
MEDIUM severity: Vulnerable function: ```\n    function setIntervals(uint256 id_, uint32[3] calldata intervals_) external override {\n    . ```\n    function setIntervals(uint256 id_, uint32[3] calldata intervals_) external override {\n        // Check that the market is live\n        if (!isLive(id_)) revert Auctioneer_InvalidParams();\n\n\n        // Check that the intervals are non-zero\n        if (intervals_[0] == 0 || intervals_[1

Vulnerable code:
```\n    function setIntervals(uint256 id_, uint32[3] calldata intervals_) external override {\n        // Check that the market is live\n        if (!isLive(id_)) revert Auctioneer_InvalidParams();\n\n\n        // Check that the intervals are non-zero\n        if (intervals_[0] == 0 || intervals_[1] == 0 || intervals_[2] == 0)\n            revert Auctioneer_InvalidParams();\n\n\n        // Check that tuneInterval >= tuneAdjustmentDelay\n        if (intervals_[0] < intervals_[1]) revert Auctioneer_InvalidParams();\n\n\n        BondMetadata storage meta = metadata[id_];\n        // Check that tuneInterval >= depositInterval\n        if (intervals_[0] < meta.depositInterval) revert Auctioneer_InvalidParams();\n\n\n        // Check that debtDecayInterval >= minDebtDecayInterval\n        if (intervals_[2] < minDebtDecayInterval) revert Auctioneer_InvalidParams();\n\n\n        // Check that sender is market owner\n        BondMarket memory market = markets[id_];\n        if (msg.sender != market.owner) revert Auctioneer_OnlyMarketOwner();\n\n\n        // Update intervals\n        meta.tuneInterval = intervals_[0];\n        meta.tuneIntervalCapacity = market.capacity.mulDiv(\n            uint256(intervals_[0]),\n            uint256(terms[id_].conclusion) - block.timestamp\n        ); // don't have a stored value for market duration, this will update tuneIntervalCapacity based on time remaining\n        meta.tuneAdjustmentDelay = intervals_[1];\n        meta.debtDecayInterval = intervals_[2];\n    }\n```\n
MEDIUM severity: Vulnerable function: ```\n    if (SignedMath.abs(tokensToSwap) > params.sideTokensAmount) {\n        . ```\n    if (SignedMath.abs(tokensToSwap) > params.sideTokensAmount) {\n        if (SignedMath.abs(tokensToSwap) - params.sideTokensAmount < params.sideTokensAmount / 10000) {\n            tokensToSwap = SignedMath.revabs(params.sideTokensAmount, true);\n        }\n    }\n```\n

Vulnerable code:
```\n    if (SignedMath.abs(tokensToSwap) > params.sideTokensAmount) {\n        if (SignedMath.abs(tokensToSwap) - params.sideTokensAmount < params.sideTokensAmount / 10000) {\n            tokensToSwap = SignedMath.revabs(params.sideTokensAmount, true);\n        }\n    }\n```\n
MEDIUM severity: Vulnerable function: ```\n        _doCutRewardsFee(sellToken);\n        if (\n            expectedRew. ```\n        _doCutRewardsFee(sellToken);\n        if (\n            expectedRewards[i] != 0 &&\n            !PSwapLib.swap(\n                augustusSwapper,\n                tokenTransferProxy,\n                sellToken,\n                expectedRewards[i],\n                swapDatas[i]\n        

Vulnerable code:
```\n        _doCutRewardsFee(sellToken);\n        if (\n            expectedRewards[i] != 0 &&\n            !PSwapLib.swap(\n                augustusSwapper,\n                tokenTransferProxy,\n                sellToken,\n                expectedRewards[i],\n                swapDatas[i]\n            )\n        ) revert Errors.SWAP_FAILED(sellToken);\n```\n
MEDIUM severity: Vulnerable function: ```\nfunction latestRoundData(\n  address base,\n  address quote\n)\n  external\n  view\n  override\. ```\nfunction latestRoundData(\n  address base,\n  address quote\n)\n  external\n  view\n  override\n  checkPairAccess()\n  returns (\n    uint80 roundId,\n    int256 answer,\n    uint256 startedAt,\n    uint256 updatedAt,\n    uint80 answeredInRound\n  )\n{\n  uint16 currentPhaseId = s_currentPhase

Vulnerable code:
```\nfunction latestRoundData(\n  address base,\n  address quote\n)\n  external\n  view\n  override\n  checkPairAccess()\n  returns (\n    uint80 roundId,\n    int256 answer,\n    uint256 startedAt,\n    uint256 updatedAt,\n    uint80 answeredInRound\n  )\n{\n  uint16 currentPhaseId = s_currentPhaseId[base][quote];\n  AggregatorV2V3Interface aggregator = _getFeed(base, quote);\n  require(address(aggregator) != address(0), "Feed not found");\n  (\n    roundId,\n    answer,\n    startedAt,\n    updatedAt,\n    answeredInRound\n  ) = aggregator.latestRoundData();\n  return _addPhaseIds(roundId, answer, startedAt, updatedAt, answeredInRound, currentPhaseId);\n}\n```\n
MEDIUM severity: Vulnerable function: ```\nFile: GenericToken.sol\n    function executeLowLevelCall(\n        address target,\n        uin. ```\nFile: GenericToken.sol\n    function executeLowLevelCall(\n        address target,\n        uint256 msgValue,\n        bytes memory callData\n    ) internal {\n        (bool status, bytes memory returnData) = target.call{value: msgValue}(callData);\n        require(status, checkRevertMessage(re

Vulnerable code:
```\nFile: GenericToken.sol\n    function executeLowLevelCall(\n        address target,\n        uint256 msgValue,\n        bytes memory callData\n    ) internal {\n        (bool status, bytes memory returnData) = target.call{value: msgValue}(callData);\n        require(status, checkRevertMessage(returnData));\n    }\n```\n
MEDIUM severity: Vulnerable function: ```\n    if (depositAssets.gt(_maxDeposit(context)))\n        revert VaultDepositLimitExceededError(. ```\n    if (depositAssets.gt(_maxDeposit(context)))\n        revert VaultDepositLimitExceededError();\n// rest of code\nfunction _maxDeposit(Context memory context) private view returns (UFixed6) {\n    if (context.latestCheckpoint.unhealthy()) return UFixed6Lib.ZERO;\n    UFixed6 collateral = UFix

Vulnerable code:
```\n    if (depositAssets.gt(_maxDeposit(context)))\n        revert VaultDepositLimitExceededError();\n// rest of code\nfunction _maxDeposit(Context memory context) private view returns (UFixed6) {\n    if (context.latestCheckpoint.unhealthy()) return UFixed6Lib.ZERO;\n    UFixed6 collateral = UFixed6Lib.from(totalAssets().max(Fixed6Lib.ZERO)).add(context.global.deposit);\n    return context.global.assets.add(context.parameter.cap.sub(collateral.min(context.parameter.cap)));\n}\n```\n
HIGH severity: Vulnerable function: ```\n            uint inputTotalUSDValueE36;\n                for (uint i; i < o. ```\n            uint inputTotalUSDValueE36;\n                for (uint i; i < openTokenInfos.length; ) {\n                 inputTotalUSDValueE36 += openTokenInfos[i].inputAmt * tokenPriceE36s[i];\n                      borrowTotalUSDValueE36 += openTokenInfos[i].borrowAmt * tokenPriceE36s[i];\n    

Vulnerable code:
```\n            uint inputTotalUSDValueE36;\n                for (uint i; i < openTokenInfos.length; ) {\n                 inputTotalUSDValueE36 += openTokenInfos[i].inputAmt * tokenPriceE36s[i];\n                      borrowTotalUSDValueE36 += openTokenInfos[i].borrowAmt * tokenPriceE36s[i];\n                 unchecked {\n            ++i;\n                }\n            }\n                // 1.3 calculate net pnl (including strategy users & borrow profit)\n            positionOpenUSDValueE36 = inputTotalUSDValueE36 + borrowTotalUSDValueE36;\n            netPnLE36 = positionCurUSDValueE36.toInt256() - positionOpenUSDValueE36.toInt256();\n```\n
MEDIUM severity: Vulnerable function: ```\n   function collateralFactor() public view override returns (uint256) {\n        uint256 totalA. ```\n   function collateralFactor() public view override returns (uint256) {\n        uint256 totalAssetsUSD = 0;\n        for (uint256 i = 0; i < collateral.length; i++) {\n            totalAssetsUSD +=\n                (((IERC20Upgradeable(collateral[i].token).balanceOf(\n                    addre

Vulnerable code:
```\n   function collateralFactor() public view override returns (uint256) {\n        uint256 totalAssetsUSD = 0;\n        for (uint256 i = 0; i < collateral.length; i++) {\n            totalAssetsUSD +=\n                (((IERC20Upgradeable(collateral[i].token).balanceOf(\n                    address(this)\n                ) * 1e18) /\n                    (10 **\n                        IERC20MetadataUpgradeable(collateral[i].token)\n                            .decimals())) *\n                    collateral[i].oracle.getPriceUSD()) /\n                1e18;\n        }\n\n        return (totalAssetsUSD * 1e6) / totalSupply();\n    }\n```\n
HIGH severity: Vulnerable function: ```\nfunction claim() external {\n        address sender = msg.sender;\n\n        UserDetails storag. ```\nfunction claim() external {\n        address sender = msg.sender;\n\n        UserDetails storage s = userdetails[sender];\n        require(s.userDeposit != 0, "No Deposit");\n      require(s.index != vestingPoints.length, "already claimed");\n        uint256 pctAmount;\n        uint256 i = s.in

Vulnerable code:
```\nfunction claim() external {\n        address sender = msg.sender;\n\n        UserDetails storage s = userdetails[sender];\n        require(s.userDeposit != 0, "No Deposit");\n      require(s.index != vestingPoints.length, "already claimed");\n        uint256 pctAmount;\n        uint256 i = s.index;\n        for (i; i <= vestingPoints.length - 1; i++) {\n            if (block.timestamp >= vestingPoints[i][0]) {\n                pctAmount += (s.userDeposit * vestingPoints[i][1]) / 10000;\n            } else {\n                break;\n            }\n        }\n        if (pctAmount != 0) {\n            if (address(token) == address(1)) {\n              (bool sent, ) = payable(sender).call{value: pctAmount}("");\n                require(sent, "Failed to send BNB to receiver");\n            } else {\n                token.safeTransfer(sender, pctAmount);\n            }\n          s.index = uint128(i);\n            s.amountClaimed += pctAmount;\n        }\n    }\n```\n
MEDIUM severity: Vulnerable function: ```\n  penalty: 1 94536959275 94536000000\n  penalty: 2 95482328867 95481360000\. ```\n  penalty: 1 94536959275 94536000000\n  penalty: 2 95482328867 95481360000\n  penalty: 3 96437152156 96436173600\n  penalty: 4 97401523678 97400535336\n  penalty: 5 98375538914 98374540689\n  penalty: 6 99359294302 99358286095\n  penalty: 7 100352887244 100351868955\n  penalty: 8 101356416116 1

Vulnerable code:
```\n  penalty: 1 94536959275 94536000000\n  penalty: 2 95482328867 95481360000\n  penalty: 3 96437152156 96436173600\n  penalty: 4 97401523678 97400535336\n  penalty: 5 98375538914 98374540689\n  penalty: 6 99359294302 99358286095\n  penalty: 7 100352887244 100351868955\n  penalty: 8 101356416116 101355387644\n  penalty: 9 102369980277 102368941520\n  penalty: 10 103393680080 103392630935\n  // rest of code\n  penalty: 5990 5192349545726433803396851311815959 5192296858534827628530496329220095\n  penalty: 5991 5192349545726433803396851311815959 5192296858534827628530496329220095\n  penalty: 5992 5192349545726433803396851311815959 5192296858534827628530496329220095\n  penalty: 5993 5192349545726433803396851311815959 5192296858534827628530496329220095\n  penalty: 5994 5192349545726433803396851311815959 5192296858534827628530496329220095\n  penalty: 5995 5192349545726433803396851311815959 5192296858534827628530496329220095\n  penalty: 5996 5192349545726433803396851311815959 5192296858534827628530496329220095\n  penalty: 5997 5192349545726433803396851311815959 5192296858534827628530496329220095\n  penalty: 5998 5192349545726433803396851311815959 5192296858534827628530496329220095\n  penalty: 5999 5192349545726433803396851311815959 5192296858534827628530496329220095\n  penalty: 6000 5192349545726433803396851311815959 5192296858534827628530496329220095\n```\n