```\\nfunction _withdrawDividendOfUser(address payable user) internal override returns (uint256)\\n{\\n    uint256 _withdrawableDividend = withdrawableDividendOf(user);\\n    if (_withdrawableDividend > 0) {\\n        withdrawnDividends[user] = withdrawnDividends[user].add(_withdrawableDividend);\\n\\n        address tokenAddress = defaultToken;\\n        bool success;\\n\\n        if (tokenAddress == address(0)) {\\n            (success, ) = user.call{value: _withdrawableDividend, gas: 3000}("");\\n        } \\n        else {\\n            address[] memory path = new address[](2);\\n            path[0] = uniswapV2Router.WETH();\\n            path[1] = tokenAddress;\\n            try\\n                uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{\\n                value: _withdrawableDividend}(0, path, user, block.timestamp)\\n            {\\n                success = true;\\n            } catch {\\n                success = false;\\n            }\\n        }\\n\\n        if (!success) {\\n            withdrawnDividends[user] = withdrawnDividends[user].sub(_withdrawableDividend);\\n            return 0;\\n        } \\n        else {\\n            emit DividendWithdrawn(user, _withdrawableDividend);\\n        }\\n        return _withdrawableDividend;\\n    }\\n    return 0;\\n}\\n```\\n