ETH Price: $3,310.46 (+1.07%)
Gas: 4 Gwei

Token

Mayo Bear (MAYO)
 

Overview

Max Total Supply

999,762,292.119592561208015223 MAYO

Holders

67

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
148,226.418416239162137235 MAYO

Value
$0.00
0x13c0f71867598147fd6225696dceba375d856e52
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MayoBear

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
File 1 of 1 : MayoBear.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;
/*
..................................................................................................................................................
.....................................-####...............................................................#####-###+-..............................
......................................+##+..............................................................############-.............................
.............................-----...........-+###+.................-###+-..............................+###########-.............................
...........................+#######-........-######-..............-#######-..............................-#########-..............................
..........................##########+......-#######+............-+########-...............................-+####+-................................
....................-++#############+......#########...........-##########-.....-++++-++-..--.........--....-+-....-+#####+-......................
...................+################+.....-#########..........+##########+...-+#########+-####......-+###-........+#########+.....................
..................-#################+.....##########........+############-.-######+######+####......+####+......+############+....................
..................-#################.....-##########+.....-#############+-+#####+.-#####+#####.....+######+...+#####+-..#####+....................
...................+###############+.....+#####+#####-..-#####+.+#######++#####..-######-#####....-#######+.-+#####+....+####+....................
....................-+#############......+####+-+###########+...+#######+#####.-+######+-#####...-#########++#####+-....#####+....................
.........................--+++####.......#####+..+#########-....+######++#########+#####+#####--+#################+....+#####-....................
........................................-#####+...+######-......+######+-########-..+###############-#############-...+#####+.....................
........................................-#####-....-+++-........+######+.+#####+.....-++--+#######+-.+############+--+#####-......................
.............................-----------+#####-.................-######+..----.............-++++--...+####################-.......................
.......................-++####################-..................+#####+-...-++-..-++++-.............+#####+-###########-.........................
....................+########################+......-++++++.....-#######+..+####+#####+--+##+-......-######-..-######+-...........................
...................+#########################+...-+#########..-####+####+.+########+....#######+---#######+.......................................
...................-+####++-.........+#######-..+#####+.-###--####-.####+.+######-......#################+........................................
..................................-#########-..+####+..-####.###+-.#####--######........-###############-.........................................
......................-#+......+##########-...-###########+.-###++######++#####-..........-###########-...........................................
.....................-###+..-+#########+......+########++--.-######+..+########...............-----...............................................
.....................-###+..-#########+-......+####+---+####-+####-.......+####...................................................................
.....................-+###...-+##########-....-+###########+..---.........-+#+-..................----+++---.......................................
......................+###........--######+.....-+######+-................-----++++++++++--..-+###########+-......................................
......................-###+..--+++########-..................--+++++#######################-..+#########+-........................................
....................-+###################-..........-++++###############################-.........................................................
...................-##################+-.......-+###############################+---..............................................................
....................+###########+--.........+####################++---............................................................................
..........................................+###########--..........................................................................................
...........................................+#######+-.............................................................................................
..................................................................................................................................................

*/

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
    /**
     * @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 `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, 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 `sender` to `recipient` 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 sender, address recipient, uint256 amount)
        external
        returns (bool);

    /**
     * @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);
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _createInitialSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

contract Ownable is Context {
    address private _owner;

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
}

interface IDexFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

// interface IPAIToken is IERC20 {}

contract MayoBear is ERC20, Ownable {
    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;

    IERC20 public paiToken;
    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address operationsAddress;
    address marketingAddress;
    address multisig;

    uint256 public tradingActiveBlock = 0; // 0 means trading is not active
    uint256 public blockForPenaltyEnd;
    mapping(address => bool) public boughtEarly;
    uint256 public botsCaught;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;

    uint256 public buyTotalFees;
    uint256 public buyOperationsFee;
    uint256 public buyLiquidityFee;
    uint256 public buyMarketingFee;
    uint256 public buyBurnFee;
    uint256 public buyPAIBuybackFee;

    uint256 public sellTotalFees;
    uint256 public sellOperationsFee;
    uint256 public sellLiquidityFee;
    uint256 public sellMarketingFee;
    uint256 public sellBurnFee;
    uint256 public sellPAIBuybackFee;

    uint256 public tokensForOperations;
    uint256 public tokensForLiquidity;
    uint256 public tokensForMarketing;
    uint256 public tokensForBurn;
    uint256 public tokensForPAIBuyback;

    address public paiTokenAddress;
    uint256 public paiBuybackThreshold = 1000 * 1e18; // minimum number of MAYO tokens to buy back PAI
    uint256 public totalPAIBurned;

    // exlcude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public automatedMarketMakerPairs;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event EnabledTrading();

    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedOperationsAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event BuyBackTriggered(uint256 amount);

    event OwnerForcedSwapBack(uint256 timestamp);

    event CaughtEarlyBuyer(address sniper);

    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity);

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("Mayo Bear", "MAYO") {
        IDexRouter _dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        dexRouter = _dexRouter;

        paiTokenAddress = 0xa0Cc4428FbB652C396F28DcE8868B8743742A71c; // PAI token address
        paiToken = IERC20(paiTokenAddress);

        multisig = 0x4871eAe23ECA5cE33ceff5e0366Ef5d585e13253; // multisig address
        address newOwner = multisig;

        // create pair
        lpPair = IDexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        _excludeFromMaxTransaction(address(lpPair), true);
        _setAutomatedMarketMakerPair(address(lpPair), true);

        uint256 totalSupply = 1 * 1e9 * 1e18;

        maxBuyAmount = totalSupply * 200 / 10_000;
        maxSellAmount = totalSupply * 200 / 10_000;
        maxWalletAmount = totalSupply * 200 / 10_000;
        swapTokensAtAmount = totalSupply * 5 / 10_000;

        buyOperationsFee = 0;
        buyLiquidityFee = 6;
        buyMarketingFee = 0;
        buyBurnFee = 0;
        buyPAIBuybackFee = 0;
        buyTotalFees =
            buyOperationsFee + buyLiquidityFee + buyMarketingFee + buyBurnFee + buyPAIBuybackFee;

        sellOperationsFee = 0;
        sellLiquidityFee = 6;
        sellMarketingFee = 0;
        sellBurnFee = 0;
        sellPAIBuybackFee = 0;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellMarketingFee + sellBurnFee
            + sellPAIBuybackFee;

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        operationsAddress = address(newOwner);
        marketingAddress = address(newOwner);

        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    function enableTrading(uint256 deadBlocks) external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        blockForPenaltyEnd = tradingActiveBlock + deadBlocks;
        emit EnabledTrading();
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        transferDelayEnabled = false;
        emit RemovedLimits();
    }

    function manageBoughtEarly(address wallet, bool flag) external onlyOwner {
        boughtEarly[wallet] = flag;
    }

    function massManageBoughtEarly(address[] calldata wallets, bool flag) external onlyOwner {
        for (uint256 i = 0; i < wallets.length; i++) {
            boughtEarly[wallets[i]] = flag;
        }
    }

    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner {
        transferDelayEnabled = false;
    }

    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= (totalSupply() * 2 / 1000) / 1e18, "Cannot set max buy amount lower than 0.2%"
        );
        maxBuyAmount = newNum * (10 ** 18);
        emit UpdatedMaxBuyAmount(maxBuyAmount);
    }

    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= (totalSupply() * 2 / 1000) / 1e18,
            "Cannot set max sell amount lower than 0.2%"
        );
        maxSellAmount = newNum * (10 ** 18);
        emit UpdatedMaxSellAmount(maxSellAmount);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= (totalSupply() * 3 / 1000) / 1e18,
            "Cannot set max wallet amount lower than 0.3%"
        );
        maxWalletAmount = newNum * (10 ** 18);
        emit UpdatedMaxWalletAmount(maxWalletAmount);
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
        require(
            newAmount >= totalSupply() * 1 / 100_000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= totalSupply() * 1 / 1000,
            "Swap amount cannot be higher than 0.1% total supply."
        );
        swapTokensAtAmount = newAmount;
    }

    function _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner {
        if (!isEx) {
            require(updAds != lpPair, "Cannot remove uniswap pair from max txn");
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
        require(pair != lpPair, "The pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(
        uint256 _operationsFee,
        uint256 _liquidityFee,
        uint256 _marketingFee,
        uint256 _burnFee,
        uint256 _PAIBuybackFee
    ) external onlyOwner {
        buyOperationsFee = _operationsFee;
        buyLiquidityFee = _liquidityFee;
        buyMarketingFee = _marketingFee;
        buyBurnFee = _burnFee;
        buyPAIBuybackFee = _PAIBuybackFee;
        buyTotalFees =
            buyOperationsFee + buyLiquidityFee + buyMarketingFee + buyBurnFee + buyPAIBuybackFee;
        require(buyTotalFees <= 10, "Must keep fees at 10% or less");
    }

    function updateSellFees(
        uint256 _operationsFee,
        uint256 _liquidityFee,
        uint256 _marketingFee,
        uint256 _burnFee,
        uint256 _PAIBuybackFee
    ) external onlyOwner {
        sellOperationsFee = _operationsFee;
        sellLiquidityFee = _liquidityFee;
        sellMarketingFee = _marketingFee;
        sellBurnFee = _burnFee;
        sellPAIBuybackFee = _PAIBuybackFee;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellMarketingFee + sellBurnFee
            + sellPAIBuybackFee;
        require(sellTotalFees <= 10, "Must keep fees at 10% or less");
    }

    function returnToNormalTax() external onlyOwner {
        sellOperationsFee = 1;
        sellLiquidityFee = 1;
        sellMarketingFee = 2;
        sellBurnFee = 1;
        sellPAIBuybackFee = 1;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellMarketingFee + sellBurnFee
            + sellPAIBuybackFee;
        require(sellTotalFees <= 10, "Must keep fees at 10% or less");

        buyOperationsFee = 1;
        buyLiquidityFee = 1;
        buyMarketingFee = 2;
        buyBurnFee = 1;
        buyPAIBuybackFee = 1;
        buyTotalFees =
            buyOperationsFee + buyLiquidityFee + buyMarketingFee + buyBurnFee + buyPAIBuybackFee;
        require(buyTotalFees <= 10, "Must keep fees at 10% or less");
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

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

        if (!tradingActive) {
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
        }

        if (blockForPenaltyEnd > 0) {
            require(
                !boughtEarly[from] || to == owner() || to == address(0xdead),
                "Bots cannot transfer tokens in or out except to owner or dead address."
            );
        }

        if (limitsInEffect) {
            if (
                from != owner() && to != owner() && to != address(0) && to != address(0xdead)
                    && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]
            ) {
                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled) {
                    if (to != address(dexRouter) && to != address(lpPair)) {
                        require(
                            _holderLastTransferTimestamp[tx.origin] < block.number - 2
                                && _holderLastTransferTimestamp[to] < block.number - 2,
                            "_transfer:: Transfer Delay enabled.  Try again later."
                        );
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
                }

                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from]
                && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = true;
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // bot/sniper penalty.
            if (
                earlyBuyPenaltyInEffect() && automatedMarketMakerPairs[from]
                    && !automatedMarketMakerPairs[to] && buyTotalFees > 0
            ) {
                if (!boughtEarly[to]) {
                    boughtEarly[to] = true;
                    botsCaught += 1;
                    emit CaughtEarlyBuyer(to);
                }

                fees = amount * 99 / 100;
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
                tokensForBurn += fees * buyBurnFee / buyTotalFees;
                tokensForPAIBuyback += fees * buyPAIBuybackFee / buyTotalFees;
            }
            // on sell
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount * sellTotalFees / 100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForOperations += fees * sellOperationsFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
                tokensForBurn += fees * sellBurnFee / sellTotalFees;
                tokensForPAIBuyback += fees * sellPAIBuybackFee / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
                tokensForBurn += fees * buyBurnFee / buyTotalFees;
                tokensForPAIBuyback += fees * buyPAIBuybackFee / buyTotalFees;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function earlyBuyPenaltyInEffect() public view returns (bool) {
        return block.number < blockForPenaltyEnd;
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of MAYO -> WETH
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        _approve(address(this), address(dexRouter), tokenAmount);

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(dexRouter), tokenAmount);

        // add the liquidity
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(0xdead),
            block.timestamp
        );
    }

    function swapBack() private {
        if (tokensForBurn > 0 && balanceOf(address(this)) >= tokensForBurn) {
            _burn(address(this), tokensForBurn);
        }
        tokensForBurn = 0;

        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForOperations + tokensForMarketing;

        if (contractBalance == 0 || totalTokensToSwap == 0) return;

        if (contractBalance > swapTokensAtAmount * 60) {
            contractBalance = swapTokensAtAmount * 60;
        }

        bool success;

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;

        swapTokensForEth(contractBalance - liquidityTokens - tokensForPAIBuyback);

        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForOperations =
            ethBalance * tokensForOperations / (totalTokensToSwap - (tokensForLiquidity / 2));
        uint256 ethForMarketing =
            ethBalance * tokensForMarketing / (totalTokensToSwap - (tokensForLiquidity / 2));

        ethForLiquidity -= ethForOperations + ethForMarketing;

        // handle PAI buyback
        swapMayoBearForPAI();

        // burn PAI tokens
        burnPAITokens();

        tokensForLiquidity = 0;
        tokensForOperations = 0;
        tokensForMarketing = 0;
        tokensForBurn = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

        (success,) = address(marketingAddress).call{value: ethForMarketing}("");

        (success,) = address(operationsAddress).call{value: address(this).balance}("");
    }

    function transferForeignToken(address _token, address _to)
        external
        onlyOwner
        returns (bool _sent)
    {
        require(_token != address(0), "_token address cannot be 0");
        require(_token != address(this), "Can't withdraw native tokens");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function setOperationsAddress(address _operationsAddress) external onlyOwner {
        require(_operationsAddress != address(0), "_operationsAddress address cannot be 0");
        operationsAddress = payable(_operationsAddress);
    }

    function setMarketingAddress(address _marketingAddress) external onlyOwner {
        require(_marketingAddress != address(0), "_marketingAddress address cannot be 0");
        marketingAddress = payable(_marketingAddress);
    }

    // force Swap back if slippage issues.
    function forceSwapBack() external onlyOwner {
        require(
            balanceOf(address(this)) >= swapTokensAtAmount,
            "Can only swap when token amount is at or higher than restriction"
        );
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }

    // useful for buybacks or to reclaim any ETH on the contract in a way that helps holders.
    function buyBackTokens(uint256 amountInWei) external onlyOwner {
        require(
            amountInWei <= 10 ether,
            "May not buy more than 10 ETH in a single buy to reduce sandwich attacks"
        );

        address[] memory path = new address[](2);
        path[0] = dexRouter.WETH();
        path[1] = address(this);

        // make the swap
        dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amountInWei}(
            0, // accept any amount of Ethereum
            path,
            address(0xdead),
            block.timestamp
        );
        emit BuyBackTriggered(amountInWei);
    }

    function swapMayoBearForPAI() private {
        uint256 swapAmount = tokensForPAIBuyback;
        if (swapAmount >= paiBuybackThreshold) {
            tokensForPAIBuyback = 0; // Reset the counter

            address[] memory path = new address[](3);
            path[0] = address(this);
            path[1] = dexRouter.WETH();
            path[2] = paiTokenAddress;

            _approve(address(this), address(dexRouter), swapAmount);

            // Make the swap
            dexRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
                swapAmount,
                0, // accept any amount of PAI
                path,
                address(this), // Contract holds the PAI
                block.timestamp
            );
        }
    }

    function burnPAITokens() private {
        uint256 paiBalance = paiToken.balanceOf(address(this));

        if (paiBalance > 0) {
            paiToken.approve(address(this), paiBalance);
            paiToken.transferFrom(address(this), address(0xdEaD), paiBalance);
            totalPAIBurned += paiBalance;
        }
    }
}

Settings
{
  "remappings": [
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "forge-std/=lib/forge-std/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "paris",
  "viaIR": true,
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"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":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"}],"name":"CaughtEarlyBuyer","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedOperationsAddress","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"boughtEarly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountInWei","type":"uint256"}],"name":"buyBackTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyPAIBuybackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"deadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","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":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"manageBoughtEarly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"massManageBoughtEarly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paiBuybackThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paiToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paiTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"returnToNormalTax","outputs":[],"stateMutability":"nonpayable","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":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellPAIBuybackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"setOperationsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForPAIBuyback","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPAIBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","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":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_PAIBuybackFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_PAIBuybackFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060409080825234620007765762000018816200077b565b6009815260206826b0bcb7902132b0b960b91b818301528251926200003d846200077b565b6004808552634d41594f60e01b838601528351939091906001600160401b03808611620007615760038054966001938489811c9916801562000756575b888a101462000741578190601f998a8111620006eb575b5088908a8311600114620006845760009262000678575b505060001982841b1c191690841b1781555b8751918211620006635784548381811c9116801562000658575b878210146200064357878111620005f8575b50858783116001146200058d578293949596979860009362000581575b505082841b92600019911b1c19161783555b60018060a01b03199160059433848754161786558151927f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0973360008a8180a360006010558162ffffff19601454161760145560ff199082826016541617601655683635c9adc5dea00000602955737a250d5630b4cf539739df2c5dacb4c659f2488d958688600a541617600a5573a0cc4428fbb652c396f28dce8868b8743742a71c80896028541617602855886009541617600955734871eae23eca5ce33ceff5e0366ef5d585e13253988989600f541617600f5563c45a015560e01b8252858282818b5afa918215620005765760009262000552575b5086516315ab88c960e31b81526001600160a01b039890919087908390839082905afa9182156200054757918993918489946000936200051d575b50600090604493948c5197889687956364e329cb60e11b87523090870152166024850152165af190811562000512579585808b98966000966200044f8f620004288f8f908f9d9b8a9f9b6006928f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9f92620002d993879291620004de575b50168091600b541617600b5562000822565b600b548316808f52602d8a528b8f20805489168a1790558890620002fd8162000822565b8f807fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a36a108b2a2c28029094000000808355806007556008556969e10de76676d0800000600c558d601855816019558d601a558d601b558d601c55816017558d601e55558b87558b6021558b6022556006601d558c8c52602c8752888c2086868254161790558c898051828152888a82015260008051602062003e538339815191529b8c91a1620003b03062000822565b61dead9a8b8f52602c8a52818f2089898254161790558180518d81528a8c820152a1620003e233848754161462000864565b818e52602b8952808e208888825416179055518781527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7998a91a2825416331462000864565b308a52602b85528b8a2084848254161790558b5184815286863092a2548d16331462000864565b848852602b8352818a8920918254161790558851908152a28388600d541617600d558388600e541617600e5562000488600254620007f2565b600255838352828152848320620004a08154620007f2565b905584516b033b2e3c9fd0803ce80000008152a3855492831690620004c733831462000864565b5196600080a3161790556135a29081620008b18239f35b6200050391508d803d106200050a575b620004fa8183620007ad565b810190620007d1565b38620002c7565b503d620004ee565b86513d6000823e3d90fd5b60449350906200053e600092873d89116200050a57620004fa8183620007ad565b93509062000248565b88513d6000823e3d90fd5b6200056e919250863d88116200050a57620004fa8183620007ad565b90386200020d565b87513d6000823e3d90fd5b01519150388062000103565b90601f1983169186600052876000209260005b818110620005e257509984869798999a9b10620005c7575b50505050811b01835562000115565b01519060f884600019921b161c1916905538808080620005b8565b8b830151855593860193918901918901620005a0565b85600052866000208880850160051c82019289861062000639575b0160051c019084905b8281106200062c575050620000e6565b600081550184906200061c565b9250819262000613565b602286634e487b7160e01b6000525260246000fd5b90607f1690620000d4565b604185634e487b7160e01b6000525260246000fd5b015190503880620000a8565b90869350601f19831691856000528a6000209260005b8c828210620006d45750508411620006bb575b505050811b018155620000ba565b015160001983861b60f8161c19169055388080620006ad565b8385015186558a979095019493840193016200069a565b90915083600052886000208a80850160051c8201928b861062000737575b918891869594930160051c01915b8281106200072757505062000091565b6000815585945088910162000717565b9250819262000709565b602287634e487b7160e01b6000525260246000fd5b98607f16986200007a565b604184634e487b7160e01b6000525260246000fd5b600080fd5b604081019081106001600160401b038211176200079757604052565b634e487b7160e01b600052604160045260246000fd5b601f909101601f19168101906001600160401b038211908210176200079757604052565b908160209103126200077657516001600160a01b0381168103620007765790565b906b033b2e3c9fd0803ce800000082018092116200080c57565b634e487b7160e01b600052601160045260246000fd5b604060008051602062003e538339815191529160018060a01b031680600052602c60205281600020600160ff19825416179055815190815260016020820152a1565b156200086c57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fdfe608060409080825260049182361015610023575b505050361561002157600080fd5b005b600092833560e01c92836306fdde0314611ede575082630758d92414611eb5578263095ea7b314611e8b57826310d5de5314611e4d578263130a2c3c14611d8d57826318160ddd14611d6e5782631a8145bb14611d4f5782631d77785614611d305782631f3fed8f14611d1157826323b872dd14611c555782632be32b6114611b63578263313ce56714611b475782633950935114611af757826342371ae314611ad8578263452ed4f114611aaf578263499b839414611a025782634a62bb65146119de5782634f77f6c0146119bf57826351f205e4146118ca57826358a6d531146118a95782635a139dd41461188a57826366d602ae1461186b5782636a486a8e1461184c5782636b0a894c1461182d5782636ddd17131461180657826370a08231146117cf578263715018a614611771578263751039fc146117125782637571336a1461164c5782637bce5a041461162d57826382aa7c681461156b5782638366e79a1461133757826385ecfd28146112f957826388e765ff146112da5782638da5cb5b146112b1578263906e9dd01461120557826392136913146111e7578263936ff5f9146111c857826395d89b41146110c357826397e0ff80146110a45782639a7a23d614610f575782639b590c5214610f2e5782639e8ef39014610f05578263a457c2d714610e62578263a62068ce14610e43578263a9059cbb14610e12578263aa4bde2814610df3578263adb873bd14610dd4578263b62496f514610d96578263bbc0c74214610d6f578263c024666814610ce4578263c18bc19514610bef578263c876d0b914610bcb578263d257b34f14610a9b578263d85ba06314610a7c578263dc3f0d0f14610963578263dd62ed3e1461091a578263e2abae8f146108fb578263e2cd5fcd1461089d578263e2f456051461087e578263e71dc3f51461085f578263e800dff714610802578263e884f260146107cf578263ee40166e146107b0578263f11a24d314610791578263f170d7fd14610731578263f2fde38b14610667578263f5648a4f1461062c578263f63743421461060d578263fa748b49146105ee578263fb002c97146105cf578263fc155d1d146103c257505063ff935af614610358578080610013565b346103bf576103bc600a6103b16103ac6103ac6103ac61037736612057565b969361039360018060a098959694981b036005541633146120e1565b80601e5581601f55836020558560215587602255612175565b612175565b80601d55111561219a565b80f35b80fd5b8390346105cb57602090816003193601126105c75780359060018060a01b036103f0816005541633146120e1565b678ac7230489e80000831161054e5785519161040b836120a3565b60028352863686850137600a5487516315ab88c960e31b81529083169286828481875afa918215610544578892610515575b5061044785612245565b911690523061045584612268565b52813b1561051157918591828561048d958a519687958694859363b6f9de9560e01b8552840152608060248401526084830190612278565b61dead604483015242606483015203925af18015610507576104d6575b507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d684820568929351908152a180f35b926105017fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d68482056894612079565b926104aa565b85513d86823e3d90fd5b8580fd5b610536919250873d891161053d575b61052e81836120bf565b810190612226565b908961043d565b503d610524565b89513d8a823e3d90fd5b855162461bcd60e51b8152808301859052604760248201527f4d6179206e6f7420627579206d6f7265207468616e2031302045544820696e2060448201527f612073696e676c652062757920746f207265647563652073616e64776963682060648201526661747461636b7360c81b608482015260a490fd5b8280fd5b5080fd5b8382346105cb57816003193601126105cb576020906023549051908152f35b8382346105cb57816003193601126105cb576020906022549051908152f35b8382346105cb57816003193601126105cb57602090601f549051908152f35b83346103bf57806003193601126103bf5761065260018060a01b036005541633146120e1565b8080808047335af1506106636121e6565b5080f35b909150346105c75760203660031901126105c757610683612017565b600554916001600160a01b038084169261069e3385146120e1565b169384156106df57505082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b0319161760055580f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b83346103bf576103bc600a6107866103ac6103ac6103ac61075136612057565b969361076d60018060a098959694981b036005541633146120e1565b806018558160195583601a5585601b5587601c55612175565b80601755111561219a565b8382346105cb57816003193601126105cb576020906019549051908152f35b8382346105cb57816003193601126105cb576020906010549051908152f35b83346103bf57806003193601126103bf576107f560018060a01b036005541633146120e1565b60ff196016541660165580f35b8382346105cb57806003193601126105cb576103bc90610820612017565b90610829612048565b60055490926001600160a01b039161084490831633146120e1565b168452601260205283209060ff801983541691151516179055565b8382346105cb57816003193601126105cb57602090601b549051908152f35b8382346105cb57816003193601126105cb57602090600c549051908152f35b83346103bf57806003193601126103bf576108c360018060a01b036005541633146120e1565b600180601e5580601f55600260205580602155806022556006601d5580601855806019556002601a5580601b55601c55600660175580f35b8382346105cb57816003193601126105cb576020906029549051908152f35b8382346105cb57806003193601126105cb5780602092610938612017565b610940612032565b6001600160a01b0391821683526001865283832091168252845220549051908152f35b8382346105cb5760203660031901126105cb5782359261098e60018060a01b036005541633146120e1565b600254938460011b9480860460021490151715610a69576103e89394670de0b6b3a764000094859104048110610a1357838102938185041490151715610a005750816020917f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e9360075551908152a180f35b634e487b7160e01b845260119052602483fd5b506020608492519162461bcd60e51b8352820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152fd5b634e487b7160e01b845260118252602484fd5b8382346105cb57816003193601126105cb576020906017549051908152f35b909150346105c75760203660031901126105c757803591610ac760018060a01b036005541633146120e1565b60025480800460011481151715610bb857620186a081048410610b57576103e890048311610af7575050600c5580f35b906020608492519162461bcd60e51b8352820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152fd5b815162461bcd60e51b8152602081850152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608490fd5b634e487b7160e01b855260118352602485fd5b8382346105cb57816003193601126105cb5760209060ff6016541690519015158152f35b8382346105cb5760203660031901126105cb57823592610c1a60018060a01b036005541633146120e1565b60025493600385029480860460031490151715610a69576103e89394670de0b6b3a764000094859104048110610c8c57838102938185041490151715610a005750816020917fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc9360085551908152a180f35b506020608492519162461bcd60e51b8352820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152fd5b8382346105cb57806003193601126105cb577f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df76020610d21612017565b610d29612048565b60055490916001600160a01b0391610d4490831633146120e1565b1693848652602b8352610d65828288209060ff801983541691151516179055565b519015158152a280f35b8382346105cb57816003193601126105cb5760209060ff60145460081c1690519015158152f35b8382346105cb5760203660031901126105cb5760209160ff9082906001600160a01b03610dc1612017565b168152602d855220541690519015158152f35b8382346105cb57816003193601126105cb576020906021549051908152f35b8382346105cb57816003193601126105cb576020906008549051908152f35b8382346105cb57806003193601126105cb57602090610e3c610e32612017565b60243590336124c2565b5160018152f35b8382346105cb57816003193601126105cb576020906011549051908152f35b83346103bf57826003193601126103bf57610e7b612017565b918360243592338152600160205281812060018060a01b0386168252602052205490828210610eb457602085610e3c85850387336122b5565b608490602086519162461bcd60e51b8352820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152fd5b8382346105cb57816003193601126105cb5760095490516001600160a01b039091168152602090f35b8382346105cb57816003193601126105cb5760285490516001600160a01b039091168152602090f35b9150346105c757806003193601126105c757610f71612017565b90610f7a612048565b9260018060a01b03610f91816005541633146120e1565b80600b5416931692831461103c57507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674690828552602d602052610fe2848287209060ff801983541691151516179055565b602c602052610fff848287209060ff801983541691151516179055565b805193838552151593846020820152a17fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab8282828680a38380a380f35b6020608492519162461bcd60e51b8352820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152fd5b8382346105cb57816003193601126105cb576020906027549051908152f35b8382346105cb57816003193601126105cb5780519180938054916001908360011c92600185169485156111be575b60209586861081146111ab57858952908115611187575060011461112f575b61112b8787611121828c03836120bf565b5191829182611fce565b0390f35b81529295507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410611174575050508261112b9461112192820101948680611110565b8054868501880152928601928101611156565b60ff19168887015250505050151560051b83010192506111218261112b8680611110565b634e487b7160e01b845260228352602484fd5b93607f16936110f1565b8382346105cb57816003193601126105cb57602090601c549051908152f35b8382346105cb57816003193601126105cb5760209081549051908152f35b909150346105c75760203660031901126105c757611221612017565b6005546001600160a01b03919061123b90831633146120e1565b169182156112605750506bffffffffffffffffffffffff60a01b600e541617600e5580f35b906020608492519162461bcd60e51b8352820152602560248201527f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f74604482015264020626520360dc1b6064820152fd5b8382346105cb57816003193601126105cb5760055490516001600160a01b039091168152602090f35b8382346105cb57816003193601126105cb576020906006549051908152f35b8382346105cb5760203660031901126105cb5760209160ff9082906001600160a01b03611324612017565b1681526012855220541690519015158152f35b8382346105cb57806003193601126105cb57611351612017565b611359612032565b9060018060a01b03611370816005541633146120e1565b81168015611528573081146114e5578351926370a0823160e01b845230878501526020968785602481865afa9485156114db57889392918891829761149a575b50875163a9059cbb60e01b81526001600160a01b039093169083019081526020810187905291939284929091839182906040015b03925af194851561148f579461143c575b5082516001600160a01b0391909116815260208101919091527fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e43890604090a1519015158152f35b7fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4389291945061148090863d8811611488575b61147881836120bf565b810190612182565b9390916113f5565b503d61146e565b8451903d90823e3d90fd5b92939483919697508092503d83116114d4575b6114b781836120bf565b810103126114d0575193928792919087906113e46113b0565b8680fd5b503d6114ad565b86513d89823e3d90fd5b835162461bcd60e51b8152602081880152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606490fd5b835162461bcd60e51b8152602081880152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606490fd5b9150346105c75760203660031901126105c75761159360018060a01b036005541633146120e1565b6014549060ff8260081c166115eb575090620101006115c19262ffff00191617601455436010553543612175565b6011557fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb78180a180f35b5162461bcd60e51b8152602081840152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606490fd5b8382346105cb57816003193601126105cb57602090601a549051908152f35b8390346105cb57826003193601126105cb57611666612017565b9261166f612048565b60055490926001600160a01b039161168a90831633146120e1565b83156116b2575b506103bc9394168452602c60205283209060ff801983541691151516179055565b81600b54168287160361169157608490602084519162461bcd60e51b8352820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152fd5b83346103bf57806003193601126103bf5761173860018060a01b036005541633146120e1565b60ff198060145416601455601654166016557fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c8180a180f35b83346103bf57806003193601126103bf57600554816001600160a01b03821661179b3382146120e1565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a36001600160a01b03191660055580f35b8382346105cb5760203660031901126105cb5760209181906001600160a01b036117f7612017565b16815280845220549051908152f35b8382346105cb57816003193601126105cb5760209060ff60145460101c1690519015158152f35b8382346105cb57816003193601126105cb576020906013549051908152f35b8382346105cb57816003193601126105cb57602090601d549051908152f35b8382346105cb57816003193601126105cb576020906007549051908152f35b8382346105cb57816003193601126105cb576020906018549051908152f35b8382346105cb57816003193601126105cb5760209060115443109051908152f35b909150346105c757826003193601126105c7576118f260018060a01b036005541633146120e1565b3083528260205281832054600c54116119585750600b805460ff60a01b19908116600160a01b179091557f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb3291602091611949612d7b565b600b5416600b5551428152a180f35b816020608493519262461bcd60e51b845283015260248201527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152fd5b8382346105cb57816003193601126105cb57602090601e549051908152f35b8382346105cb57816003193601126105cb5760209060ff6014541690519015158152f35b909150346105c75760203660031901126105c757611a1e612017565b6005546001600160a01b039190611a3890831633146120e1565b16918215611a5d5750506bffffffffffffffffffffffff60a01b600d541617600d5580f35b906020608492519162461bcd60e51b8352820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b6064820152fd5b8382346105cb57816003193601126105cb57600b5490516001600160a01b039091168152602090f35b8382346105cb57816003193601126105cb57602090602a549051908152f35b8382346105cb57806003193601126105cb57610e3c602092611b40611b1a612017565b338352600186528483206001600160a01b03821684528652918490205460243590612175565b90336122b5565b8382346105cb57816003193601126105cb576020905160128152f35b8382346105cb5760203660031901126105cb57823592611b8e60018060a01b036005541633146120e1565b600254938460011b9480860460021490151715610a69576103e89394670de0b6b3a764000094859104048110611c0057838102938185041490151715610a005750816020917ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de410099360065551908152a180f35b506020608492519162461bcd60e51b8352820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152fd5b83346103bf5760603660031901126103bf57611c6f612017565b9183611c79612032565b92611c886044358095876124c2565b6001600160a01b0385168152600160209081528282203383529052205490828210611cbd57602085610e3c85850333886122b5565b608490602086519162461bcd60e51b8352820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152fd5b8382346105cb57816003193601126105cb576020906025549051908152f35b8382346105cb57816003193601126105cb576020906026549051908152f35b8382346105cb57816003193601126105cb576020906024549051908152f35b8382346105cb57816003193601126105cb576020906002549051908152f35b9150346105c757806003193601126105c75781359067ffffffffffffffff92838311611e495736602384011215611e4957820135928311611e4557600560243685831b850182011161051157611de1612048565b9360018060a01b0392611df9846005541633146120e1565b875b878110611e06578880f35b8381831b8401013590858216809203611e41576001918a526012602052611e3b88888c209060ff801983541691151516179055565b01611dfb565b8980fd5b8380fd5b8480fd5b8382346105cb5760203660031901126105cb5760209160ff9082906001600160a01b03611e78612017565b168152602c855220541690519015158152f35b8382346105cb57806003193601126105cb57602090610e3c611eab612017565b60243590336122b5565b8382346105cb57816003193601126105cb57600a5490516001600160a01b039091168152602090f35b925034611e455783600319360112611e4557600354600181811c9186908281168015611fc4575b6020958686108214611fb15750848852908115611f8f5750600114611f36575b61112b8686611121828b03836120bf565b929550600383527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b828410611f7c575050508261112b94611121928201019438611f25565b8054868501880152928601928101611f5f565b60ff191687860152505050151560051b83010192506111218261112b38611f25565b634e487b7160e01b845260229052602483fd5b93607f1693611f05565b6020808252825181830181905290939260005b82811061200357505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611fe1565b600435906001600160a01b038216820361202d57565b600080fd5b602435906001600160a01b038216820361202d57565b60243590811515820361202d57565b60a090600319011261202d576004359060243590604435906064359060843590565b67ffffffffffffffff811161208d57604052565b634e487b7160e01b600052604160045260246000fd5b6060810190811067ffffffffffffffff82111761208d57604052565b90601f8019910116810190811067ffffffffffffffff82111761208d57604052565b156120e857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b8181029291811591840414171561213f57565b634e487b7160e01b600052601160045260246000fd5b811561215f570490565b634e487b7160e01b600052601260045260246000fd5b9190820180921161213f57565b9081602091031261202d5751801515810361202d5790565b156121a157565b60405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606490fd5b3d15612221573d9067ffffffffffffffff821161208d5760405191612215601f8201601f1916602001846120bf565b82523d6000602084013e565b606090565b9081602091031261202d57516001600160a01b038116810361202d5790565b8051156122525760200190565b634e487b7160e01b600052603260045260246000fd5b8051600110156122525760400190565b90815180825260208080930193019160005b828110612298575050505090565b83516001600160a01b03168552938101939281019260010161228a565b6001600160a01b0390811691821561236657169182156123165760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260018252604060002085600052825280604060002055604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b156123be57565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b1561241857565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b9190820391821161213f57565b1561247d57565b60405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420457863656564206d61782077616c6c657400000000000000006044820152606490fd5b9291906001600160a01b03808516906124dc8215156123b7565b808316801515916124ec83612411565b8515612d36576014549260ff8481809660081c1615612cc0575b601154612c00575b166128ef575b505060009230845260209284845260409182862054600c541115806128e1575b806128d2575b806128be575b806128aa575b80612896575b61286c575b600190808752602b8652828488205416801561285d575b612855575b8691612587575b505050505050506125859293613457565b565b60119a989a54431080612842575b8061282e575b80612823575b1561272157505082855260128452818520908154908116156126c0575b505050505060638502908582046063036126ac57506125859394606461268e9204906126806126786125f26019548561212c565b61260a6126026017548093612155565b602454612175565b60245561262d612625826126206018548961212c565b612155565b602354612175565b60235561264b61264382612620601a548961212c565b602554612175565b60255561266961266182612620601b548961212c565b602654612175565b602655612620601c548661212c565b602754612175565b6027555b8161269c57612469565b919392388080808080612574565b6126a7823087613457565b612469565b634e487b7160e01b81526011600452602490fd5b60019060ff19161790556013546001810180911161270d57601355519081527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9190a138808080806125be565b634e487b7160e01b85526011600452602485fd5b9561268e966125859a9b958295939552602d875283838320541680612818575b156127ce5750505050506127c6612678601d546127a161264382612620606461276a838a61212c565b0498612780612602846126208d601f549061212c565b602455612797612625846126208d601e549061212c565b602355548961212c565b6025556127b7612661826126206021548961212c565b6026556126206022548661212c565b602755612684565b81522054919350168061280d575b156126845760175491506127c661267860646127f8858561212c565b049361260a612602826126206019548961212c565b5060175415156127dc565b50601d541515612741565b5060175415156125a1565b50848752602d86528284882054161561259b565b50808752602d8652828488205416612595565b86915061256d565b50848752828488205416612568565b600b805460ff60a01b19908116600160a01b1790915561288a612d7b565b600b5416600b55612551565b50838652602b85528183872054161561254c565b50808652602b855281838720541615612546565b50808652602d855281838720541615612540565b5081600b5460a01c161561253a565b508160145460101c16612534565b816005541690818614159182612bf5575b5081612bed575b5080612be1575b80612bc9575b80612bb1575b612925575b80612514565b8260165416612ab3575b506000838152602090602d825260409184838320541680612a9f575b156129d357600654881161297f57918180612979948661296f955252205487612175565b6008541015612476565b3861291f565b60849083519062461bcd60e51b82526004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152fd5b9190838152602d835284828220541680612a8b575b15612a54575060075487116129fe575050612979565b60849250519062461bcd60e51b82526004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152fd5b9190838352602c825284818420541615612a71575b505050612979565b82612a839361296f9352205487612175565b388080612a69565b50858152602c8352848282205416156129e8565b50838252602c81528483832054161561294b565b80600a54168214159081612ba2575b50612ace575b3861292f565b600032815260156020526040812054600119430190438211612b8e5781119081612b78575b5015612b15573281526015602052436040822055818152604043912055612ac8565b60405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608490fd5b9050828252601560205260408220541038612af3565b634e487b7160e01b83526011600452602483fd5b9050600b541681141538612ac2565b5081600052602b60205282604060002054161561291a565b5083600052602b602052826040600020541615612914565b5061dead82141561290e565b905038612907565b841415915038612900565b90508560005260126020528460406000205416158015612cb3575b8015612ca8575b15612c2e57849061250e565b60405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a490fd5b5061dead8414612c22565b5082600554168414612c1b565b905085600052602b60205284604060002054168015612d24575b15612ce6578490612506565b60405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606490fd5b50836000528460406000205416612cda565b60405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606490fd5b6026549060009180151580613442575b61333f575b508160265530825260209180835260409081812054602490815493612dc3612dba60235487612175565b60255490612175565b9482158015613337575b61332d57600c54603c810290808204603c149015171561331a57908187928511613310575b50612e07612e1a92612620612e11938761212c565b60011c8094612469565b60275490612469565b92815193612e27856120a3565b6002855282368a87013730612e3b86612245565b52600a5483516315ab88c960e31b8082526001600160a01b039760049491939092908916908d818781855afa908115613306579183918f93612e94948e926132e9575b50508b612e8a87612268565b91169052306122b5565b87600a541690813b15611e4157918991612ec79383895180968195829463791ac94760e01b8452429130918d8601613532565b03925af180156132df576132c6575b50612f2d612f07969798612f27612f204792612f07612f0d612efa6023548761212c565b8a5460011c9d8e85612469565b90612155565b9b612f1a6025548761212c565b92612469565b8099612175565b90612469565b90602754602954811015613185575b505060095484516370a0823160e01b815230848201529a908816818c8681845afa9b8c1561312f578a9c613156575b508b61307a575b50508780999a50839897985586602355866025558660265584151580613071575b612fcb575b505050505082828080808097958196600e54165af150612fb66121e6565b50600d541647905af150612fc86121e6565b50565b849596509060c491612fe5606095968a600a5416306122b5565b88600a54168651978895869463f305d71960e01b865230908601528401528a60448401528a606484015261dead60848401524260a48401525af1908115613068575090849291613039575b80808080612f98565b6060809293503d8311613061575b61305181836120bf565b810103126105c757829038613030565b503d613047565b513d86823e3d90fd5b50801515612f93565b855163095ea7b360e01b815230858201908152602081018e90529091839183919082908e90829060400103925af1801561312f57613139575b5088818c60648b6009541691895194859384926323b872dd60e01b8452308b85015261dead8c85015260448401525af1801561312f57918a9b9c91613104939b9a9b613111575b5050602a54612175565b602a558998979638612f72565b8161312792903d106114885761147881836120bf565b5038806130fa565b86513d8c823e3d90fd5b61314f90823d84116114885761147881836120bf565b50386130b3565b909b508181813d831161317e575b61316e81836120bf565b8101031261202d57519a38612f6b565b503d613164565b896027558551916080830183811067ffffffffffffffff8211176132b2578752600383526060368e850137306131ba84612245565b5289600a54169087519081528d818781855afa9081156132a8578e8d9261328b575b50508a6131e885612268565b9116905289602854168351600210156132775761320c9183916060860152306122b5565b88600a541690813b1561327357918a9161323f93838951809681958294635c11d79560e01b8452429130918d8601613532565b03925af180156132695790899115612f3c5761325a90612079565b613265578738612f3c565b8780fd5b85513d8b823e3d90fd5b8a80fd5b86603287634e487b7160e01b600052526000fd5b6132a19250803d1061053d5761052e81836120bf565b388e6131dc565b88513d8e823e3d90fd5b86604187634e487b7160e01b600052526000fd5b612f0796976132d7612f2d92612079565b979650612ed6565b85513d8a823e3d90fd5b6132ff9250803d1061053d5761052e81836120bf565b8f80612e7e565b88513d8d823e3d90fd5b9350612e07612df2565b634e487b7160e01b865260116004528486fd5b5050505050509050565b508515612dcd565b30156133f357308352826020526040832054908082106133a3578084923084528360205203604083205580600254036002556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203092a338612d90565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b50308352826020528060408420541015612d8b565b6001600160a01b039081169161346e8315156123b7565b169161347b831515612411565b6000828152806020526040812054918083106134de57604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9587602096528286520382822055868152206134d3828254612175565b9055604051908152a3565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b90608092613558919695949683526000602084015260a0604084015260a0830190612278565b6001600160a01b039095166060820152015256fea2646970667358221220c89b1ed0942273713950835f5b5255a3da5fe97e96af485ff6d2dbe6f5d91b4f64736f6c634300081800336b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746

Deployed Bytecode

0x608060409080825260049182361015610023575b505050361561002157600080fd5b005b600092833560e01c92836306fdde0314611ede575082630758d92414611eb5578263095ea7b314611e8b57826310d5de5314611e4d578263130a2c3c14611d8d57826318160ddd14611d6e5782631a8145bb14611d4f5782631d77785614611d305782631f3fed8f14611d1157826323b872dd14611c555782632be32b6114611b63578263313ce56714611b475782633950935114611af757826342371ae314611ad8578263452ed4f114611aaf578263499b839414611a025782634a62bb65146119de5782634f77f6c0146119bf57826351f205e4146118ca57826358a6d531146118a95782635a139dd41461188a57826366d602ae1461186b5782636a486a8e1461184c5782636b0a894c1461182d5782636ddd17131461180657826370a08231146117cf578263715018a614611771578263751039fc146117125782637571336a1461164c5782637bce5a041461162d57826382aa7c681461156b5782638366e79a1461133757826385ecfd28146112f957826388e765ff146112da5782638da5cb5b146112b1578263906e9dd01461120557826392136913146111e7578263936ff5f9146111c857826395d89b41146110c357826397e0ff80146110a45782639a7a23d614610f575782639b590c5214610f2e5782639e8ef39014610f05578263a457c2d714610e62578263a62068ce14610e43578263a9059cbb14610e12578263aa4bde2814610df3578263adb873bd14610dd4578263b62496f514610d96578263bbc0c74214610d6f578263c024666814610ce4578263c18bc19514610bef578263c876d0b914610bcb578263d257b34f14610a9b578263d85ba06314610a7c578263dc3f0d0f14610963578263dd62ed3e1461091a578263e2abae8f146108fb578263e2cd5fcd1461089d578263e2f456051461087e578263e71dc3f51461085f578263e800dff714610802578263e884f260146107cf578263ee40166e146107b0578263f11a24d314610791578263f170d7fd14610731578263f2fde38b14610667578263f5648a4f1461062c578263f63743421461060d578263fa748b49146105ee578263fb002c97146105cf578263fc155d1d146103c257505063ff935af614610358578080610013565b346103bf576103bc600a6103b16103ac6103ac6103ac61037736612057565b969361039360018060a098959694981b036005541633146120e1565b80601e5581601f55836020558560215587602255612175565b612175565b80601d55111561219a565b80f35b80fd5b8390346105cb57602090816003193601126105c75780359060018060a01b036103f0816005541633146120e1565b678ac7230489e80000831161054e5785519161040b836120a3565b60028352863686850137600a5487516315ab88c960e31b81529083169286828481875afa918215610544578892610515575b5061044785612245565b911690523061045584612268565b52813b1561051157918591828561048d958a519687958694859363b6f9de9560e01b8552840152608060248401526084830190612278565b61dead604483015242606483015203925af18015610507576104d6575b507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d684820568929351908152a180f35b926105017fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d68482056894612079565b926104aa565b85513d86823e3d90fd5b8580fd5b610536919250873d891161053d575b61052e81836120bf565b810190612226565b908961043d565b503d610524565b89513d8a823e3d90fd5b855162461bcd60e51b8152808301859052604760248201527f4d6179206e6f7420627579206d6f7265207468616e2031302045544820696e2060448201527f612073696e676c652062757920746f207265647563652073616e64776963682060648201526661747461636b7360c81b608482015260a490fd5b8280fd5b5080fd5b8382346105cb57816003193601126105cb576020906023549051908152f35b8382346105cb57816003193601126105cb576020906022549051908152f35b8382346105cb57816003193601126105cb57602090601f549051908152f35b83346103bf57806003193601126103bf5761065260018060a01b036005541633146120e1565b8080808047335af1506106636121e6565b5080f35b909150346105c75760203660031901126105c757610683612017565b600554916001600160a01b038084169261069e3385146120e1565b169384156106df57505082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b0319161760055580f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b83346103bf576103bc600a6107866103ac6103ac6103ac61075136612057565b969361076d60018060a098959694981b036005541633146120e1565b806018558160195583601a5585601b5587601c55612175565b80601755111561219a565b8382346105cb57816003193601126105cb576020906019549051908152f35b8382346105cb57816003193601126105cb576020906010549051908152f35b83346103bf57806003193601126103bf576107f560018060a01b036005541633146120e1565b60ff196016541660165580f35b8382346105cb57806003193601126105cb576103bc90610820612017565b90610829612048565b60055490926001600160a01b039161084490831633146120e1565b168452601260205283209060ff801983541691151516179055565b8382346105cb57816003193601126105cb57602090601b549051908152f35b8382346105cb57816003193601126105cb57602090600c549051908152f35b83346103bf57806003193601126103bf576108c360018060a01b036005541633146120e1565b600180601e5580601f55600260205580602155806022556006601d5580601855806019556002601a5580601b55601c55600660175580f35b8382346105cb57816003193601126105cb576020906029549051908152f35b8382346105cb57806003193601126105cb5780602092610938612017565b610940612032565b6001600160a01b0391821683526001865283832091168252845220549051908152f35b8382346105cb5760203660031901126105cb5782359261098e60018060a01b036005541633146120e1565b600254938460011b9480860460021490151715610a69576103e89394670de0b6b3a764000094859104048110610a1357838102938185041490151715610a005750816020917f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e9360075551908152a180f35b634e487b7160e01b845260119052602483fd5b506020608492519162461bcd60e51b8352820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152fd5b634e487b7160e01b845260118252602484fd5b8382346105cb57816003193601126105cb576020906017549051908152f35b909150346105c75760203660031901126105c757803591610ac760018060a01b036005541633146120e1565b60025480800460011481151715610bb857620186a081048410610b57576103e890048311610af7575050600c5580f35b906020608492519162461bcd60e51b8352820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152fd5b815162461bcd60e51b8152602081850152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608490fd5b634e487b7160e01b855260118352602485fd5b8382346105cb57816003193601126105cb5760209060ff6016541690519015158152f35b8382346105cb5760203660031901126105cb57823592610c1a60018060a01b036005541633146120e1565b60025493600385029480860460031490151715610a69576103e89394670de0b6b3a764000094859104048110610c8c57838102938185041490151715610a005750816020917fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc9360085551908152a180f35b506020608492519162461bcd60e51b8352820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152fd5b8382346105cb57806003193601126105cb577f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df76020610d21612017565b610d29612048565b60055490916001600160a01b0391610d4490831633146120e1565b1693848652602b8352610d65828288209060ff801983541691151516179055565b519015158152a280f35b8382346105cb57816003193601126105cb5760209060ff60145460081c1690519015158152f35b8382346105cb5760203660031901126105cb5760209160ff9082906001600160a01b03610dc1612017565b168152602d855220541690519015158152f35b8382346105cb57816003193601126105cb576020906021549051908152f35b8382346105cb57816003193601126105cb576020906008549051908152f35b8382346105cb57806003193601126105cb57602090610e3c610e32612017565b60243590336124c2565b5160018152f35b8382346105cb57816003193601126105cb576020906011549051908152f35b83346103bf57826003193601126103bf57610e7b612017565b918360243592338152600160205281812060018060a01b0386168252602052205490828210610eb457602085610e3c85850387336122b5565b608490602086519162461bcd60e51b8352820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152fd5b8382346105cb57816003193601126105cb5760095490516001600160a01b039091168152602090f35b8382346105cb57816003193601126105cb5760285490516001600160a01b039091168152602090f35b9150346105c757806003193601126105c757610f71612017565b90610f7a612048565b9260018060a01b03610f91816005541633146120e1565b80600b5416931692831461103c57507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674690828552602d602052610fe2848287209060ff801983541691151516179055565b602c602052610fff848287209060ff801983541691151516179055565b805193838552151593846020820152a17fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab8282828680a38380a380f35b6020608492519162461bcd60e51b8352820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152fd5b8382346105cb57816003193601126105cb576020906027549051908152f35b8382346105cb57816003193601126105cb5780519180938054916001908360011c92600185169485156111be575b60209586861081146111ab57858952908115611187575060011461112f575b61112b8787611121828c03836120bf565b5191829182611fce565b0390f35b81529295507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410611174575050508261112b9461112192820101948680611110565b8054868501880152928601928101611156565b60ff19168887015250505050151560051b83010192506111218261112b8680611110565b634e487b7160e01b845260228352602484fd5b93607f16936110f1565b8382346105cb57816003193601126105cb57602090601c549051908152f35b8382346105cb57816003193601126105cb5760209081549051908152f35b909150346105c75760203660031901126105c757611221612017565b6005546001600160a01b03919061123b90831633146120e1565b169182156112605750506bffffffffffffffffffffffff60a01b600e541617600e5580f35b906020608492519162461bcd60e51b8352820152602560248201527f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f74604482015264020626520360dc1b6064820152fd5b8382346105cb57816003193601126105cb5760055490516001600160a01b039091168152602090f35b8382346105cb57816003193601126105cb576020906006549051908152f35b8382346105cb5760203660031901126105cb5760209160ff9082906001600160a01b03611324612017565b1681526012855220541690519015158152f35b8382346105cb57806003193601126105cb57611351612017565b611359612032565b9060018060a01b03611370816005541633146120e1565b81168015611528573081146114e5578351926370a0823160e01b845230878501526020968785602481865afa9485156114db57889392918891829761149a575b50875163a9059cbb60e01b81526001600160a01b039093169083019081526020810187905291939284929091839182906040015b03925af194851561148f579461143c575b5082516001600160a01b0391909116815260208101919091527fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e43890604090a1519015158152f35b7fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4389291945061148090863d8811611488575b61147881836120bf565b810190612182565b9390916113f5565b503d61146e565b8451903d90823e3d90fd5b92939483919697508092503d83116114d4575b6114b781836120bf565b810103126114d0575193928792919087906113e46113b0565b8680fd5b503d6114ad565b86513d89823e3d90fd5b835162461bcd60e51b8152602081880152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606490fd5b835162461bcd60e51b8152602081880152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606490fd5b9150346105c75760203660031901126105c75761159360018060a01b036005541633146120e1565b6014549060ff8260081c166115eb575090620101006115c19262ffff00191617601455436010553543612175565b6011557fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb78180a180f35b5162461bcd60e51b8152602081840152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606490fd5b8382346105cb57816003193601126105cb57602090601a549051908152f35b8390346105cb57826003193601126105cb57611666612017565b9261166f612048565b60055490926001600160a01b039161168a90831633146120e1565b83156116b2575b506103bc9394168452602c60205283209060ff801983541691151516179055565b81600b54168287160361169157608490602084519162461bcd60e51b8352820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152fd5b83346103bf57806003193601126103bf5761173860018060a01b036005541633146120e1565b60ff198060145416601455601654166016557fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c8180a180f35b83346103bf57806003193601126103bf57600554816001600160a01b03821661179b3382146120e1565b7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a36001600160a01b03191660055580f35b8382346105cb5760203660031901126105cb5760209181906001600160a01b036117f7612017565b16815280845220549051908152f35b8382346105cb57816003193601126105cb5760209060ff60145460101c1690519015158152f35b8382346105cb57816003193601126105cb576020906013549051908152f35b8382346105cb57816003193601126105cb57602090601d549051908152f35b8382346105cb57816003193601126105cb576020906007549051908152f35b8382346105cb57816003193601126105cb576020906018549051908152f35b8382346105cb57816003193601126105cb5760209060115443109051908152f35b909150346105c757826003193601126105c7576118f260018060a01b036005541633146120e1565b3083528260205281832054600c54116119585750600b805460ff60a01b19908116600160a01b179091557f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb3291602091611949612d7b565b600b5416600b5551428152a180f35b816020608493519262461bcd60e51b845283015260248201527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152fd5b8382346105cb57816003193601126105cb57602090601e549051908152f35b8382346105cb57816003193601126105cb5760209060ff6014541690519015158152f35b909150346105c75760203660031901126105c757611a1e612017565b6005546001600160a01b039190611a3890831633146120e1565b16918215611a5d5750506bffffffffffffffffffffffff60a01b600d541617600d5580f35b906020608492519162461bcd60e51b8352820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b6064820152fd5b8382346105cb57816003193601126105cb57600b5490516001600160a01b039091168152602090f35b8382346105cb57816003193601126105cb57602090602a549051908152f35b8382346105cb57806003193601126105cb57610e3c602092611b40611b1a612017565b338352600186528483206001600160a01b03821684528652918490205460243590612175565b90336122b5565b8382346105cb57816003193601126105cb576020905160128152f35b8382346105cb5760203660031901126105cb57823592611b8e60018060a01b036005541633146120e1565b600254938460011b9480860460021490151715610a69576103e89394670de0b6b3a764000094859104048110611c0057838102938185041490151715610a005750816020917ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de410099360065551908152a180f35b506020608492519162461bcd60e51b8352820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152fd5b83346103bf5760603660031901126103bf57611c6f612017565b9183611c79612032565b92611c886044358095876124c2565b6001600160a01b0385168152600160209081528282203383529052205490828210611cbd57602085610e3c85850333886122b5565b608490602086519162461bcd60e51b8352820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152fd5b8382346105cb57816003193601126105cb576020906025549051908152f35b8382346105cb57816003193601126105cb576020906026549051908152f35b8382346105cb57816003193601126105cb576020906024549051908152f35b8382346105cb57816003193601126105cb576020906002549051908152f35b9150346105c757806003193601126105c75781359067ffffffffffffffff92838311611e495736602384011215611e4957820135928311611e4557600560243685831b850182011161051157611de1612048565b9360018060a01b0392611df9846005541633146120e1565b875b878110611e06578880f35b8381831b8401013590858216809203611e41576001918a526012602052611e3b88888c209060ff801983541691151516179055565b01611dfb565b8980fd5b8380fd5b8480fd5b8382346105cb5760203660031901126105cb5760209160ff9082906001600160a01b03611e78612017565b168152602c855220541690519015158152f35b8382346105cb57806003193601126105cb57602090610e3c611eab612017565b60243590336122b5565b8382346105cb57816003193601126105cb57600a5490516001600160a01b039091168152602090f35b925034611e455783600319360112611e4557600354600181811c9186908281168015611fc4575b6020958686108214611fb15750848852908115611f8f5750600114611f36575b61112b8686611121828b03836120bf565b929550600383527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b828410611f7c575050508261112b94611121928201019438611f25565b8054868501880152928601928101611f5f565b60ff191687860152505050151560051b83010192506111218261112b38611f25565b634e487b7160e01b845260229052602483fd5b93607f1693611f05565b6020808252825181830181905290939260005b82811061200357505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501611fe1565b600435906001600160a01b038216820361202d57565b600080fd5b602435906001600160a01b038216820361202d57565b60243590811515820361202d57565b60a090600319011261202d576004359060243590604435906064359060843590565b67ffffffffffffffff811161208d57604052565b634e487b7160e01b600052604160045260246000fd5b6060810190811067ffffffffffffffff82111761208d57604052565b90601f8019910116810190811067ffffffffffffffff82111761208d57604052565b156120e857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b8181029291811591840414171561213f57565b634e487b7160e01b600052601160045260246000fd5b811561215f570490565b634e487b7160e01b600052601260045260246000fd5b9190820180921161213f57565b9081602091031261202d5751801515810361202d5790565b156121a157565b60405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606490fd5b3d15612221573d9067ffffffffffffffff821161208d5760405191612215601f8201601f1916602001846120bf565b82523d6000602084013e565b606090565b9081602091031261202d57516001600160a01b038116810361202d5790565b8051156122525760200190565b634e487b7160e01b600052603260045260246000fd5b8051600110156122525760400190565b90815180825260208080930193019160005b828110612298575050505090565b83516001600160a01b03168552938101939281019260010161228a565b6001600160a01b0390811691821561236657169182156123165760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260018252604060002085600052825280604060002055604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b156123be57565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b1561241857565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b9190820391821161213f57565b1561247d57565b60405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420457863656564206d61782077616c6c657400000000000000006044820152606490fd5b9291906001600160a01b03808516906124dc8215156123b7565b808316801515916124ec83612411565b8515612d36576014549260ff8481809660081c1615612cc0575b601154612c00575b166128ef575b505060009230845260209284845260409182862054600c541115806128e1575b806128d2575b806128be575b806128aa575b80612896575b61286c575b600190808752602b8652828488205416801561285d575b612855575b8691612587575b505050505050506125859293613457565b565b60119a989a54431080612842575b8061282e575b80612823575b1561272157505082855260128452818520908154908116156126c0575b505050505060638502908582046063036126ac57506125859394606461268e9204906126806126786125f26019548561212c565b61260a6126026017548093612155565b602454612175565b60245561262d612625826126206018548961212c565b612155565b602354612175565b60235561264b61264382612620601a548961212c565b602554612175565b60255561266961266182612620601b548961212c565b602654612175565b602655612620601c548661212c565b602754612175565b6027555b8161269c57612469565b919392388080808080612574565b6126a7823087613457565b612469565b634e487b7160e01b81526011600452602490fd5b60019060ff19161790556013546001810180911161270d57601355519081527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9190a138808080806125be565b634e487b7160e01b85526011600452602485fd5b9561268e966125859a9b958295939552602d875283838320541680612818575b156127ce5750505050506127c6612678601d546127a161264382612620606461276a838a61212c565b0498612780612602846126208d601f549061212c565b602455612797612625846126208d601e549061212c565b602355548961212c565b6025556127b7612661826126206021548961212c565b6026556126206022548661212c565b602755612684565b81522054919350168061280d575b156126845760175491506127c661267860646127f8858561212c565b049361260a612602826126206019548961212c565b5060175415156127dc565b50601d541515612741565b5060175415156125a1565b50848752602d86528284882054161561259b565b50808752602d8652828488205416612595565b86915061256d565b50848752828488205416612568565b600b805460ff60a01b19908116600160a01b1790915561288a612d7b565b600b5416600b55612551565b50838652602b85528183872054161561254c565b50808652602b855281838720541615612546565b50808652602d855281838720541615612540565b5081600b5460a01c161561253a565b508160145460101c16612534565b816005541690818614159182612bf5575b5081612bed575b5080612be1575b80612bc9575b80612bb1575b612925575b80612514565b8260165416612ab3575b506000838152602090602d825260409184838320541680612a9f575b156129d357600654881161297f57918180612979948661296f955252205487612175565b6008541015612476565b3861291f565b60849083519062461bcd60e51b82526004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152fd5b9190838152602d835284828220541680612a8b575b15612a54575060075487116129fe575050612979565b60849250519062461bcd60e51b82526004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152fd5b9190838352602c825284818420541615612a71575b505050612979565b82612a839361296f9352205487612175565b388080612a69565b50858152602c8352848282205416156129e8565b50838252602c81528483832054161561294b565b80600a54168214159081612ba2575b50612ace575b3861292f565b600032815260156020526040812054600119430190438211612b8e5781119081612b78575b5015612b15573281526015602052436040822055818152604043912055612ac8565b60405162461bcd60e51b815260206004820152603560248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b6064820152608490fd5b9050828252601560205260408220541038612af3565b634e487b7160e01b83526011600452602483fd5b9050600b541681141538612ac2565b5081600052602b60205282604060002054161561291a565b5083600052602b602052826040600020541615612914565b5061dead82141561290e565b905038612907565b841415915038612900565b90508560005260126020528460406000205416158015612cb3575b8015612ca8575b15612c2e57849061250e565b60405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a490fd5b5061dead8414612c22565b5082600554168414612c1b565b905085600052602b60205284604060002054168015612d24575b15612ce6578490612506565b60405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606490fd5b50836000528460406000205416612cda565b60405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606490fd5b6026549060009180151580613442575b61333f575b508160265530825260209180835260409081812054602490815493612dc3612dba60235487612175565b60255490612175565b9482158015613337575b61332d57600c54603c810290808204603c149015171561331a57908187928511613310575b50612e07612e1a92612620612e11938761212c565b60011c8094612469565b60275490612469565b92815193612e27856120a3565b6002855282368a87013730612e3b86612245565b52600a5483516315ab88c960e31b8082526001600160a01b039760049491939092908916908d818781855afa908115613306579183918f93612e94948e926132e9575b50508b612e8a87612268565b91169052306122b5565b87600a541690813b15611e4157918991612ec79383895180968195829463791ac94760e01b8452429130918d8601613532565b03925af180156132df576132c6575b50612f2d612f07969798612f27612f204792612f07612f0d612efa6023548761212c565b8a5460011c9d8e85612469565b90612155565b9b612f1a6025548761212c565b92612469565b8099612175565b90612469565b90602754602954811015613185575b505060095484516370a0823160e01b815230848201529a908816818c8681845afa9b8c1561312f578a9c613156575b508b61307a575b50508780999a50839897985586602355866025558660265584151580613071575b612fcb575b505050505082828080808097958196600e54165af150612fb66121e6565b50600d541647905af150612fc86121e6565b50565b849596509060c491612fe5606095968a600a5416306122b5565b88600a54168651978895869463f305d71960e01b865230908601528401528a60448401528a606484015261dead60848401524260a48401525af1908115613068575090849291613039575b80808080612f98565b6060809293503d8311613061575b61305181836120bf565b810103126105c757829038613030565b503d613047565b513d86823e3d90fd5b50801515612f93565b855163095ea7b360e01b815230858201908152602081018e90529091839183919082908e90829060400103925af1801561312f57613139575b5088818c60648b6009541691895194859384926323b872dd60e01b8452308b85015261dead8c85015260448401525af1801561312f57918a9b9c91613104939b9a9b613111575b5050602a54612175565b602a558998979638612f72565b8161312792903d106114885761147881836120bf565b5038806130fa565b86513d8c823e3d90fd5b61314f90823d84116114885761147881836120bf565b50386130b3565b909b508181813d831161317e575b61316e81836120bf565b8101031261202d57519a38612f6b565b503d613164565b896027558551916080830183811067ffffffffffffffff8211176132b2578752600383526060368e850137306131ba84612245565b5289600a54169087519081528d818781855afa9081156132a8578e8d9261328b575b50508a6131e885612268565b9116905289602854168351600210156132775761320c9183916060860152306122b5565b88600a541690813b1561327357918a9161323f93838951809681958294635c11d79560e01b8452429130918d8601613532565b03925af180156132695790899115612f3c5761325a90612079565b613265578738612f3c565b8780fd5b85513d8b823e3d90fd5b8a80fd5b86603287634e487b7160e01b600052526000fd5b6132a19250803d1061053d5761052e81836120bf565b388e6131dc565b88513d8e823e3d90fd5b86604187634e487b7160e01b600052526000fd5b612f0796976132d7612f2d92612079565b979650612ed6565b85513d8a823e3d90fd5b6132ff9250803d1061053d5761052e81836120bf565b8f80612e7e565b88513d8d823e3d90fd5b9350612e07612df2565b634e487b7160e01b865260116004528486fd5b5050505050509050565b508515612dcd565b30156133f357308352826020526040832054908082106133a3578084923084528360205203604083205580600254036002556040519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203092a338612d90565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608490fd5b60405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b50308352826020528060408420541015612d8b565b6001600160a01b039081169161346e8315156123b7565b169161347b831515612411565b6000828152806020526040812054918083106134de57604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9587602096528286520382822055868152206134d3828254612175565b9055604051908152a3565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b90608092613558919695949683526000602084015260a0604084015260a0830190612278565b6001600160a01b039095166060820152015256fea2646970667358221220c89b1ed0942273713950835f5b5255a3da5fe97e96af485ff6d2dbe6f5d91b4f64736f6c63430008180033

Loading...
Loading
Loading...
Loading
[ 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.