```\nPerpDepository.sol\n    function rebalanceLite(\n        uint256 amount,\n        int8 polarity,\n        uint160 sqrtPriceLimitX96,\n        address account\n    ) external nonReentrant returns (uint256, uint256) {\n        if (polarity == -1) {\n            return\n                _rebalanceNegativePnlLite(amount, sqrtPriceLimitX96, account);\n        } else if (polarity == 1) {\n            // disable rebalancing positive PnL\n            revert PositivePnlRebalanceDisabled(msg.sender);\n            // return _rebalancePositivePnlLite(amount, sqrtPriceLimitX96, account);\n        } else {\n            revert InvalidRebalance(polarity);\n        }\n    }\n    function _rebalanceNegativePnlLite(\n        uint256 amount,\n        uint160 sqrtPriceLimitX96,\n        address account\n    ) private returns (uint256, uint256) {\n        uint256 normalizedAmount = amount.fromDecimalToDecimal(\n            ERC20(quoteToken).decimals(),\n            18\n        );\n        _checkNegativePnl(normalizedAmount);\n        IERC20(quoteToken).transferFrom(account, address(this), amount);\n        IERC20(quoteToken).approve(address(vault), amount);\n        vault.deposit(quoteToken, amount);\n        bool isShort = false;\n        bool amountIsInput = true;\n        (uint256 baseAmount, uint256 quoteAmount) = _placePerpOrder(\n            normalizedAmount,\n            isShort,\n            amountIsInput,\n            sqrtPriceLimitX96\n        );\n        vault.withdraw(assetToken, baseAmount);\n        IERC20(assetToken).transfer(account, baseAmount);\n        emit Rebalanced(baseAmount, quoteAmount, 0);\n        return (baseAmount, quoteAmount);\n    }\n```\n