ETH Price: $3,299.50 (-3.00%)

Token

CHUNKS (CHUNKS)

Overview

Max Total Supply

500,000,000 CHUNKS

Holders

3,659 (0.00%)

Market

Price

$0.0001 @ 0.000000 ETH

Onchain Market Cap

$52,380.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,579.915783310290154158 CHUNKS

Value
$0.27 ( ~8.18305370007498E-05 ETH) [0.0005%]
0xbbe27f9b417d3a3092ef04ea3453da2154a5a35d
Loading...
Loading
Loading...
Loading
Loading...
Loading

Market

Volume (24H):$199.67
Market Capitalization:$0.00
Circulating Supply:0.00 CHUNKS
Market Data Source: Coinmarketcap

Contract Source Code Verified (Exact Match)

Contract Name:
CHUNKS

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 7 : CHUNKS.sol
//SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import '@openzeppelin/contracts/token/ERC20/IERC20.sol';
import '@openzeppelin/contracts/access/Ownable.sol';
import '@openzeppelin/contracts/utils/math/SafeMath.sol';
import '@openzeppelin/contracts/utils/Address.sol';
import "./ISwapContract.sol";


contract CHUNKS is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public whiteList;

    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcluded;
    address[] private _excluded;

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 500_000_000 * 1 ether;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    bool public commissionActive = false;
    bool public whitListEnabled = false;

    string private _name = 'CHUNKS';
    string private _symbol = 'CHUNKS';
    uint8 private _decimals = 18;

    // Buy Fees
    uint256 public _liquidityFee = 50;
    uint256 public _reflectionFee = 100;
    uint256 public _nftHolderFee = 100;
    uint256 public _treasuryFee = 500;
    uint256 public _burnFee = 50;

    // Sell Fees
    uint256 public _sellLiquidityFee = 100;
    uint256 public _sellReflectionFee = 100;
    uint256 public _sellNftHoldersFee = 100;
    uint256 public _sellTreasuryFee = 400;
    uint256 public _sellBurnFee = 100;

    // FeeWallets

    address public liqGOBWallet;
    address public treasuryWallet;
    address public ambassadorPoolWallet;
    address public rewardsWallet;
    address public marketingWallet;
    address public nftHoldersPoolWallet;

    // current fee
    uint256 public _mainReflectionFee = 0;
    uint256 public _mainBurnFee = 0;
    uint256 public _mainLiquidityFee = 0;

    SwapContractInterface public swapper;
    // Anti whale
    uint256 public constant MAX_HOLDING_PERCENTS_DIVISOR = 10000;
    uint256 public constant PERCENTS_DIVISOR = 10000;
    uint256 public _maxHoldingPercents = 50;
    bool public antiWhaleEnabled;

    bool public sellIsActive;

    // Anti bot
    mapping(uint256 => bool) allowedBuyAmount;
    bool public antiBotEnabled;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    uint256 private numTokensSellToAddToLiquidity = 100000 * 10**18;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    error SellIsNotActive();

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor(
    ) {
        sellIsActive = false;
        _rOwned[_msgSender()] = _rTotal;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function setSwapContract(address _address) public onlyOwner {
        swapper = SwapContractInterface(_address);
    }

    function setCommissionActive(bool _state) public onlyOwner {
        commissionActive = _state;
    }

    function activateSell() public onlyOwner {
        sellIsActive = true;
    }

    function setMarketingWallet(address newWallet) external onlyOwner {
        marketingWallet = newWallet;
    }

    function setNftHoldersPoolWallet(address newWallet) external onlyOwner {
        nftHoldersPoolWallet = newWallet;
    }

    function setRewardWallet(address newWallet) external onlyOwner {
        rewardsWallet = newWallet;
    }

    function setTreasuryWallet(address newWallet) external onlyOwner {
        treasuryWallet = newWallet;
    }

    function setAmbassadorPoolWallet(address newWallet) external onlyOwner {
        ambassadorPoolWallet = newWallet;
    }

    function setLiqGOBWallet(address newWallet) external onlyOwner {
        liqGOBWallet = newWallet;
    }

    function setLiqBuyFee(uint256 fee) public onlyOwner {
        _liquidityFee = fee;
    }

    function setLiqSellFee(uint256 fee) public onlyOwner {
        _sellLiquidityFee = fee;
    }

    function setReflectionBuyFee(uint256 fee) public onlyOwner {
        _reflectionFee = fee;
    }

    function setReflectionSellFee(uint256 fee) public onlyOwner {
        _sellReflectionFee = fee;
    }

    function setNftBuyFee(uint256 fee) public onlyOwner {
        _nftHolderFee = fee;
    }

    function setNftSellFee(uint256 fee) public onlyOwner {
        _sellNftHoldersFee = fee;
    }

    function setTreasuryBuyFee(uint256 fee) public onlyOwner {
        _treasuryFee = fee;
    }

    function setTreasurySellFee(uint256 fee) public onlyOwner {
        _sellTreasuryFee = fee;
    }

    function setBurnBuyFee(uint256 fee) public onlyOwner {
        _burnFee = fee;
    }

    function setBurnSellFee(uint256 fee) public onlyOwner {
        _sellBurnFee = fee;
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender)
    public
    view
    override
    returns (uint256)
    {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                'BEP20: transfer amount exceeds allowance'
            )
        );
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
    public
    virtual
    returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].add(addedValue)
        );
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
    public
    virtual
    returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                'BEP20: decreased allowance below zero'
            )
        );
        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], 'Excluded addresses cannot call this function');
        (uint256 rAmount, , , , , ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee)
    public
    view
    returns (uint256)
    {
        require(tAmount <= _tTotal, 'Amount must be less than supply');
        if (!deductTransferFee) {
            (uint256 rAmount, , , , , ) = _getValues(tAmount);
            return rAmount;
        } else {
            (, uint256 rTransferAmount, , , , ) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns (uint256) {
        require(rAmount <= _rTotal, 'Amount must be less than total reflections');
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function excludeFromReward(address account) public onlyOwner {
        require(!_isExcluded[account], 'Account is already excluded');
        if (_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner {
        require(_isExcluded[account], 'Account is already excluded');
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function _transferBothExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
        uint256 rAmount,
        uint256 rTransferAmount,
        uint256 rFee,
        uint256 tTransferAmount,
        uint256 tFee,
        uint256 tLiquidity
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount)
    private
    view
    returns (
        uint256,
        uint256,
        uint256,
        uint256,
        uint256,
        uint256
    )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(
            tAmount
        );
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(
            tAmount,
            tFee,
            tLiquidity,
            _getRate()
        );
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity);
    }

    function _getTValues(uint256 tAmount)
    private
    view
    returns (
        uint256,
        uint256,
        uint256
    )
    {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
        return (tTransferAmount, tFee, tLiquidity);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tLiquidity,
        uint256 currentRate
    )
    private
    pure
    returns (
        uint256,
        uint256,
        uint256
    )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply)
                return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate = _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(swapper)] = _rOwned[address(swapper)].add(rLiquidity);
        if (_isExcluded[address(swapper)])
            _tOwned[address(swapper)] = _tOwned[address(swapper)].add(tLiquidity);
    }

    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_mainReflectionFee).div(PERCENTS_DIVISOR);
    }

    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_mainLiquidityFee).div(PERCENTS_DIVISOR);
    }

    function activateSellFee() private {
        _mainReflectionFee = _sellReflectionFee;
        _mainLiquidityFee = _sellLiquidityFee;
        _mainBurnFee = _sellBurnFee;
    }

    function activateBuyFee() private {
        _mainReflectionFee = _reflectionFee;
        _mainLiquidityFee = _liquidityFee;
        _mainBurnFee = _burnFee;
    }

    function removeAllFee() private {
        _mainReflectionFee = 0;
        _mainLiquidityFee = 0;
        _mainBurnFee = 0;
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), 'BEP20: approve from the zero address');
        require(spender != address(0), 'BEP20: approve to the zero address');

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function swapAndLiquify(uint256 _amount) private lockTheSwap {
        swapper.swap(_amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), 'ERC20: transfer from the zero address');
        require(amount > 0, 'Transfer amount must be greater than zero');

        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is pancake pair.
        if (address(swapper) != address(0)) {
            uint256 contractTokenBalance = balanceOf(address(swapper));
            bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
            if (
                overMinTokenBalance &&
                !inSwapAndLiquify &&
                to == swapper.getPair() &&
                swapAndLiquifyEnabled
            ) {
                contractTokenBalance = numTokensSellToAddToLiquidity;
                //add liquidity
                swapAndLiquify(contractTokenBalance);
            }
        }

        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from, to, amount);

        if (antiWhaleEnabled) {
            uint256 maxAllowed = (_tTotal * _maxHoldingPercents) / MAX_HOLDING_PERCENTS_DIVISOR;
            if (address(swapper) != address(0)) {
                if (to == swapper.getPair()) {
                    require(
                        amount <= maxAllowed,
                        'Transacted amount exceed the max allowed value'
                    );
                } else {
                    require(
                        balanceOf(to) <= maxAllowed,
                        'Wallet balance exceeds the max limit'
                    );
                }
            } else {
                require(
                    balanceOf(to) <= maxAllowed,
                    'Wallet balance exceeds the max limit'
                );
            }
        }
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        if (!sellIsActive && sender == swapper.getPair()) revert SellIsNotActive();
        bool isSell = false;
        bool isBuy = false;
        if (recipient == swapper.getPair() && !_isExcludedFromFee[sender]) {
            activateSellFee();
            isSell = true;
        } else if (sender == swapper.getPair() && !_isExcludedFromFee[recipient]) {
            activateBuyFee();
            isBuy = true;
        }
        if (isSell || isBuy) {
            if (whitListEnabled) {
                require(whiteList[sender] || whiteList[recipient], 'Only white list user');
            }
            uint256 _burnAmount = amount.mul(_mainBurnFee).div(PERCENTS_DIVISOR);

            removeAllFee();

            _transferStandard(sender, address(0), _burnAmount);

            if (isBuy) {
                uint256 _treasuryAmount = amount.mul(_treasuryFee).div(PERCENTS_DIVISOR);
                uint256 _nftHolderAmount = amount.mul(_nftHolderFee).div(PERCENTS_DIVISOR);
                amount = amount.sub(_treasuryAmount).sub(_nftHolderAmount);

                _transferStandard(sender, treasuryWallet, _treasuryAmount);
                _transferStandard(sender, nftHoldersPoolWallet, _nftHolderAmount);
                activateBuyFee();
            } else {
                uint256 _sellTreasuryAmount = amount.mul(_sellTreasuryFee).div(PERCENTS_DIVISOR);
                uint256 _sellNftHoldersAmount = amount.mul(_sellNftHoldersFee).div(PERCENTS_DIVISOR);
                amount = amount.sub(_sellTreasuryAmount).sub(_sellNftHoldersAmount);

                _transferStandard(sender, treasuryWallet, _sellTreasuryAmount);
                _transferStandard(sender, nftHoldersPoolWallet, _sellNftHoldersAmount);
                activateSellFee();
            }
            amount = amount.sub(_burnAmount);
        }

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(
                sender,
                recipient,
                amount
            );
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(
                sender,
                recipient,
                amount
            );
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(
                sender,
                recipient,
                amount
            );
        } else {
            _transferStandard(sender, recipient, amount);
        }
        removeAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
        uint256 rAmount,
        uint256 rTransferAmount,
        uint256 rFee,
        uint256 tTransferAmount,
        uint256 tFee,
        uint256 tLiquidity
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
        uint256 rAmount,
        uint256 rTransferAmount,
        uint256 rFee,
        uint256 tTransferAmount,
        uint256 tFee,
        uint256 tLiquidity
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
        uint256 rAmount,
        uint256 rTransferAmount,
        uint256 rFee,
        uint256 tTransferAmount,
        uint256 tFee,
        uint256 tLiquidity
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function setMaxHoldingPercents(uint256 maxHoldingPercents) external onlyOwner {
        _maxHoldingPercents = maxHoldingPercents;
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setWhiteListEnabled(bool _enabled) public onlyOwner {
        whitListEnabled = _enabled;
    }

    function addToWhiteList(address _user) public onlyOwner {
        whiteList[_user] = true;
    }

    function removeFromWhiteList(address _user) public onlyOwner {
        whiteList[_user] = false;
    }

    function addToWhiteListBatch(address[] memory _users) public onlyOwner {
        for (uint256 i = 0; i < _users.length; i++) {
            whiteList[_users[i]] = true;
        }
    }

    function removeFromWhiteListBatch(address[] memory _users) public onlyOwner {
        for (uint256 i = 0; i < _users.length; i++) {
            whiteList[_users[i]] = false;
        }
    }

    function setAntiWhale(bool enabled) external onlyOwner {
        antiWhaleEnabled = enabled;
    }
}

File 2 of 7 : ISwapContract.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface SwapContractInterface {

    function getPair() external view returns(address);

    function getRouter() external view returns(address);

    function swap(uint256 _amount) external;
}

File 3 of 7 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}

File 4 of 7 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 5 of 7 : Address.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)

pragma solidity ^0.8.1;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     *
     * [IMPORTANT]
     * ====
     * You shouldn't rely on `isContract` to protect against flash loan attacks!
     *
     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
     * constructor.
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly
                /// @solidity memory-safe-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

File 6 of 7 : SafeMath.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol)

pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

File 7 of 7 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

Settings
{
  "viaIR": true,
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"SellIsNotActive","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_HOLDING_PERCENTS_DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERCENTS_DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mainBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mainLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mainReflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxHoldingPercents","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_nftHolderFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellNftHoldersFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellReflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_treasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activateSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"addToWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"addToWhiteListBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ambassadorPoolWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiBotEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiWhaleEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"commissionActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqGOBWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftHoldersPoolWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removeFromWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"removeFromWhiteListBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardsWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setAmbassadorPoolWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setAntiWhale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setBurnBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setBurnSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setCommissionActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setLiqBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setLiqGOBWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setLiqSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxHoldingPercents","type":"uint256"}],"name":"setMaxHoldingPercents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setNftBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setNftHoldersPoolWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setNftSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setReflectionBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setReflectionSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setRewardWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setSwapContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setTreasuryBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setTreasurySellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setWhiteListEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapper","outputs":[{"internalType":"contract SwapContractInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitListEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

608060405234156200001057600080fd5b6200001a6200036e565b620000306b019d971e4fe8401e74000000600855565b6200004762000041600854620001fe565b19600955565b6200005760ff19600b5416600b55565b6200006861ff0019600b5416600b55565b6200007262000224565b6200007c620002c9565b6200008f601260ff19600e541617600e55565b6200009a6032600f55565b620000a56064601055565b620000b06064601155565b620000bc6101f4601255565b620000c76032601355565b620000d26064601455565b620000dd6064601555565b620000e86064601655565b620000f4610190601755565b620000ff6064601855565b6200010a6000601f55565b620001156000602055565b620001206000602155565b6200012b6032602355565b6200013d62ff00001960265416602655565b6200015169152d02c7e14af6800000602755565b6200016261ff001960245416602455565b60095433600090815260016020526040902055600080546001600160a01b03168152600560205260409020620001a0905b805460ff19166001179055565b306000908152600560205260409020620001ba9062000193565b6008546040518181523360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602084a3505060405161301780620003bb83398082f35b6000816200021c57634e487b7160e01b600052601260045260246000fd5b506000190690565b600c54600180821691811c90826200023d57607f821691505b602082108314156200025f57634e487b7160e01b600052602260045260246000fd5b601f821115620002b457600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c79250601f820160051c83015b80841015620002b25760008455928101926200029b565b505b5050600c654348554e4b5360d01b01600c5550565b600d54600180821691811c9082620002e257607f821691505b602082108314156200030457634e487b7160e01b600052602260045260246000fd5b601f8211156200035957600d6000527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb59250601f820160051c83015b808410156200035757600084559281019262000340565b505b5050600c654348554e4b5360d01b01600d5550565b60008054336001600160a01b0319821681178355604051919290916001600160a01b038416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35056fe60406080815260043610610e75576000803560e01c6301bf66488114610394576306fdde0381146103b45763095ea7b381146103e0576309700019811461041357630a7d2d87811461043f576313114a9d811461045f576314f4987c811461047f576318160ddd81146104ae576319a391ea81146104ce576323b872dd81146104ee576324fcf8cf8114610523576326180e9481146105435763271c029b811461056f576328f0b257811461058a57632b3297f981146105aa57632d83811981146105d657632ebdc70881146105fb5763313ce567811461061657633206b4aa811461063c5763343a45b2811461065c57633685d4198114610677576336efbcb581146106925763372c12b181146106be57633950935181146106fe57633bd5d173811461071b57633e2e4e3481146107365763437823ec811461075157634549b039811461076c57634626402b811461079d576347ac59ae81146107c9576347ee039481146107f057634a5566bf811461080b57634a74bb02811461082657634f29d7658114610855576352390c02811461087057635342acb4811461088b576357d87f0d81146108bf57635958621e81146108eb57635af89f90811461090657635b35f9c9811461092157635d098b38811461094d576364a06e8081146109685763684d3e95811461098757636bc87c3a81146109a257636e0983ca81146109c257636e45d0398114610968576370a0823181146109dd5763715018a681146109f857637280b6ba8114610a1357637598f8bc8114610a2e576375f0a8748114610a4e57637977a5378114610a7a57637abdc1ca8114610a955763839e6b178114610ab5576383d5b2298114610ad0576384d007398114610aeb576388790a688114610b06576388f820208114610b2657638da5cb5b8114610b5a576395d89b418114610b8557639655cab58114610ba057639702fd528114610bbb5763a457c2d78114610bea5763a8602fea8114610c075763a9059cbb8114610c225763b84f66048114610c3f5763b8788e5a8114610c6b5763b8a34f9d8114610c865763c08d46768114610ca65763c0b0fda28114610cc15763c49b9a808114610ce15763d07b94528114610cfc5763d138e9388114610d1c5763d259ab428114610d375763d8c6404b8114610d525763dbc80d218114610d7e5763dd62ed3e8114610d995763e9a584ad8114610e015763e9aa7d878114610e1c5763ea2f0b378114610e3c5763f2fde38b8114610e5757610e72565b341561039e578182fd5b6103af6103aa36610e93565b612ec9565b818351f35b34156103be578182fd5b6103c736610eb9565b6103cf6114dd565b8351806103dc8383610ecb565b0381f35b34156103ea578182fd5b6103f336610f20565b6103fd8183611690565b9150508351806103dc8383901515815260200190565b341561041d578182fd5b61042636610eb9565b601b5483516001600160a01b0390911680825290602081f35b3415610449578182fd5b61045236610eb9565b6023548351818152602081f35b3415610469578182fd5b61047236610eb9565b600a548351818152602081f35b3415610489578182fd5b61049236610eb9565b60ff60245460081c168351806103dc8383901515815260200190565b34156104b8578182fd5b6104c136610eb9565b6008548351818152602081f35b34156104d8578182fd5b6104e136610eb9565b6011548351818152602081f35b34156104f8578182fd5b61050136610f4c565b61050c81838561169b565b925050508351806103dc8383901515815260200190565b341561052d578182fd5b61053636610eb9565b6017548351818152602081f35b341561054d578182fd5b61055636610eb9565b60195483516001600160a01b0390911680825290602081f35b3415610579578182fd5b6103af61058536610e93565b611407565b3415610594578182fd5b61059d36610eb9565b6012548351818152602081f35b34156105b4578182fd5b6105bd36610eb9565b60225483516001600160a01b0390911680825290602081f35b34156105e0578182fd5b6105f16105ec36610f8a565b6119e2565b8351818152602081f35b3415610605578182fd5b6103af61061136610e93565b611389565b3415610620578182fd5b61062936610eb9565b600e54835160ff90911680825290602081f35b3415610646578182fd5b61064f36610eb9565b6010548351818152602081f35b3415610666578182fd5b6103af61067236610fa6565b612e7a565b3415610681578182fd5b6103af61068d36610e93565b611c16565b341561069c578182fd5b6106a536610eb9565b601e5483516001600160a01b0390911680825290602081f35b34156106c8578182fd5b6106f26106d436610e93565b6001600160a01b031660009081526004602052604090205460ff1690565b83518115158152602081f35b3415610708578182fd5b61071136610f20565b6103fd8183611761565b3415610725578182fd5b6103af61073136610f8a565b611863565b3415610740578182fd5b61074936610eb9565b6103af611346565b341561075b578182fd5b6103af61076736610e93565b612dc5565b3415610776578182fd5b61077f36611019565b610789818361195a565b9150508351806103dc838390815260200190565b34156107a7578182fd5b6107b036610eb9565b601a5483516001600160a01b0390911680825290602081f35b34156107d3578182fd5b6107dc36610eb9565b6020548351806103dc838390815260200190565b34156107fa578182fd5b6103af61080636610e93565b612e9d565b3415610815578182fd5b6103af61082136610fa6565b612fb5565b3415610830578182fd5b61083936610eb9565b60ff60265460101c168351806103dc8383901515815260200190565b341561085f578182fd5b6103af61086b36610e93565b611431565b341561087a578182fd5b6103af61088636610e93565b611a7f565b3415610895578182fd5b6106f26108a136610e93565b6001600160a01b031660009081526005602052604090205460ff1690565b34156108c9578182fd5b6108d236610eb9565b60ff602454168351806103dc8383901515815260200190565b34156108f5578182fd5b6103af61090136610e93565b6113b3565b3415610910578182fd5b6103af61091c36610f8a565b61145b565b341561092b578182fd5b61093436610eb9565b601c5483516001600160a01b0390911680825290602081f35b3415610957578182fd5b6103af61096336610e93565b61135f565b3415610972578182fd5b61097b36610eb9565b82516127108152602081f35b3415610991578182fd5b6103af61099d366110b5565b612f65565b34156109ac578182fd5b6109b536610eb9565b600f548351818152602081f35b34156109cc578182fd5b6103af6109d836610f8a565b61149c565b34156109e7578182fd5b6105f16109f336610e93565b61162b565b3415610a02578182fd5b610a0b36610eb9565b6103af61119a565b3415610a1d578182fd5b6103af610a2936610f8a565b611482565b3415610a38578182fd5b610a4136610eb9565b6015548351818152602081f35b3415610a58578182fd5b610a6136610eb9565b601d5483516001600160a01b0390911680825290602081f35b3415610a84578182fd5b6103af610a9036610f8a565b6114b6565b3415610a9f578182fd5b610aa836610eb9565b6018548351818152602081f35b3415610abf578182fd5b6103af610acb36610f8a565b6114d0565b3415610ada578182fd5b6103af610ae636610fa6565b611328565b3415610af5578182fd5b6103af610b0136610f8a565b6114c3565b3415610b10578182fd5b610b1936610eb9565b6014548351818152602081f35b3415610b30578182fd5b6106f2610b3c36610e93565b6001600160a01b031660009081526006602052604090205460ff1690565b3415610b64578182fd5b610b6d36610eb9565b815483516001600160a01b0390911680825290602081f35b3415610b8f578182fd5b610b9836610eb9565b6103cf6115a7565b3415610baa578182fd5b6103af610bb636610f8a565b612e1a565b3415610bc5578182fd5b610bce36610eb9565b60ff600b5460081c168351806103dc8383901515815260200190565b3415610bf4578182fd5b610bfd36610f20565b6103fd81836117db565b3415610c11578182fd5b6103af610c1d36610e93565b6113dd565b3415610c2c578182fd5b610c3536610f20565b6103fd818361167d565b3415610c49578182fd5b610c5236610eb9565b60ff600b54168351806103dc8383901515815260200190565b3415610c75578182fd5b6103af610c8136610f8a565b611475565b3415610c90578182fd5b610c9936610eb9565b601f548351818152602081f35b3415610cb0578182fd5b6103af610cbc36610f8a565b611468565b3415610ccb578182fd5b610cd436610eb9565b6013548351818152602081f35b3415610ceb578182fd5b6103af610cf736610fa6565b612e27565b3415610d06578182fd5b610d0f36610eb9565b6016548351818152602081f35b3415610d26578182fd5b6103af610d32366110b5565b612ef2565b3415610d41578182fd5b6103af610d4d36610e93565b6112fe565b3415610d5c578182fd5b610d6536610eb9565b60ff602654168351806103dc8383901515815260200190565b3415610d88578182fd5b6103af610d9436610f8a565b61148f565b3415610da3578182fd5b610dac3661116b565b610dec81610dce846001600160a01b0316600090815260036020526040902090565b6001600160a01b039190911660009081526020919091526040902090565b549150508351806103dc838390815260200190565b3415610e0b578182fd5b6103af610e1736610f8a565b6114a9565b3415610e26578182fd5b610e2f36610eb9565b6021548351818152602081f35b3415610e46578182fd5b6103af610e5236610e93565b612df1565b3415610e61578182fd5b6103af610e6d36610e93565b611247565b50505b50600080fd5b6001600160a01b0381168114610e9057600080fd5b50565b6000602060031983011215610ea757600080fd5b600435610eb381610e7b565b92915050565b600060031982011215610e9057600080fd5b600060208083528351808285015260005b81811015610ef857858101830151858201604001528201610edc565b81811115610f0a576000604083870101525b50601f01601f1916929092016040019392505050565b600080604060031984011215610f3557600080fd5b600435610f4181610e7b565b936024359350915050565b60008080606060031985011215610f6257600080fd5b600435610f6e81610e7b565b9250602435610f7c81610e7b565b929492935050604435919050565b6000602060031983011215610f9e57600080fd5b505060043590565b6000602060031983011215610fba57600080fd5b6004358015158114610eb357600080fd5b6001600160a01b0316600090815260016020526040902090565b6001600160a01b0316600090815260026020526040902090565b6001600160a01b0316600090815260066020526040902090565b60008060406003198401121561102e57600080fd5b6004359150602435801515811461104457600080fd5b919391925050565b634e487b7160e01b600052604160045260246000fd5b6060810181811067ffffffffffffffff821117156110825761108261104c565b60405250565b601f8201601f1916810167ffffffffffffffff811182821017156110ae576110ae61104c565b6040525050565b6000602080600319840112156110ca57600080fd5b60043567ffffffffffffffff808211156110e357600080fd5b8460238301126110f257600080fd5b8160040135818111156111075761110761104c565b8060051b915060405161111c85840182611088565b818152918301602401918481018784111561113657600080fd5b6024850194505b83851015611160578435925061115283610e7b565b82815293850193850161113d565b509695505050505050565b60008060406003198401121561118057600080fd5b60043561118c81610e7b565b915060243561104481610e7b565b6111a26111ef565b6000546bffffffffffffffffffffffff60a01b8116600055600060018060a01b0382167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e06000604051a350565b6000546001600160a01b0316338114610e905760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606481fd5b61124f6111ef565b6001600160a01b03818116806112b35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608481fd5b600054816bffffffffffffffffffffffff60a01b821617600055838382167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e06000604051a350505050565b6113066111ef565b602280546001600160a01b0319166001600160a01b0392909216919091179055565b6113306111ef565b60ff19600b541660ff821515168117600b555050565b61134e6111ef565b61010061ff00196024541617602455565b6113676111ef565b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b6113916111ef565b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6113bb6111ef565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6113e56111ef565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b61140f6111ef565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6114396111ef565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6114636111ef565b600f55565b6114706111ef565b601455565b61147d6111ef565b601055565b61148a6111ef565b601555565b6114976111ef565b601155565b6114a46111ef565b601655565b6114b16111ef565b601255565b6114be6111ef565b601755565b6114cb6111ef565b601355565b6114d86111ef565b601855565b604051600c54600090600181811c90808316806114fb57607f831692505b602080841082141561151b57634e487b7160e01b86526022600452602486fd5b83875260208701828015611536576001811461154757611590565b60ff19871682528282019750611590565b600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b60005b8781101561158a57815484820152908601908401611571565b83019850505b505050505050506115a382820383611088565b5090565b604051600d54600090600181811c90808316806115c557607f831692505b60208084108214156115e557634e487b7160e01b86526022600452602486fd5b83875260208701828015611536576001811461160057611590565b600d6000527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb561156e565b600060018060a01b0382166000818152600660205260ff60408220541615611660579081526002602052604090205492915050565b818152600160205261167560408220546119e2565b949350505050565b611688828233612273565b506001919050565b611688828233611fc9565b6116a6838383612273565b6001600160a01b03811660009081526003602090815260408083203384529091528120546040516116d681611062565b602881527f42455032303a207472616e7366657220616d6f756e74206578636565647320616020820152676c6c6f77616e636560c01b604082015261172661171f828885611732565b3386611fc9565b50600195945050505050565b60008183111561175a5760405162461bcd60e51b8152806117568660048301610ecb565b0381fd5b5003919050565b3360009081526003602090815260408083206001600160a01b03851684529091528120548319811115611796576117966117ad565b6117a38482018433611fc9565b5060019392505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156117d6576117d66117ad565b500190565b3360009081526003602090815260408083206001600160a01b038516845290915281205460405161180b81611062565b602581527f42455032303a2064656372656173656420616c6c6f77616e63652062656c6f77602082015264207a65726f60d81b6040820152611858611851828785611732565b8533611fc9565b506001949350505050565b33600052600660205260ff60406000205416156118d45760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608481fd5b6118dd81611db3565b50505050506118f5816118ef33610fcb565b54611943565b6118fe33610fcb565b5561191361190e82600954611943565b600955565b50610e9061192382600a546117c3565b600a55565b6000600182101561193b5761193b6117ad565b506000190190565b600082821015611955576119556117ad565b500390565b60006008548211156119ab5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606481fd5b821580156119cb576119bc83611db3565b50505050508092505050610eb3565b6119d483611db3565b509298975050505050505050565b6000600954821115611a465760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608481fd5b611a4e611e92565b611675611a5b8284611a5d565b855b600082611a7a57634e487b7160e01b600052601260045260246000fd5b500490565b611a876111ef565b6001600160a01b038116600081815260066020526040812054611aad9060ff1615611b72565b8181526001602052604081205415611adf578181526001602052611ad460408220546119e2565b611add84610fe5565b555b611ae883610fff565b805460ff191660011790556007549150680100000000000000008210611b1057611b1061104c565b6001820180600755808310611b2757611b27611bbc565b50600790527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688810180546001600160a01b0384166001600160a01b03199091161790555050565b5050565b80610e905760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606481fd5b634e487b7160e01b600052603260045260246000fd5b6000806007548310611be657611be6611bbc565b5050600760009081527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890910191565b611c1e6111ef565b6001600160a01b03818116600081815260066020526040812054611c449060ff16611b72565b805b600754808210611c565750611d21565b611c5f82611bd2565b8587611c7a83855460039190911b1c6001600160a01b031690565b161415611d0e57611c92611c8d84611928565b611bd2565b611cab81835460039190911b1c6001600160a01b031690565b915050611cb785611bd2565b81546001600160a01b03808516600384901b90811b91901b908116901990911617825550505084611ce789610fe5565b55611cfe611cf489610fff565b805460ff19169055565b611d06611d43565b505050611d21565b505050611d1a81611d28565b9050611c46565b5050505050565b6000600019821415611d3c57611d3c6117ad565b5060010190565b60075480611d6157634e487b7160e01b600052603160045260246000fd5b6000198101818110611d7557611d75611bbc565b600760008190527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6879290920180546001600160a01b03191690559055565b60008060008060008061271080611dcc601f548a611e73565b0481611dda6021548b611e73565b04915080891015611ded57611ded6117ad565b80890382811015611e0057611e006117ad565b611e08611e92565b611e128183611a5d565b915050611e1f818c611e73565b611e298285611e73565b611e338387611e73565b925080821015611e4557611e456117ad565b80820383811015611e5857611e586117ad565b919d929091039b509950908390039750909550909350915050565b6000816000190483118215151615611e8d57611e8d6117ad565b500290565b600080600954806008548060006007545b80821015611f9e57611eb482611bd2565b87611ed6611ed183855460039190911b1c6001600160a01b031690565b610fcb565b541191505080611f1257611ee983611bd2565b86611f0b611f0683855460039190911b1c6001600160a01b031690565b610fe5565b5411925050505b8015611f275750939791965090945050505050565b50611f3182611bd2565b611f57611f50611ed183855460039190911b1c6001600160a01b031690565b5489611943565b97505050611f6482611bd2565b611f8a611f83611f0683855460039190911b1c6001600160a01b031690565b5487611943565b95505050611f9782611d28565b9150611ea3565b5050611faa8184611a5d565b841015611fbd5791959194509092505050565b50919491935090915050565b6001600160a01b038181166120295760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608481fd5b8083166120805760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608481fd5b50826120a483610dce846001600160a01b0316600090815260036020526040902090565b5560405183815282827f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602084a350505050565b80610e905760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608481fd5b80610e905760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608481fd5b60006020828403121561219e57600080fd5b81516121a981610e7b565b9392505050565b6040513d6000823e3d81fd5b80610e905760405162461bcd60e51b8152602060048201526024808201527f57616c6c65742062616c616e6365206578636565647320746865206d6178206c6044820152631a5b5a5d60e21b6064820152608481fd5b80610e905760405162461bcd60e51b815260206004820152602e60248201527f5472616e73616374656420616d6f756e742065786365656420746865206d617860448201526d20616c6c6f7765642076616c756560901b6064820152608481fd5b6001600160a01b0361228882821615156120d8565b612293841515612130565b6122b46122a86022546001600160a01b031690565b6001600160a01b031690565b8181161561237c576122c58161162b565b60275480821015915081156122ed576122ea6122e660265460081c60ff1690565b1590565b91505b81821561234e57833b6122ff57600080fd5b60405163c1f1b1b560e01b8152602081600481885afa80612322576123226121b0565b60008115612343576123343d84611088565b6123403d84018461218c565b90505b8716878a1614925050505b80925080156123695761236660265460101c60ff1690565b92505b5081156123795761237981612470565b50505b50612388848484612537565b60245460ff161561246a576008546123ad6123a560235483611e73565b612710900490565b90506123c46122a86022546001600160a01b031690565b8083161580159061245957813b6123da57600080fd5b60405163c1f1b1b560e01b8152602081600481865afa806123fd576123fd6121b0565b6000811561241e5761240f3d84611088565b61241b3d84018461218c565b90505b88871681881614801561243c57612437878c1115612212565b612450565b612450876124498c61162b565b11156121bc565b50505050612466565b612466836124498861162b565b5050505b50505050565b6026805461ff0019908116610100179091556022546001600160a01b0316803b61249957600080fd5b604051634a5c8c6f60e11b81526004810184905260008160248183865af19150816124c6576124c66121b0565b81156124e8576124d63d82611088565b6000813d83010312156124e857600080fd5b505080602654166026555050565b80610e905760405162461bcd60e51b815260206004820152601460248201527327b7363c903bb434ba32903634b9ba103ab9b2b960611b6044820152606481fd5b6125496122e660245460081c60ff1690565b80156125c8576125646122a86022546001600160a01b031690565b803b61256f57600080fd5b60405163c1f1b1b560e01b8152602081600481855afa915081612594576125946121b0565b600082156125b5576125a63d83611088565b6125b23d83018361218c565b90505b6001600160a01b03858116911614925050505b80156125e05760405163b468e98960e01b8152600481fd5b506000806125f96122a86022546001600160a01b031690565b803b612603578283fd5b60405163c1f1b1b560e01b808252602082600481865afa80612627576126276121b0565b858115612647576126383d85611088565b6126443d85018561218c565b90505b6001600160a01b0393508316888416149050801561268d5761268a6122e6612683896001600160a01b0316600090815260056020526040902090565b5460ff1690565b90505b8080156126b4576126ab601554601f55601454602155601854602055565b60019650612754565b843b6126be578687fd5b604051838152602081600483895afa806126da576126da6121b0565b8881156126fa576126eb3d84611088565b6126f73d84018461218c565b90505b8616868b161491505080156127305761272d6122e66126838c6001600160a01b0316600090815260056020526040902090565b90505b80156127525761274d601054601f55600f54602155601354602055565b600196505b505b505050505081826127625750805b801561290b57612777600b5460081c60ff1690565b156127d15761279d612683856001600160a01b0316600090815260046020526040902090565b9250826127c8576127c5612683866001600160a01b0316600090815260046020526040902090565b92505b6127d1836124f6565b6127e06123a560205488611e73565b92506127f66000601f5560006021556000602055565b6128008385612bce565b81801561288a576128166123a560125489611e73565b6128256123a56011548a611e73565b61283881612833848c611943565b611943565b985061285682612850601a546001600160a01b031690565b89612c85565b61286c81612850601e546001600160a01b031690565b5050612885601054601f55600f54602155601354602055565b6128fd565b6128996123a560175489611e73565b6128a86123a56016548a611e73565b6128b681612833848c611943565b98506128ce82612850601a546001600160a01b031690565b6128e481612850601e546001600160a01b031690565b50506128fd601554601f55601454602155601854602055565b506129088387611943565b95505b50505061291a61268382610fff565b80156129325761292f6122e661268385610fff565b90505b80801561294957612944858585612d4a565b612a0e565b6129586122e661268385610fff565b801561296d5761296a61268386610fff565b90505b8080156129845761297f878787612cf7565b612a0b565b6129936122e661268387610fff565b80156129ab576129a86122e661268389610fff565b90505b8080156129c2576129bd898989612c85565b612a08565b6129ce61268388610fff565b80156129e3576129e06126838a610fff565b90505b8080156129fa576129f58b8b8b612a29565b612a05565b612a058b8b8b612c85565b50505b50505b50505b5050612a246000601f5560006021556000602055565b505050565b612a3283611db3565b6001600160a01b0387166000818152600260205260409020548a811015612a5b57612a5b6117ad565b8160005260026020528a81036040600020555050612a7887610fcb565b5486811015612a8957612a896117ad565b868103612a9589610fcb565b5550612aaa83612aa48a610fe5565b546117c3565b612ab389610fe5565b55612ac185612aa48a610fcb565b612aca89610fcb565b55612ad481612b4e565b50612adf8184612b18565b50604051935080845250505082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602084a350505050565b60095481811015612b2b57612b2b6117ad565b819003600955600a548219811115612b4557612b456117ad565b909101600a5550565b612b56611e92565b612b69612b638284611a5d565b84611e73565b91505060018060a01b038060225416806000526001602052612b90836040600020546117c3565b612b9982610fcb565b555060225416905060ff612bac82610fff565b541615611b6e57612bc082612aa483610fe5565b612bc982610fe5565b555050565b612bd782611db3565b6001600160a01b03871660008181526001602052604081205488811015612c0057612c006117ad565b82825260016020528881036040832055508081526001602052612c278760408320546117c3565b97508081526001602052876040822055612c4083612b4e565b612c4a8487612b18565b604051975084885280897fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208ba350505050505050505050565b612c8e83611db3565b6001600160a01b0387811660008181526001602052604081205489811015612cb857612cb86117ad565b8282526001602052898103604083205550828b1681526001602052612ce18860408320546117c3565b612cea8c610fcb565b55505050612ad481612b4e565b612d0083611db3565b6001600160a01b03871660008181526001602052604090205487811015612d2957612d296117ad565b8160005260016020528781036040600020555050612aaa83612aa48a610fe5565b612d5383611db3565b6001600160a01b0387166000818152600260205260409020548a811015612d7c57612d7c6117ad565b8160005260026020528a81036040600020555050612d9987610fcb565b5486811015612daa57612daa6117ad565b868103612db689610fcb565b5550612ac185612aa48a610fcb565b612dcd6111ef565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b612df96111ef565b6001600160a01b03166000908152600560205260409020805460ff19169055565b612e226111ef565b602355565b612e2f6111ef565b80151560265462ff00008260101b1662ff000019821617602655506040518181527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159602082a1505050565b612e826111ef565b600b5461ff0082151560081b1661ff0019821617600b555050565b612ea56111ef565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b612ed16111ef565b6001600160a01b03166000908152600460205260409020805460ff19169055565b612efa6111ef565b6000805b82518110612f0b57505050565b6001600160a01b03612f1d8285612f45565b51168252600460205260408220805460ff19166001179055612f3e81611d28565b9050612efe565b600081518310612f5757612f57611bbc565b5060059190911b0160200190565b612f6d6111ef565b6000805b82518110612f7e57505050565b6001600160a01b03612f908285612f45565b51168252600460205260408220805460ff19169055612fae81611d28565b9050612f71565b612fbd6111ef565b60ff196024541660ff821515168117602455505056fea36469706673582212207e29959e4a1e55f4b2d5a45f8314cbba878be63fca7febed43aa7611893cf37c6c6578706572696d656e74616cf564736f6c63430008090041

Deployed Bytecode

0x60406080815260043610610e75576000803560e01c6301bf66488114610394576306fdde0381146103b45763095ea7b381146103e0576309700019811461041357630a7d2d87811461043f576313114a9d811461045f576314f4987c811461047f576318160ddd81146104ae576319a391ea81146104ce576323b872dd81146104ee576324fcf8cf8114610523576326180e9481146105435763271c029b811461056f576328f0b257811461058a57632b3297f981146105aa57632d83811981146105d657632ebdc70881146105fb5763313ce567811461061657633206b4aa811461063c5763343a45b2811461065c57633685d4198114610677576336efbcb581146106925763372c12b181146106be57633950935181146106fe57633bd5d173811461071b57633e2e4e3481146107365763437823ec811461075157634549b039811461076c57634626402b811461079d576347ac59ae81146107c9576347ee039481146107f057634a5566bf811461080b57634a74bb02811461082657634f29d7658114610855576352390c02811461087057635342acb4811461088b576357d87f0d81146108bf57635958621e81146108eb57635af89f90811461090657635b35f9c9811461092157635d098b38811461094d576364a06e8081146109685763684d3e95811461098757636bc87c3a81146109a257636e0983ca81146109c257636e45d0398114610968576370a0823181146109dd5763715018a681146109f857637280b6ba8114610a1357637598f8bc8114610a2e576375f0a8748114610a4e57637977a5378114610a7a57637abdc1ca8114610a955763839e6b178114610ab5576383d5b2298114610ad0576384d007398114610aeb576388790a688114610b06576388f820208114610b2657638da5cb5b8114610b5a576395d89b418114610b8557639655cab58114610ba057639702fd528114610bbb5763a457c2d78114610bea5763a8602fea8114610c075763a9059cbb8114610c225763b84f66048114610c3f5763b8788e5a8114610c6b5763b8a34f9d8114610c865763c08d46768114610ca65763c0b0fda28114610cc15763c49b9a808114610ce15763d07b94528114610cfc5763d138e9388114610d1c5763d259ab428114610d375763d8c6404b8114610d525763dbc80d218114610d7e5763dd62ed3e8114610d995763e9a584ad8114610e015763e9aa7d878114610e1c5763ea2f0b378114610e3c5763f2fde38b8114610e5757610e72565b341561039e578182fd5b6103af6103aa36610e93565b612ec9565b818351f35b34156103be578182fd5b6103c736610eb9565b6103cf6114dd565b8351806103dc8383610ecb565b0381f35b34156103ea578182fd5b6103f336610f20565b6103fd8183611690565b9150508351806103dc8383901515815260200190565b341561041d578182fd5b61042636610eb9565b601b5483516001600160a01b0390911680825290602081f35b3415610449578182fd5b61045236610eb9565b6023548351818152602081f35b3415610469578182fd5b61047236610eb9565b600a548351818152602081f35b3415610489578182fd5b61049236610eb9565b60ff60245460081c168351806103dc8383901515815260200190565b34156104b8578182fd5b6104c136610eb9565b6008548351818152602081f35b34156104d8578182fd5b6104e136610eb9565b6011548351818152602081f35b34156104f8578182fd5b61050136610f4c565b61050c81838561169b565b925050508351806103dc8383901515815260200190565b341561052d578182fd5b61053636610eb9565b6017548351818152602081f35b341561054d578182fd5b61055636610eb9565b60195483516001600160a01b0390911680825290602081f35b3415610579578182fd5b6103af61058536610e93565b611407565b3415610594578182fd5b61059d36610eb9565b6012548351818152602081f35b34156105b4578182fd5b6105bd36610eb9565b60225483516001600160a01b0390911680825290602081f35b34156105e0578182fd5b6105f16105ec36610f8a565b6119e2565b8351818152602081f35b3415610605578182fd5b6103af61061136610e93565b611389565b3415610620578182fd5b61062936610eb9565b600e54835160ff90911680825290602081f35b3415610646578182fd5b61064f36610eb9565b6010548351818152602081f35b3415610666578182fd5b6103af61067236610fa6565b612e7a565b3415610681578182fd5b6103af61068d36610e93565b611c16565b341561069c578182fd5b6106a536610eb9565b601e5483516001600160a01b0390911680825290602081f35b34156106c8578182fd5b6106f26106d436610e93565b6001600160a01b031660009081526004602052604090205460ff1690565b83518115158152602081f35b3415610708578182fd5b61071136610f20565b6103fd8183611761565b3415610725578182fd5b6103af61073136610f8a565b611863565b3415610740578182fd5b61074936610eb9565b6103af611346565b341561075b578182fd5b6103af61076736610e93565b612dc5565b3415610776578182fd5b61077f36611019565b610789818361195a565b9150508351806103dc838390815260200190565b34156107a7578182fd5b6107b036610eb9565b601a5483516001600160a01b0390911680825290602081f35b34156107d3578182fd5b6107dc36610eb9565b6020548351806103dc838390815260200190565b34156107fa578182fd5b6103af61080636610e93565b612e9d565b3415610815578182fd5b6103af61082136610fa6565b612fb5565b3415610830578182fd5b61083936610eb9565b60ff60265460101c168351806103dc8383901515815260200190565b341561085f578182fd5b6103af61086b36610e93565b611431565b341561087a578182fd5b6103af61088636610e93565b611a7f565b3415610895578182fd5b6106f26108a136610e93565b6001600160a01b031660009081526005602052604090205460ff1690565b34156108c9578182fd5b6108d236610eb9565b60ff602454168351806103dc8383901515815260200190565b34156108f5578182fd5b6103af61090136610e93565b6113b3565b3415610910578182fd5b6103af61091c36610f8a565b61145b565b341561092b578182fd5b61093436610eb9565b601c5483516001600160a01b0390911680825290602081f35b3415610957578182fd5b6103af61096336610e93565b61135f565b3415610972578182fd5b61097b36610eb9565b82516127108152602081f35b3415610991578182fd5b6103af61099d366110b5565b612f65565b34156109ac578182fd5b6109b536610eb9565b600f548351818152602081f35b34156109cc578182fd5b6103af6109d836610f8a565b61149c565b34156109e7578182fd5b6105f16109f336610e93565b61162b565b3415610a02578182fd5b610a0b36610eb9565b6103af61119a565b3415610a1d578182fd5b6103af610a2936610f8a565b611482565b3415610a38578182fd5b610a4136610eb9565b6015548351818152602081f35b3415610a58578182fd5b610a6136610eb9565b601d5483516001600160a01b0390911680825290602081f35b3415610a84578182fd5b6103af610a9036610f8a565b6114b6565b3415610a9f578182fd5b610aa836610eb9565b6018548351818152602081f35b3415610abf578182fd5b6103af610acb36610f8a565b6114d0565b3415610ada578182fd5b6103af610ae636610fa6565b611328565b3415610af5578182fd5b6103af610b0136610f8a565b6114c3565b3415610b10578182fd5b610b1936610eb9565b6014548351818152602081f35b3415610b30578182fd5b6106f2610b3c36610e93565b6001600160a01b031660009081526006602052604090205460ff1690565b3415610b64578182fd5b610b6d36610eb9565b815483516001600160a01b0390911680825290602081f35b3415610b8f578182fd5b610b9836610eb9565b6103cf6115a7565b3415610baa578182fd5b6103af610bb636610f8a565b612e1a565b3415610bc5578182fd5b610bce36610eb9565b60ff600b5460081c168351806103dc8383901515815260200190565b3415610bf4578182fd5b610bfd36610f20565b6103fd81836117db565b3415610c11578182fd5b6103af610c1d36610e93565b6113dd565b3415610c2c578182fd5b610c3536610f20565b6103fd818361167d565b3415610c49578182fd5b610c5236610eb9565b60ff600b54168351806103dc8383901515815260200190565b3415610c75578182fd5b6103af610c8136610f8a565b611475565b3415610c90578182fd5b610c9936610eb9565b601f548351818152602081f35b3415610cb0578182fd5b6103af610cbc36610f8a565b611468565b3415610ccb578182fd5b610cd436610eb9565b6013548351818152602081f35b3415610ceb578182fd5b6103af610cf736610fa6565b612e27565b3415610d06578182fd5b610d0f36610eb9565b6016548351818152602081f35b3415610d26578182fd5b6103af610d32366110b5565b612ef2565b3415610d41578182fd5b6103af610d4d36610e93565b6112fe565b3415610d5c578182fd5b610d6536610eb9565b60ff602654168351806103dc8383901515815260200190565b3415610d88578182fd5b6103af610d9436610f8a565b61148f565b3415610da3578182fd5b610dac3661116b565b610dec81610dce846001600160a01b0316600090815260036020526040902090565b6001600160a01b039190911660009081526020919091526040902090565b549150508351806103dc838390815260200190565b3415610e0b578182fd5b6103af610e1736610f8a565b6114a9565b3415610e26578182fd5b610e2f36610eb9565b6021548351818152602081f35b3415610e46578182fd5b6103af610e5236610e93565b612df1565b3415610e61578182fd5b6103af610e6d36610e93565b611247565b50505b50600080fd5b6001600160a01b0381168114610e9057600080fd5b50565b6000602060031983011215610ea757600080fd5b600435610eb381610e7b565b92915050565b600060031982011215610e9057600080fd5b600060208083528351808285015260005b81811015610ef857858101830151858201604001528201610edc565b81811115610f0a576000604083870101525b50601f01601f1916929092016040019392505050565b600080604060031984011215610f3557600080fd5b600435610f4181610e7b565b936024359350915050565b60008080606060031985011215610f6257600080fd5b600435610f6e81610e7b565b9250602435610f7c81610e7b565b929492935050604435919050565b6000602060031983011215610f9e57600080fd5b505060043590565b6000602060031983011215610fba57600080fd5b6004358015158114610eb357600080fd5b6001600160a01b0316600090815260016020526040902090565b6001600160a01b0316600090815260026020526040902090565b6001600160a01b0316600090815260066020526040902090565b60008060406003198401121561102e57600080fd5b6004359150602435801515811461104457600080fd5b919391925050565b634e487b7160e01b600052604160045260246000fd5b6060810181811067ffffffffffffffff821117156110825761108261104c565b60405250565b601f8201601f1916810167ffffffffffffffff811182821017156110ae576110ae61104c565b6040525050565b6000602080600319840112156110ca57600080fd5b60043567ffffffffffffffff808211156110e357600080fd5b8460238301126110f257600080fd5b8160040135818111156111075761110761104c565b8060051b915060405161111c85840182611088565b818152918301602401918481018784111561113657600080fd5b6024850194505b83851015611160578435925061115283610e7b565b82815293850193850161113d565b509695505050505050565b60008060406003198401121561118057600080fd5b60043561118c81610e7b565b915060243561104481610e7b565b6111a26111ef565b6000546bffffffffffffffffffffffff60a01b8116600055600060018060a01b0382167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e06000604051a350565b6000546001600160a01b0316338114610e905760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606481fd5b61124f6111ef565b6001600160a01b03818116806112b35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608481fd5b600054816bffffffffffffffffffffffff60a01b821617600055838382167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e06000604051a350505050565b6113066111ef565b602280546001600160a01b0319166001600160a01b0392909216919091179055565b6113306111ef565b60ff19600b541660ff821515168117600b555050565b61134e6111ef565b61010061ff00196024541617602455565b6113676111ef565b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b6113916111ef565b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6113bb6111ef565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6113e56111ef565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b61140f6111ef565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6114396111ef565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6114636111ef565b600f55565b6114706111ef565b601455565b61147d6111ef565b601055565b61148a6111ef565b601555565b6114976111ef565b601155565b6114a46111ef565b601655565b6114b16111ef565b601255565b6114be6111ef565b601755565b6114cb6111ef565b601355565b6114d86111ef565b601855565b604051600c54600090600181811c90808316806114fb57607f831692505b602080841082141561151b57634e487b7160e01b86526022600452602486fd5b83875260208701828015611536576001811461154757611590565b60ff19871682528282019750611590565b600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c75b60005b8781101561158a57815484820152908601908401611571565b83019850505b505050505050506115a382820383611088565b5090565b604051600d54600090600181811c90808316806115c557607f831692505b60208084108214156115e557634e487b7160e01b86526022600452602486fd5b83875260208701828015611536576001811461160057611590565b600d6000527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb561156e565b600060018060a01b0382166000818152600660205260ff60408220541615611660579081526002602052604090205492915050565b818152600160205261167560408220546119e2565b949350505050565b611688828233612273565b506001919050565b611688828233611fc9565b6116a6838383612273565b6001600160a01b03811660009081526003602090815260408083203384529091528120546040516116d681611062565b602881527f42455032303a207472616e7366657220616d6f756e74206578636565647320616020820152676c6c6f77616e636560c01b604082015261172661171f828885611732565b3386611fc9565b50600195945050505050565b60008183111561175a5760405162461bcd60e51b8152806117568660048301610ecb565b0381fd5b5003919050565b3360009081526003602090815260408083206001600160a01b03851684529091528120548319811115611796576117966117ad565b6117a38482018433611fc9565b5060019392505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156117d6576117d66117ad565b500190565b3360009081526003602090815260408083206001600160a01b038516845290915281205460405161180b81611062565b602581527f42455032303a2064656372656173656420616c6c6f77616e63652062656c6f77602082015264207a65726f60d81b6040820152611858611851828785611732565b8533611fc9565b506001949350505050565b33600052600660205260ff60406000205416156118d45760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608481fd5b6118dd81611db3565b50505050506118f5816118ef33610fcb565b54611943565b6118fe33610fcb565b5561191361190e82600954611943565b600955565b50610e9061192382600a546117c3565b600a55565b6000600182101561193b5761193b6117ad565b506000190190565b600082821015611955576119556117ad565b500390565b60006008548211156119ab5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606481fd5b821580156119cb576119bc83611db3565b50505050508092505050610eb3565b6119d483611db3565b509298975050505050505050565b6000600954821115611a465760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608481fd5b611a4e611e92565b611675611a5b8284611a5d565b855b600082611a7a57634e487b7160e01b600052601260045260246000fd5b500490565b611a876111ef565b6001600160a01b038116600081815260066020526040812054611aad9060ff1615611b72565b8181526001602052604081205415611adf578181526001602052611ad460408220546119e2565b611add84610fe5565b555b611ae883610fff565b805460ff191660011790556007549150680100000000000000008210611b1057611b1061104c565b6001820180600755808310611b2757611b27611bbc565b50600790527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688810180546001600160a01b0384166001600160a01b03199091161790555050565b5050565b80610e905760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606481fd5b634e487b7160e01b600052603260045260246000fd5b6000806007548310611be657611be6611bbc565b5050600760009081527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890910191565b611c1e6111ef565b6001600160a01b03818116600081815260066020526040812054611c449060ff16611b72565b805b600754808210611c565750611d21565b611c5f82611bd2565b8587611c7a83855460039190911b1c6001600160a01b031690565b161415611d0e57611c92611c8d84611928565b611bd2565b611cab81835460039190911b1c6001600160a01b031690565b915050611cb785611bd2565b81546001600160a01b03808516600384901b90811b91901b908116901990911617825550505084611ce789610fe5565b55611cfe611cf489610fff565b805460ff19169055565b611d06611d43565b505050611d21565b505050611d1a81611d28565b9050611c46565b5050505050565b6000600019821415611d3c57611d3c6117ad565b5060010190565b60075480611d6157634e487b7160e01b600052603160045260246000fd5b6000198101818110611d7557611d75611bbc565b600760008190527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6879290920180546001600160a01b03191690559055565b60008060008060008061271080611dcc601f548a611e73565b0481611dda6021548b611e73565b04915080891015611ded57611ded6117ad565b80890382811015611e0057611e006117ad565b611e08611e92565b611e128183611a5d565b915050611e1f818c611e73565b611e298285611e73565b611e338387611e73565b925080821015611e4557611e456117ad565b80820383811015611e5857611e586117ad565b919d929091039b509950908390039750909550909350915050565b6000816000190483118215151615611e8d57611e8d6117ad565b500290565b600080600954806008548060006007545b80821015611f9e57611eb482611bd2565b87611ed6611ed183855460039190911b1c6001600160a01b031690565b610fcb565b541191505080611f1257611ee983611bd2565b86611f0b611f0683855460039190911b1c6001600160a01b031690565b610fe5565b5411925050505b8015611f275750939791965090945050505050565b50611f3182611bd2565b611f57611f50611ed183855460039190911b1c6001600160a01b031690565b5489611943565b97505050611f6482611bd2565b611f8a611f83611f0683855460039190911b1c6001600160a01b031690565b5487611943565b95505050611f9782611d28565b9150611ea3565b5050611faa8184611a5d565b841015611fbd5791959194509092505050565b50919491935090915050565b6001600160a01b038181166120295760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608481fd5b8083166120805760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608481fd5b50826120a483610dce846001600160a01b0316600090815260036020526040902090565b5560405183815282827f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602084a350505050565b80610e905760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608481fd5b80610e905760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608481fd5b60006020828403121561219e57600080fd5b81516121a981610e7b565b9392505050565b6040513d6000823e3d81fd5b80610e905760405162461bcd60e51b8152602060048201526024808201527f57616c6c65742062616c616e6365206578636565647320746865206d6178206c6044820152631a5b5a5d60e21b6064820152608481fd5b80610e905760405162461bcd60e51b815260206004820152602e60248201527f5472616e73616374656420616d6f756e742065786365656420746865206d617860448201526d20616c6c6f7765642076616c756560901b6064820152608481fd5b6001600160a01b0361228882821615156120d8565b612293841515612130565b6122b46122a86022546001600160a01b031690565b6001600160a01b031690565b8181161561237c576122c58161162b565b60275480821015915081156122ed576122ea6122e660265460081c60ff1690565b1590565b91505b81821561234e57833b6122ff57600080fd5b60405163c1f1b1b560e01b8152602081600481885afa80612322576123226121b0565b60008115612343576123343d84611088565b6123403d84018461218c565b90505b8716878a1614925050505b80925080156123695761236660265460101c60ff1690565b92505b5081156123795761237981612470565b50505b50612388848484612537565b60245460ff161561246a576008546123ad6123a560235483611e73565b612710900490565b90506123c46122a86022546001600160a01b031690565b8083161580159061245957813b6123da57600080fd5b60405163c1f1b1b560e01b8152602081600481865afa806123fd576123fd6121b0565b6000811561241e5761240f3d84611088565b61241b3d84018461218c565b90505b88871681881614801561243c57612437878c1115612212565b612450565b612450876124498c61162b565b11156121bc565b50505050612466565b612466836124498861162b565b5050505b50505050565b6026805461ff0019908116610100179091556022546001600160a01b0316803b61249957600080fd5b604051634a5c8c6f60e11b81526004810184905260008160248183865af19150816124c6576124c66121b0565b81156124e8576124d63d82611088565b6000813d83010312156124e857600080fd5b505080602654166026555050565b80610e905760405162461bcd60e51b815260206004820152601460248201527327b7363c903bb434ba32903634b9ba103ab9b2b960611b6044820152606481fd5b6125496122e660245460081c60ff1690565b80156125c8576125646122a86022546001600160a01b031690565b803b61256f57600080fd5b60405163c1f1b1b560e01b8152602081600481855afa915081612594576125946121b0565b600082156125b5576125a63d83611088565b6125b23d83018361218c565b90505b6001600160a01b03858116911614925050505b80156125e05760405163b468e98960e01b8152600481fd5b506000806125f96122a86022546001600160a01b031690565b803b612603578283fd5b60405163c1f1b1b560e01b808252602082600481865afa80612627576126276121b0565b858115612647576126383d85611088565b6126443d85018561218c565b90505b6001600160a01b0393508316888416149050801561268d5761268a6122e6612683896001600160a01b0316600090815260056020526040902090565b5460ff1690565b90505b8080156126b4576126ab601554601f55601454602155601854602055565b60019650612754565b843b6126be578687fd5b604051838152602081600483895afa806126da576126da6121b0565b8881156126fa576126eb3d84611088565b6126f73d84018461218c565b90505b8616868b161491505080156127305761272d6122e66126838c6001600160a01b0316600090815260056020526040902090565b90505b80156127525761274d601054601f55600f54602155601354602055565b600196505b505b505050505081826127625750805b801561290b57612777600b5460081c60ff1690565b156127d15761279d612683856001600160a01b0316600090815260046020526040902090565b9250826127c8576127c5612683866001600160a01b0316600090815260046020526040902090565b92505b6127d1836124f6565b6127e06123a560205488611e73565b92506127f66000601f5560006021556000602055565b6128008385612bce565b81801561288a576128166123a560125489611e73565b6128256123a56011548a611e73565b61283881612833848c611943565b611943565b985061285682612850601a546001600160a01b031690565b89612c85565b61286c81612850601e546001600160a01b031690565b5050612885601054601f55600f54602155601354602055565b6128fd565b6128996123a560175489611e73565b6128a86123a56016548a611e73565b6128b681612833848c611943565b98506128ce82612850601a546001600160a01b031690565b6128e481612850601e546001600160a01b031690565b50506128fd601554601f55601454602155601854602055565b506129088387611943565b95505b50505061291a61268382610fff565b80156129325761292f6122e661268385610fff565b90505b80801561294957612944858585612d4a565b612a0e565b6129586122e661268385610fff565b801561296d5761296a61268386610fff565b90505b8080156129845761297f878787612cf7565b612a0b565b6129936122e661268387610fff565b80156129ab576129a86122e661268389610fff565b90505b8080156129c2576129bd898989612c85565b612a08565b6129ce61268388610fff565b80156129e3576129e06126838a610fff565b90505b8080156129fa576129f58b8b8b612a29565b612a05565b612a058b8b8b612c85565b50505b50505b50505b5050612a246000601f5560006021556000602055565b505050565b612a3283611db3565b6001600160a01b0387166000818152600260205260409020548a811015612a5b57612a5b6117ad565b8160005260026020528a81036040600020555050612a7887610fcb565b5486811015612a8957612a896117ad565b868103612a9589610fcb565b5550612aaa83612aa48a610fe5565b546117c3565b612ab389610fe5565b55612ac185612aa48a610fcb565b612aca89610fcb565b55612ad481612b4e565b50612adf8184612b18565b50604051935080845250505082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602084a350505050565b60095481811015612b2b57612b2b6117ad565b819003600955600a548219811115612b4557612b456117ad565b909101600a5550565b612b56611e92565b612b69612b638284611a5d565b84611e73565b91505060018060a01b038060225416806000526001602052612b90836040600020546117c3565b612b9982610fcb565b555060225416905060ff612bac82610fff565b541615611b6e57612bc082612aa483610fe5565b612bc982610fe5565b555050565b612bd782611db3565b6001600160a01b03871660008181526001602052604081205488811015612c0057612c006117ad565b82825260016020528881036040832055508081526001602052612c278760408320546117c3565b97508081526001602052876040822055612c4083612b4e565b612c4a8487612b18565b604051975084885280897fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60208ba350505050505050505050565b612c8e83611db3565b6001600160a01b0387811660008181526001602052604081205489811015612cb857612cb86117ad565b8282526001602052898103604083205550828b1681526001602052612ce18860408320546117c3565b612cea8c610fcb565b55505050612ad481612b4e565b612d0083611db3565b6001600160a01b03871660008181526001602052604090205487811015612d2957612d296117ad565b8160005260016020528781036040600020555050612aaa83612aa48a610fe5565b612d5383611db3565b6001600160a01b0387166000818152600260205260409020548a811015612d7c57612d7c6117ad565b8160005260026020528a81036040600020555050612d9987610fcb565b5486811015612daa57612daa6117ad565b868103612db689610fcb565b5550612ac185612aa48a610fcb565b612dcd6111ef565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b612df96111ef565b6001600160a01b03166000908152600560205260409020805460ff19169055565b612e226111ef565b602355565b612e2f6111ef565b80151560265462ff00008260101b1662ff000019821617602655506040518181527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159602082a1505050565b612e826111ef565b600b5461ff0082151560081b1661ff0019821617600b555050565b612ea56111ef565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b612ed16111ef565b6001600160a01b03166000908152600460205260409020805460ff19169055565b612efa6111ef565b6000805b82518110612f0b57505050565b6001600160a01b03612f1d8285612f45565b51168252600460205260408220805460ff19166001179055612f3e81611d28565b9050612efe565b600081518310612f5757612f57611bbc565b5060059190911b0160200190565b612f6d6111ef565b6000805b82518110612f7e57505050565b6001600160a01b03612f908285612f45565b51168252600460205260408220805460ff19169055612fae81611d28565b9050612f71565b612fbd6111ef565b60ff196024541660ff821515168117602455505056fea36469706673582212207e29959e4a1e55f4b2d5a45f8314cbba878be63fca7febed43aa7611893cf37c6c6578706572696d656e74616cf564736f6c63430008090041

[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.