```\\nfunction _transfer(\\n    address from,\\n    address to,\\n    uint256 amount\\n) internal override {\\n    require(from != address(0), "ERC20: transfer from the zero address");\\n    require(to != address(0), "ERC20: transfer to the zero address");\\n\\n    if (amount == 0) {\\n        super._transfer(from, to, 0);\\n        return;\\n    }\\n\\n    if (limitsEnabled) {\\n        if (\\n            from != owner() &&\\n            to != owner() &&\\n            to != address(0) &&\\n            to != address(0xdead) &&\\n            !swapping\\n        ) {\\n            if (!tradingEnabled) {\\n                require(\\n                    transferTaxExempt[from] || transferTaxExempt[to],\\n                    "_transfer:: Trading is not active."\\n                );\\n            }\\n\\n            // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.\\n            if (transferDelayEnabled) {\\n                if (\\n                    to != owner() &&\\n                    to != address(dexRouter) &&\\n                    to != address(dexPair)\\n                ) {\\n                    require(\\n                        _holderLastTransferTimestamp[tx.origin] <\\n                            block.number,\\n                        "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."\\n                    );\\n                    _holderLastTransferTimestamp[tx.origin] = block.number;\\n                }\\n            }\\n\\n            //when buy\\n            if (\\n                automatedMarketMakerPairs[from] && !transferLimitExempt[to]\\n            ) {\\n                require(\\n                    amount <= maxTx,\\n                    "Buy transfer amount exceeds the maxTx."\\n                );\\n                require(\\n                    amount + balanceOf(to) <= maxWallet,\\n                    "Max wallet exceeded"\\n                );\\n            }\\n            //when sell\\n            else if (\\n                automatedMarketMakerPairs[to] && !transferLimitExempt[from]\\n            ) {\\n                require(\\n                    amount <= maxTx,\\n                    "Sell transfer amount exceeds the maxTx."\\n                );\\n            } else if (!transferLimitExempt[to]) {\\n                require(\\n                    amount + balanceOf(to) <= maxWallet,\\n                    "Max wallet exceeded"\\n                );\\n            }\\n        }\\n    }\\n\\n    uint256 contractTokenBalance = balanceOf(address(this));\\n\\n    bool canSwap = contractTokenBalance >= swapBackValueMin;\\n\\n    if (\\n        canSwap &&\\n        swapbackEnabled &&\\n        !swapping &&\\n        !automatedMarketMakerPairs[from] &&\\n        !transferTaxExempt[from] &&\\n        !transferTaxExempt[to]\\n    ) {\\n        swapping = true;\\n\\n        swapBack();\\n\\n        swapping = false;\\n    }\\n\\n    bool takeFee = !swapping;\\n\\n    // if any account belongs to _isExcludedFromFee account then remove the fee\\n    if (transferTaxExempt[from] || transferTaxExempt[to]) {\\n        takeFee = false;\\n    }\\n\\n    uint256 fees = 0;\\n    // only take fees on buys/sells, do not take on wallet transfers\\n    if (takeFee) {\\n        // on sell\\n        if (automatedMarketMakerPairs[to] && sellTaxTotal > 0) {\\n            fees = amount.mul(sellTaxTotal).div(100);\\n            tokensForProject += (fees * sellProjectTax) / sellTaxTotal;\\n            tokensForMarketing += (fees * sellMarketingTax) / sellTaxTotal;\\n        }\\n        // on buy\\n        else if (automatedMarketMakerPairs[from] && buyTaxTotal > 0) {\\n            fees = amount.mul(buyTaxTotal).div(100);\\n            tokensForProject += (fees * buyProjectTax) / buyTaxTotal;\\n            tokensForMarketing += (fees * buyMarketingTax) / buyTaxTotal;\\n        }\\n\\n        if (fees > 0) {\\n            super._transfer(from, address(this), fees);\\n        }\\n\\n        amount -= fees;\\n    }\\n\\n    super._transfer(from, to, amount);\\n}\\n```\\n