ETH Price: $2,667.94 (-1.25%)

Token

Code 16384 (C16384)
 

Overview

Max Total Supply

16,384 C16384

Holders

99

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Balance
187 C16384

Value
$0.00
0x89155b6ef91af720686443eb564814e1f0a7c44a
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:
CODE16384

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

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

/*
    Telegram: https://t.me/code16384
    16384 supply and no decimals. Deflationary mechanics.
    A single token cannot be split into parts. On 16384, you can only transact integers.

    A unique trading experience with extremely limited supply and 3 different burn mechanisms.
*/

pragma solidity 0.8.23;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(
        address tokenA,
        address tokenB
    ) external view returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(
        address to
    ) external returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);

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

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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;
    uint8 private _decimals;

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

    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 _decimals;
    }

    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");

        _beforeTokenTransfer(sender, recipient, amount);

        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);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

        _beforeTokenTransfer(address(0), account, amount);

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

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

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

        _afterTokenTransfer(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);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

contract CODE16384 is ERC20, Ownable {
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private isSwapping;

    address private treasuryWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxSwapTokens;

    uint256 public lpBurnFrequency = 4 hours;
    uint256 public lastLpBurnTime;

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

    uint256 private launchedAt;

    uint256 public buyTotalFees;
    uint256 public buyTreasuryFee;
    uint256 public buyBurnFee;

    uint256 public sellTotalFees;
    uint256 public sellTreasuryFee;
    uint256 public sellBurnFee;

    uint256 public sellCounter;
    uint256 public sellAmountCounter;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(uint256 => uint256) private swapInBlock;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    mapping(address => bool) public automatedMarketMakerPairs;

    event AutoNukeLP();

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

    event MarketingWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    constructor() ERC20("Code 16384", "C16384", 0) {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uint256 _buyTreasuryFee = 25;
        uint256 _buyBurnFee = 1;

        uint256 _sellTreasuryFee = 25;
        uint256 _sellBurnFee = 1;

        buyTreasuryFee = _buyTreasuryFee;
        buyBurnFee = _buyBurnFee;
        buyTotalFees = buyTreasuryFee + buyBurnFee;

        sellTreasuryFee = _sellTreasuryFee;
        sellBurnFee = _sellBurnFee;
        sellTotalFees = sellTreasuryFee + sellBurnFee;

        uint256 totalSupply = 16384;

        maxTransactionAmount = 328; // 0.5%
        swapTokensAtAmount = 4;
        maxSwapTokens = 64;

        treasuryWallet = 0x85501585ef67387A7d30f10fd153cC21AC2221b7;

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(treasuryWallet), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        excludeFromMaxTransaction(address(treasuryWallet), true);

        _mint(address(this), totalSupply);
    }

    receive() external payable {}

    function addLiquidity() external payable onlyOwner {
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        _addLiquidity(balanceOf(address(this)), msg.value);
    }

    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    function enableTrading() external onlyOwner {
        tradingActive = true;
        launchedAt = block.number;
    }

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    function wlContract(address _whitelist, bool isWL) public onlyOwner {
        _isExcludedMaxTransactionAmount[_whitelist] = isWL;
        _isExcludedFromFees[_whitelist] = isWL;
    }

    function excludeFromMaxTransaction(
        address excludedAddress,
        bool isExcluded
    ) public onlyOwner {
        _isExcludedMaxTransactionAmount[excludedAddress] = isExcluded;
    }

    function updateSwapTokensAtAmount(
        uint256 newAmount
    ) external onlyOwner returns (bool) {
        require(newAmount >= 1 && newAmount <= 128);
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxSwapTokens(
        uint256 newAmount
    ) external onlyOwner returns (bool) {
        require(newAmount >= 1 && newAmount <= 128);
        maxSwapTokens = newAmount;
        return true;
    }

    function updateBuyFees(
        uint256 _treasuryFee,
        uint256 _burnFee
    ) external onlyOwner {
        buyTreasuryFee = _treasuryFee;
        buyBurnFee = _burnFee;
        buyTotalFees = buyTreasuryFee + buyBurnFee;
        require(buyTotalFees <= 25);
    }

    function updateSellFees(
        uint256 _treasuryFee,
        uint256 _burnFee
    ) external onlyOwner {
        sellTreasuryFee = _treasuryFee;
        sellBurnFee = _burnFee;
        sellTotalFees = sellTreasuryFee + sellBurnFee;
        require(sellTotalFees <= 25);
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateMarketingWallet(
        address newMarketingWallet
    ) external onlyOwner {
        emit MarketingWalletUpdated(newMarketingWallet, treasuryWallet);
        treasuryWallet = newMarketingWallet;
    }

    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");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        uint256 blockNumber = block.number;

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !isSwapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxTransactionAmount,
                        "Max wallet exceeded"
                    );
                }
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxTransactionAmount,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            !isSwapping &&
            (swapInBlock[blockNumber] <= 2) &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            isSwapping = true;

            swapBack();

            ++swapInBlock[blockNumber];

            isSwapping = false;
        }

        if (
            !isSwapping &&
            automatedMarketMakerPairs[to] &&
            !_isExcludedFromFees[from]
        ) {
            autoBurnLiquidityPairTokens();
        }

        bool takeFee = !isSwapping;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        uint256 toTreasury = 0;
        uint256 toBurn = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        // cause there are no decimals, fees will be taken only on txs of 50 tokens and more
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = (amount * sellTotalFees) / 100;
                toBurn = (fees * sellBurnFee) / sellTotalFees;
                toTreasury = fees - toBurn;

                // on every 2/4/8/16/32/64 sells, if LP balance is > 8192/4096/2048/1024/512/256, take 1 token as burn tax no matter the amount being sold
                // will be triggered only if burn amount from fees is 0 for the current trade and the trade is taxable
                sellCounter++;
                uint256 lpBalance = balanceOf(uniswapV2Pair);
                if (toBurn == 0) {
                    if (
                        (lpBalance > 8192 && sellCounter >= 2) ||
                        (lpBalance > 4096 && sellCounter >= 4) ||
                        (lpBalance > 2048 && sellCounter >= 8) ||
                        (lpBalance > 1024 && sellCounter >= 16) ||
                        (lpBalance > 512 && sellCounter >= 32) ||
                        (lpBalance > 256 && sellCounter >= 64)
                    ) {
                        sellCounter = 0;
                        toBurn = 1;
                        fees += 1;
                    }
                }

                sellAmountCounter += amount;
            }
            // on buy
            else if (buyTotalFees > 0 && automatedMarketMakerPairs[from]) {
                fees = (amount * buyTotalFees) / 100;
                toBurn = (fees * buyBurnFee) / buyTotalFees;
                toTreasury = fees - toBurn;
            }

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

            if (toBurn > 0) {
                super._transfer(from, address(0xdead), toBurn);
            }

            amount -= fees;
        }

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        bool success;

        if (contractBalance == 0) {
            return;
        }

        if (contractBalance > maxSwapTokens) {
            contractBalance = maxSwapTokens;
        }

        uint256 amountToSwapForETH = contractBalance;

        swapTokensForEth(amountToSwapForETH);

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

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function autoBurnLiquidityPairTokens() internal {
        uint256 liquidityPairBalance = balanceOf(uniswapV2Pair);

        if (liquidityPairBalance > 256) {
            if (sellAmountCounter < 1024) {
                if (block.timestamp < lastLpBurnTime + lpBurnFrequency) {
                    return;
                } else {
                    lastLpBurnTime = block.timestamp;
                }
            } else {
                sellAmountCounter = 0;
            }

            super._transfer(uniswapV2Pair, address(0xdead), 1);

            IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
            pair.sync();
            emit AutoNukeLP();
        }
    }
}

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

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":[],"name":"AutoNukeLP","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":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"MarketingWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","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":"buyBurnFee","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":"buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"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":"excludedAddress","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"excludeFromMaxTransaction","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":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","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":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellAmountCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTreasuryFee","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":[],"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":"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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateMaxSwapTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_whitelist","type":"address"},{"internalType":"bool","name":"isWL","type":"bool"}],"name":"wlContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052613840600b556001600d5f6101000a81548160ff0219169083151502179055505f600d60016101000a81548160ff0219169083151502179055503480156200004a575f80fd5b506040518060400160405280600a81526020017f436f6465203136333834000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f43313633383400000000000000000000000000000000000000000000000000008152505f8260039081620000c9919062000a56565b508160049081620000db919062000a56565b508060055f6101000a81548160ff021916908360ff160217905550505050620001196200010d6200036560201b60201c565b6200036c60201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001448160016200043160201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505f601990505f600190505f601990505f600190508360108190555082601181905550601154601054620001ac919062000b67565b600f819055508160138190555080601481905550601454601354620001d2919062000b67565b6012819055505f614000905061014860088190555060046009819055506040600a819055507385501585ef67387a7d30f10fd153cc21ac2221b760075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200026d6200025f6200051860201b60201c565b60016200054160201b60201c565b620002803060016200054160201b60201c565b6200029561dead60016200054160201b60201c565b620002c960075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200054160201b60201c565b620002eb620002dd6200051860201b60201c565b60016200043160201b60201c565b620002fe3060016200043160201b60201c565b6200031361dead60016200043160201b60201c565b6200034760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200043160201b60201c565b6200035930826200067860201b60201c565b50505050505062000cf0565b5f33905090565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620004416200036560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620004676200051860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620004c0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004b79062000bff565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620005516200036560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005776200051860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620005d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005c79062000bff565b60405180910390fd5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200066c919062000c3b565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006e9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006e09062000ca4565b60405180910390fd5b620006fc5f8383620007e860201b60201c565b8060025f8282546200070f919062000b67565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000763919062000b67565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620007c9919062000cd5565b60405180910390a3620007e45f8383620007ed60201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200086e57607f821691505b60208210810362000884576200088362000829565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620008e87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620008ab565b620008f48683620008ab565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6200093e6200093862000932846200090c565b62000915565b6200090c565b9050919050565b5f819050919050565b62000959836200091e565b62000971620009688262000945565b848454620008b7565b825550505050565b5f90565b6200098762000979565b620009948184846200094e565b505050565b5b81811015620009bb57620009af5f826200097d565b6001810190506200099a565b5050565b601f82111562000a0a57620009d4816200088a565b620009df846200089c565b81016020851015620009ef578190505b62000a07620009fe856200089c565b83018262000999565b50505b505050565b5f82821c905092915050565b5f62000a2c5f198460080262000a0f565b1980831691505092915050565b5f62000a46838362000a1b565b9150826002028217905092915050565b62000a6182620007f2565b67ffffffffffffffff81111562000a7d5762000a7c620007fc565b5b62000a89825462000856565b62000a96828285620009bf565b5f60209050601f83116001811462000acc575f841562000ab7578287015190505b62000ac3858262000a39565b86555062000b32565b601f19841662000adc866200088a565b5f5b8281101562000b055784890151825560018201915060208501945060208101905062000ade565b8683101562000b25578489015162000b21601f89168262000a1b565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000b73826200090c565b915062000b80836200090c565b925082820190508082111562000b9b5762000b9a62000b3a565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000be760208362000ba1565b915062000bf48262000bb1565b602082019050919050565b5f6020820190508181035f83015262000c188162000bd9565b9050919050565b5f8115159050919050565b62000c358162000c1f565b82525050565b5f60208201905062000c505f83018462000c2a565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000c8c601f8362000ba1565b915062000c998262000c56565b602082019050919050565b5f6020820190508181035f83015262000cbd8162000c7e565b9050919050565b62000ccf816200090c565b82525050565b5f60208201905062000cea5f83018462000cc4565b92915050565b60805161453d62000d3a5f395f8181610c0401528181611acf01528181611b7801528181612cff01528181612d2601528181613310015281816133ef0152613416015261453d5ff3fe608060405260043610610280575f3560e01c80638a8c523c1161014e578063b431dd28116100c0578063d85ba06311610079578063d85ba06314610999578063dd62ed3e146109c3578063e2f45605146109ff578063e71dc3f514610a29578063e8078d9414610a53578063f2fde38b14610a5d57610287565b8063b431dd281461087d578063b62496f5146108a5578063bbc0c742146108e1578063c02466681461090b578063c8c8ebe414610933578063d257b34f1461095d57610287565b8063a457c2d711610112578063a457c2d71461075f578063a4c82a001461079b578063a4d0047d146107c5578063a9059cbb146107ef578063aacebbe31461082b578063adb873bd1461085357610287565b80638a8c523c146106915780638da5cb5b146106a757806395d89b41146106d15780639a7a23d6146106fb5780639b66731b1461072357610287565b806339509351116101f25780636b2fb124116101ab5780636b2fb1241461059957806370a08231146105c3578063715018a6146105ff578063751039fc146106155780637571336a1461063f57806378d527221461066757610287565b8063395093511461048d57806349bd5a5e146104c95780634a62bb65146104f35780635c068a8c1461051d57806366ca9b83146105475780636a486a8e1461056f57610287565b806318160ddd1161024457806318160ddd1461037f57806323b872dd146103a957806327c8f835146103e55780632c3e486c1461040f578063313ce5671461043957806336a1efe41461046357610287565b806302dbd8f81461028b57806306fdde03146102b3578063095ea7b3146102dd57806310d5de53146103195780631694505e1461035557610287565b3661028757005b5f80fd5b348015610296575f80fd5b506102b160048036038101906102ac91906134dd565b610a85565b005b3480156102be575f80fd5b506102c7610b38565b6040516102d491906135a5565b60405180910390f35b3480156102e8575f80fd5b5061030360048036038101906102fe919061361f565b610bc8565b6040516103109190613677565b60405180910390f35b348015610324575f80fd5b5061033f600480360381019061033a9190613690565b610be5565b60405161034c9190613677565b60405180910390f35b348015610360575f80fd5b50610369610c02565b6040516103769190613716565b60405180910390f35b34801561038a575f80fd5b50610393610c26565b6040516103a0919061373e565b60405180910390f35b3480156103b4575f80fd5b506103cf60048036038101906103ca9190613757565b610c2f565b6040516103dc9190613677565b60405180910390f35b3480156103f0575f80fd5b506103f9610d21565b60405161040691906137b6565b60405180910390f35b34801561041a575f80fd5b50610423610d27565b604051610430919061373e565b60405180910390f35b348015610444575f80fd5b5061044d610d2d565b60405161045a91906137ea565b60405180910390f35b34801561046e575f80fd5b50610477610d42565b604051610484919061373e565b60405180910390f35b348015610498575f80fd5b506104b360048036038101906104ae919061361f565b610d48565b6040516104c09190613677565b60405180910390f35b3480156104d4575f80fd5b506104dd610def565b6040516104ea91906137b6565b60405180910390f35b3480156104fe575f80fd5b50610507610e14565b6040516105149190613677565b60405180910390f35b348015610528575f80fd5b50610531610e26565b60405161053e919061373e565b60405180910390f35b348015610552575f80fd5b5061056d600480360381019061056891906134dd565b610e2c565b005b34801561057a575f80fd5b50610583610edf565b604051610590919061373e565b60405180910390f35b3480156105a4575f80fd5b506105ad610ee5565b6040516105ba919061373e565b60405180910390f35b3480156105ce575f80fd5b506105e960048036038101906105e49190613690565b610eeb565b6040516105f6919061373e565b60405180910390f35b34801561060a575f80fd5b50610613610f30565b005b348015610620575f80fd5b50610629610fb7565b6040516106369190613677565b60405180910390f35b34801561064a575f80fd5b506106656004803603810190610660919061382d565b611054565b005b348015610672575f80fd5b5061067b611128565b604051610688919061373e565b60405180910390f35b34801561069c575f80fd5b506106a561112e565b005b3480156106b2575f80fd5b506106bb6111ce565b6040516106c891906137b6565b60405180910390f35b3480156106dc575f80fd5b506106e56111f7565b6040516106f291906135a5565b60405180910390f35b348015610706575f80fd5b50610721600480360381019061071c919061382d565b611287565b005b34801561072e575f80fd5b506107496004803603810190610744919061386b565b6113a0565b6040516107569190613677565b60405180910390f35b34801561076a575f80fd5b506107856004803603810190610780919061361f565b611447565b6040516107929190613677565b60405180910390f35b3480156107a6575f80fd5b506107af61152d565b6040516107bc919061373e565b60405180910390f35b3480156107d0575f80fd5b506107d9611533565b6040516107e6919061373e565b60405180910390f35b3480156107fa575f80fd5b506108156004803603810190610810919061361f565b611539565b6040516108229190613677565b60405180910390f35b348015610836575f80fd5b50610851600480360381019061084c9190613690565b611556565b005b34801561085e575f80fd5b50610867611690565b604051610874919061373e565b60405180910390f35b348015610888575f80fd5b506108a3600480360381019061089e919061382d565b611696565b005b3480156108b0575f80fd5b506108cb60048036038101906108c69190613690565b6117be565b6040516108d89190613677565b60405180910390f35b3480156108ec575f80fd5b506108f56117db565b6040516109029190613677565b60405180910390f35b348015610916575f80fd5b50610931600480360381019061092c919061382d565b6117ee565b005b34801561093e575f80fd5b50610947611910565b604051610954919061373e565b60405180910390f35b348015610968575f80fd5b50610983600480360381019061097e919061386b565b611916565b6040516109909190613677565b60405180910390f35b3480156109a4575f80fd5b506109ad6119bd565b6040516109ba919061373e565b60405180910390f35b3480156109ce575f80fd5b506109e960048036038101906109e49190613896565b6119c3565b6040516109f6919061373e565b60405180910390f35b348015610a0a575f80fd5b50610a13611a45565b604051610a20919061373e565b60405180910390f35b348015610a34575f80fd5b50610a3d611a4b565b604051610a4a919061373e565b60405180910390f35b610a5b611a51565b005b348015610a68575f80fd5b50610a836004803603810190610a7e9190613690565b611d0b565b005b610a8d611e01565b73ffffffffffffffffffffffffffffffffffffffff16610aab6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614610b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af89061391e565b60405180910390fd5b8160138190555080601481905550601454601354610b1f9190613969565b60128190555060196012541115610b34575f80fd5b5050565b606060038054610b47906139c9565b80601f0160208091040260200160405190810160405280929190818152602001828054610b73906139c9565b8015610bbe5780601f10610b9557610100808354040283529160200191610bbe565b820191905f5260205f20905b815481529060010190602001808311610ba157829003601f168201915b5050505050905090565b5f610bdb610bd4611e01565b8484611e08565b6001905092915050565b6019602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b5f610c3b848484611fcb565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610c82611e01565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf890613a69565b60405180910390fd5b610d1585610d0d611e01565b858403611e08565b60019150509392505050565b61dead81565b600b5481565b5f60055f9054906101000a900460ff16905090565b600a5481565b5f610de5610d54611e01565b848460015f610d61611e01565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610de09190613969565b611e08565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5f9054906101000a900460ff1681565b60105481565b610e34611e01565b73ffffffffffffffffffffffffffffffffffffffff16610e526111ce565b73ffffffffffffffffffffffffffffffffffffffff1614610ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9f9061391e565b60405180910390fd5b8160108190555080601181905550601154601054610ec69190613969565b600f819055506019600f541115610edb575f80fd5b5050565b60125481565b60135481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f38611e01565b73ffffffffffffffffffffffffffffffffffffffff16610f566111ce565b73ffffffffffffffffffffffffffffffffffffffff1614610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa39061391e565b60405180910390fd5b610fb55f612b96565b565b5f610fc0611e01565b73ffffffffffffffffffffffffffffffffffffffff16610fde6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102b9061391e565b60405180910390fd5b5f600d5f6101000a81548160ff0219169083151502179055506001905090565b61105c611e01565b73ffffffffffffffffffffffffffffffffffffffff1661107a6111ce565b73ffffffffffffffffffffffffffffffffffffffff16146110d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c79061391e565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60165481565b611136611e01565b73ffffffffffffffffffffffffffffffffffffffff166111546111ce565b73ffffffffffffffffffffffffffffffffffffffff16146111aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a19061391e565b60405180910390fd5b6001600d60016101000a81548160ff02191690831515021790555043600e81905550565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611206906139c9565b80601f0160208091040260200160405190810160405280929190818152602001828054611232906139c9565b801561127d5780601f106112545761010080835404028352916020019161127d565b820191905f5260205f20905b81548152906001019060200180831161126057829003601f168201915b5050505050905090565b61128f611e01565b73ffffffffffffffffffffffffffffffffffffffff166112ad6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fa9061391e565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138990613af7565b60405180910390fd5b61139c8282612c5b565b5050565b5f6113a9611e01565b73ffffffffffffffffffffffffffffffffffffffff166113c76111ce565b73ffffffffffffffffffffffffffffffffffffffff161461141d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114149061391e565b60405180910390fd5b6001821015801561142f575060808211155b611437575f80fd5b81600a8190555060019050919050565b5f8060015f611454611e01565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561150e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150590613b85565b60405180910390fd5b611522611519611e01565b85858403611e08565b600191505092915050565b600c5481565b60155481565b5f61154c611545611e01565b8484611fcb565b6001905092915050565b61155e611e01565b73ffffffffffffffffffffffffffffffffffffffff1661157c6111ce565b73ffffffffffffffffffffffffffffffffffffffff16146115d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c99061391e565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6760405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b61169e611e01565b73ffffffffffffffffffffffffffffffffffffffff166116bc6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611712576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117099061391e565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601a602052805f5260405f205f915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b6117f6611e01565b73ffffffffffffffffffffffffffffffffffffffff166118146111ce565b73ffffffffffffffffffffffffffffffffffffffff161461186a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118619061391e565b60405180910390fd5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516119049190613677565b60405180910390a25050565b60085481565b5f61191f611e01565b73ffffffffffffffffffffffffffffffffffffffff1661193d6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198a9061391e565b60405180910390fd5b600182101580156119a5575060808211155b6119ad575f80fd5b8160098190555060019050919050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60095481565b60115481565b611a59611e01565b73ffffffffffffffffffffffffffffffffffffffff16611a776111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac49061391e565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b36573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b5a9190613bb7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bdf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c039190613bb7565b6040518363ffffffff1660e01b8152600401611c20929190613be2565b6020604051808303815f875af1158015611c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c609190613bb7565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ccb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611054565b611cf760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612c5b565b611d09611d0330610eeb565b34612cf9565b565b611d13611e01565b73ffffffffffffffffffffffffffffffffffffffff16611d316111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7e9061391e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dec90613c79565b60405180910390fd5b611dfe81612b96565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6d90613d07565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edb90613d95565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fbe919061373e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203090613e23565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209e90613eb1565b60405180910390fd5b5f81036120be576120b983835f612dd7565b612b91565b5f439050600d5f9054906101000a900460ff16156125a6576120de6111ce565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561214c575061211c6111ce565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561218457505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121be575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121d75750600660149054906101000a900460ff16155b156125a557600d60019054906101000a900460ff166122cb5760175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061228b575060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6122ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c190613f19565b60405180910390fd5b5b601a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612368575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561240f576008548211156123b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a990613fa7565b60405180910390fd5b6008546123be84610eeb565b836123c99190613969565b111561240a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124019061400f565b60405180910390fd5b6125a4565b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156124ac575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156124fb576008548211156124f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ed9061409d565b60405180910390fd5b6125a3565b60195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166125a25760085461255584610eeb565b836125609190613969565b11156125a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125989061400f565b60405180910390fd5b5b5b5b5b5b5f6125b030610eeb565b90505f60095482101590508080156125d55750600660149054906101000a900460ff16155b80156125f35750600260185f8581526020019081526020015f205411155b80156126465750601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612699575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156126ec575060175f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612753576001600660146101000a81548160ff02191690831515021790555061271461304c565b60185f8481526020019081526020015f205f8154612731906140bb565b919050819055505f600660146101000a81548160ff0219169083151502179055505b600660149054906101000a900460ff161580156127b65750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015612809575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561281757612816613114565b5b5f600660149054906101000a900460ff1615905060175f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806128c6575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156128cf575f90505b5f805f8315612b7e57601a5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561292f57505f601254115b15612aa0576064601254896129449190614102565b61294e9190614170565b9250601254601454846129619190614102565b61296b9190614170565b9050808361297991906141a0565b915060155f81548092919061298d906140bb565b91905055505f6129bd60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610eeb565b90505f8203612a8257612000811180156129da5750600260155410155b806129f55750611000811180156129f45750600460155410155b5b80612a10575061080081118015612a0f5750600860155410155b5b80612a2b575061040081118015612a2a5750601060155410155b5b80612a46575061020081118015612a455750602060155410155b5b80612a61575061010081118015612a605750604060155410155b5b15612a81575f60158190555060019150600184612a7e9190613969565b93505b5b8860165f828254612a939190613969565b9250508190555050612b45565b5f600f54118015612af75750601a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612b44576064600f5489612b0c9190614102565b612b169190614170565b9250600f5460115484612b299190614102565b612b339190614170565b90508083612b4191906141a0565b91505b5b5f821115612b5957612b588a3084612dd7565b5b5f811115612b6f57612b6e8a61dead83612dd7565b5b8288612b7b91906141a0565b97505b612b898a8a8a612dd7565b505050505050505b505050565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b612d24307f000000000000000000000000000000000000000000000000000000000000000084611e08565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80612d6d6111ce565b426040518863ffffffff1660e01b8152600401612d8f9695949392919061420c565b60606040518083038185885af1158015612dab573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612dd0919061427f565b5050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3c90613e23565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eaa90613eb1565b60405180910390fd5b612ebe838383613269565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f389061433f565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612fcf9190613969565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613033919061373e565b60405180910390a361304684848461326e565b50505050565b5f61305630610eeb565b90505f808203613067575050613112565b600a5482111561307757600a5491505b5f82905061308481613273565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516130c99061438a565b5f6040518083038185875af1925050503d805f8114613103576040519150601f19603f3d011682016040523d82523d5f602084013e613108565b606091505b5050809250505050505b565b5f61313f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610eeb565b905061010081111561326557610400601654101561318057600b54600c546131679190613969565b4210156131745750613267565b42600c81905550613188565b5f6016819055505b6131b760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead6001612dd7565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015613221575f80fd5b505af1158015613233573d5f803e3d5ffd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a1505b505b565b505050565b505050565b5f600267ffffffffffffffff81111561328f5761328e61439e565b5b6040519080825280602002602001820160405280156132bd5781602001602082028036833780820191505090505b50905030815f815181106132d4576132d36143cb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613377573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061339b9190613bb7565b816001815181106133af576133ae6143cb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613414307f000000000000000000000000000000000000000000000000000000000000000084611e08565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016134759594939291906144af565b5f604051808303815f87803b15801561348c575f80fd5b505af115801561349e573d5f803e3d5ffd5b505050505050565b5f80fd5b5f819050919050565b6134bc816134aa565b81146134c6575f80fd5b50565b5f813590506134d7816134b3565b92915050565b5f80604083850312156134f3576134f26134a6565b5b5f613500858286016134c9565b9250506020613511858286016134c9565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613552578082015181840152602081019050613537565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6135778261351b565b6135818185613525565b9350613591818560208601613535565b61359a8161355d565b840191505092915050565b5f6020820190508181035f8301526135bd818461356d565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6135ee826135c5565b9050919050565b6135fe816135e4565b8114613608575f80fd5b50565b5f81359050613619816135f5565b92915050565b5f8060408385031215613635576136346134a6565b5b5f6136428582860161360b565b9250506020613653858286016134c9565b9150509250929050565b5f8115159050919050565b6136718161365d565b82525050565b5f60208201905061368a5f830184613668565b92915050565b5f602082840312156136a5576136a46134a6565b5b5f6136b28482850161360b565b91505092915050565b5f819050919050565b5f6136de6136d96136d4846135c5565b6136bb565b6135c5565b9050919050565b5f6136ef826136c4565b9050919050565b5f613700826136e5565b9050919050565b613710816136f6565b82525050565b5f6020820190506137295f830184613707565b92915050565b613738816134aa565b82525050565b5f6020820190506137515f83018461372f565b92915050565b5f805f6060848603121561376e5761376d6134a6565b5b5f61377b8682870161360b565b935050602061378c8682870161360b565b925050604061379d868287016134c9565b9150509250925092565b6137b0816135e4565b82525050565b5f6020820190506137c95f8301846137a7565b92915050565b5f60ff82169050919050565b6137e4816137cf565b82525050565b5f6020820190506137fd5f8301846137db565b92915050565b61380c8161365d565b8114613816575f80fd5b50565b5f8135905061382781613803565b92915050565b5f8060408385031215613843576138426134a6565b5b5f6138508582860161360b565b925050602061386185828601613819565b9150509250929050565b5f602082840312156138805761387f6134a6565b5b5f61388d848285016134c9565b91505092915050565b5f80604083850312156138ac576138ab6134a6565b5b5f6138b98582860161360b565b92505060206138ca8582860161360b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613908602083613525565b9150613913826138d4565b602082019050919050565b5f6020820190508181035f830152613935816138fc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613973826134aa565b915061397e836134aa565b92508282019050808211156139965761399561393c565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806139e057607f821691505b6020821081036139f3576139f261399c565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613a53602883613525565b9150613a5e826139f9565b604082019050919050565b5f6020820190508181035f830152613a8081613a47565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613ae1603983613525565b9150613aec82613a87565b604082019050919050565b5f6020820190508181035f830152613b0e81613ad5565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613b6f602583613525565b9150613b7a82613b15565b604082019050919050565b5f6020820190508181035f830152613b9c81613b63565b9050919050565b5f81519050613bb1816135f5565b92915050565b5f60208284031215613bcc57613bcb6134a6565b5b5f613bd984828501613ba3565b91505092915050565b5f604082019050613bf55f8301856137a7565b613c0260208301846137a7565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613c63602683613525565b9150613c6e82613c09565b604082019050919050565b5f6020820190508181035f830152613c9081613c57565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613cf1602483613525565b9150613cfc82613c97565b604082019050919050565b5f6020820190508181035f830152613d1e81613ce5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d7f602283613525565b9150613d8a82613d25565b604082019050919050565b5f6020820190508181035f830152613dac81613d73565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613e0d602583613525565b9150613e1882613db3565b604082019050919050565b5f6020820190508181035f830152613e3a81613e01565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613e9b602383613525565b9150613ea682613e41565b604082019050919050565b5f6020820190508181035f830152613ec881613e8f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f613f03601683613525565b9150613f0e82613ecf565b602082019050919050565b5f6020820190508181035f830152613f3081613ef7565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f613f91603583613525565b9150613f9c82613f37565b604082019050919050565b5f6020820190508181035f830152613fbe81613f85565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613ff9601383613525565b915061400482613fc5565b602082019050919050565b5f6020820190508181035f83015261402681613fed565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f614087603683613525565b91506140928261402d565b604082019050919050565b5f6020820190508181035f8301526140b48161407b565b9050919050565b5f6140c5826134aa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036140f7576140f661393c565b5b600182019050919050565b5f61410c826134aa565b9150614117836134aa565b9250828202614125816134aa565b9150828204841483151761413c5761413b61393c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61417a826134aa565b9150614185836134aa565b92508261419557614194614143565b5b828204905092915050565b5f6141aa826134aa565b91506141b5836134aa565b92508282039050818111156141cd576141cc61393c565b5b92915050565b5f819050919050565b5f6141f66141f16141ec846141d3565b6136bb565b6134aa565b9050919050565b614206816141dc565b82525050565b5f60c08201905061421f5f8301896137a7565b61422c602083018861372f565b61423960408301876141fd565b61424660608301866141fd565b61425360808301856137a7565b61426060a083018461372f565b979650505050505050565b5f81519050614279816134b3565b92915050565b5f805f60608486031215614296576142956134a6565b5b5f6142a38682870161426b565b93505060206142b48682870161426b565b92505060406142c58682870161426b565b9150509250925092565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614329602683613525565b9150614334826142cf565b604082019050919050565b5f6020820190508181035f8301526143568161431d565b9050919050565b5f81905092915050565b50565b5f6143755f8361435d565b915061438082614367565b5f82019050919050565b5f6143948261436a565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61442a816135e4565b82525050565b5f61443b8383614421565b60208301905092915050565b5f602082019050919050565b5f61445d826143f8565b6144678185614402565b935061447283614412565b805f5b838110156144a25781516144898882614430565b975061449483614447565b925050600181019050614475565b5085935050505092915050565b5f60a0820190506144c25f83018861372f565b6144cf60208301876141fd565b81810360408301526144e18186614453565b90506144f060608301856137a7565b6144fd608083018461372f565b969550505050505056fea2646970667358221220e923b3c3bb520e9da2db82b3873f847b1416ba5f1eeccf5e759aa9392a7fc65364736f6c63430008170033

Deployed Bytecode

0x608060405260043610610280575f3560e01c80638a8c523c1161014e578063b431dd28116100c0578063d85ba06311610079578063d85ba06314610999578063dd62ed3e146109c3578063e2f45605146109ff578063e71dc3f514610a29578063e8078d9414610a53578063f2fde38b14610a5d57610287565b8063b431dd281461087d578063b62496f5146108a5578063bbc0c742146108e1578063c02466681461090b578063c8c8ebe414610933578063d257b34f1461095d57610287565b8063a457c2d711610112578063a457c2d71461075f578063a4c82a001461079b578063a4d0047d146107c5578063a9059cbb146107ef578063aacebbe31461082b578063adb873bd1461085357610287565b80638a8c523c146106915780638da5cb5b146106a757806395d89b41146106d15780639a7a23d6146106fb5780639b66731b1461072357610287565b806339509351116101f25780636b2fb124116101ab5780636b2fb1241461059957806370a08231146105c3578063715018a6146105ff578063751039fc146106155780637571336a1461063f57806378d527221461066757610287565b8063395093511461048d57806349bd5a5e146104c95780634a62bb65146104f35780635c068a8c1461051d57806366ca9b83146105475780636a486a8e1461056f57610287565b806318160ddd1161024457806318160ddd1461037f57806323b872dd146103a957806327c8f835146103e55780632c3e486c1461040f578063313ce5671461043957806336a1efe41461046357610287565b806302dbd8f81461028b57806306fdde03146102b3578063095ea7b3146102dd57806310d5de53146103195780631694505e1461035557610287565b3661028757005b5f80fd5b348015610296575f80fd5b506102b160048036038101906102ac91906134dd565b610a85565b005b3480156102be575f80fd5b506102c7610b38565b6040516102d491906135a5565b60405180910390f35b3480156102e8575f80fd5b5061030360048036038101906102fe919061361f565b610bc8565b6040516103109190613677565b60405180910390f35b348015610324575f80fd5b5061033f600480360381019061033a9190613690565b610be5565b60405161034c9190613677565b60405180910390f35b348015610360575f80fd5b50610369610c02565b6040516103769190613716565b60405180910390f35b34801561038a575f80fd5b50610393610c26565b6040516103a0919061373e565b60405180910390f35b3480156103b4575f80fd5b506103cf60048036038101906103ca9190613757565b610c2f565b6040516103dc9190613677565b60405180910390f35b3480156103f0575f80fd5b506103f9610d21565b60405161040691906137b6565b60405180910390f35b34801561041a575f80fd5b50610423610d27565b604051610430919061373e565b60405180910390f35b348015610444575f80fd5b5061044d610d2d565b60405161045a91906137ea565b60405180910390f35b34801561046e575f80fd5b50610477610d42565b604051610484919061373e565b60405180910390f35b348015610498575f80fd5b506104b360048036038101906104ae919061361f565b610d48565b6040516104c09190613677565b60405180910390f35b3480156104d4575f80fd5b506104dd610def565b6040516104ea91906137b6565b60405180910390f35b3480156104fe575f80fd5b50610507610e14565b6040516105149190613677565b60405180910390f35b348015610528575f80fd5b50610531610e26565b60405161053e919061373e565b60405180910390f35b348015610552575f80fd5b5061056d600480360381019061056891906134dd565b610e2c565b005b34801561057a575f80fd5b50610583610edf565b604051610590919061373e565b60405180910390f35b3480156105a4575f80fd5b506105ad610ee5565b6040516105ba919061373e565b60405180910390f35b3480156105ce575f80fd5b506105e960048036038101906105e49190613690565b610eeb565b6040516105f6919061373e565b60405180910390f35b34801561060a575f80fd5b50610613610f30565b005b348015610620575f80fd5b50610629610fb7565b6040516106369190613677565b60405180910390f35b34801561064a575f80fd5b506106656004803603810190610660919061382d565b611054565b005b348015610672575f80fd5b5061067b611128565b604051610688919061373e565b60405180910390f35b34801561069c575f80fd5b506106a561112e565b005b3480156106b2575f80fd5b506106bb6111ce565b6040516106c891906137b6565b60405180910390f35b3480156106dc575f80fd5b506106e56111f7565b6040516106f291906135a5565b60405180910390f35b348015610706575f80fd5b50610721600480360381019061071c919061382d565b611287565b005b34801561072e575f80fd5b506107496004803603810190610744919061386b565b6113a0565b6040516107569190613677565b60405180910390f35b34801561076a575f80fd5b506107856004803603810190610780919061361f565b611447565b6040516107929190613677565b60405180910390f35b3480156107a6575f80fd5b506107af61152d565b6040516107bc919061373e565b60405180910390f35b3480156107d0575f80fd5b506107d9611533565b6040516107e6919061373e565b60405180910390f35b3480156107fa575f80fd5b506108156004803603810190610810919061361f565b611539565b6040516108229190613677565b60405180910390f35b348015610836575f80fd5b50610851600480360381019061084c9190613690565b611556565b005b34801561085e575f80fd5b50610867611690565b604051610874919061373e565b60405180910390f35b348015610888575f80fd5b506108a3600480360381019061089e919061382d565b611696565b005b3480156108b0575f80fd5b506108cb60048036038101906108c69190613690565b6117be565b6040516108d89190613677565b60405180910390f35b3480156108ec575f80fd5b506108f56117db565b6040516109029190613677565b60405180910390f35b348015610916575f80fd5b50610931600480360381019061092c919061382d565b6117ee565b005b34801561093e575f80fd5b50610947611910565b604051610954919061373e565b60405180910390f35b348015610968575f80fd5b50610983600480360381019061097e919061386b565b611916565b6040516109909190613677565b60405180910390f35b3480156109a4575f80fd5b506109ad6119bd565b6040516109ba919061373e565b60405180910390f35b3480156109ce575f80fd5b506109e960048036038101906109e49190613896565b6119c3565b6040516109f6919061373e565b60405180910390f35b348015610a0a575f80fd5b50610a13611a45565b604051610a20919061373e565b60405180910390f35b348015610a34575f80fd5b50610a3d611a4b565b604051610a4a919061373e565b60405180910390f35b610a5b611a51565b005b348015610a68575f80fd5b50610a836004803603810190610a7e9190613690565b611d0b565b005b610a8d611e01565b73ffffffffffffffffffffffffffffffffffffffff16610aab6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614610b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af89061391e565b60405180910390fd5b8160138190555080601481905550601454601354610b1f9190613969565b60128190555060196012541115610b34575f80fd5b5050565b606060038054610b47906139c9565b80601f0160208091040260200160405190810160405280929190818152602001828054610b73906139c9565b8015610bbe5780601f10610b9557610100808354040283529160200191610bbe565b820191905f5260205f20905b815481529060010190602001808311610ba157829003601f168201915b5050505050905090565b5f610bdb610bd4611e01565b8484611e08565b6001905092915050565b6019602052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b5f610c3b848484611fcb565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610c82611e01565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf890613a69565b60405180910390fd5b610d1585610d0d611e01565b858403611e08565b60019150509392505050565b61dead81565b600b5481565b5f60055f9054906101000a900460ff16905090565b600a5481565b5f610de5610d54611e01565b848460015f610d61611e01565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610de09190613969565b611e08565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5f9054906101000a900460ff1681565b60105481565b610e34611e01565b73ffffffffffffffffffffffffffffffffffffffff16610e526111ce565b73ffffffffffffffffffffffffffffffffffffffff1614610ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9f9061391e565b60405180910390fd5b8160108190555080601181905550601154601054610ec69190613969565b600f819055506019600f541115610edb575f80fd5b5050565b60125481565b60135481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f38611e01565b73ffffffffffffffffffffffffffffffffffffffff16610f566111ce565b73ffffffffffffffffffffffffffffffffffffffff1614610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa39061391e565b60405180910390fd5b610fb55f612b96565b565b5f610fc0611e01565b73ffffffffffffffffffffffffffffffffffffffff16610fde6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102b9061391e565b60405180910390fd5b5f600d5f6101000a81548160ff0219169083151502179055506001905090565b61105c611e01565b73ffffffffffffffffffffffffffffffffffffffff1661107a6111ce565b73ffffffffffffffffffffffffffffffffffffffff16146110d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c79061391e565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60165481565b611136611e01565b73ffffffffffffffffffffffffffffffffffffffff166111546111ce565b73ffffffffffffffffffffffffffffffffffffffff16146111aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a19061391e565b60405180910390fd5b6001600d60016101000a81548160ff02191690831515021790555043600e81905550565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611206906139c9565b80601f0160208091040260200160405190810160405280929190818152602001828054611232906139c9565b801561127d5780601f106112545761010080835404028352916020019161127d565b820191905f5260205f20905b81548152906001019060200180831161126057829003601f168201915b5050505050905090565b61128f611e01565b73ffffffffffffffffffffffffffffffffffffffff166112ad6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fa9061391e565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138990613af7565b60405180910390fd5b61139c8282612c5b565b5050565b5f6113a9611e01565b73ffffffffffffffffffffffffffffffffffffffff166113c76111ce565b73ffffffffffffffffffffffffffffffffffffffff161461141d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114149061391e565b60405180910390fd5b6001821015801561142f575060808211155b611437575f80fd5b81600a8190555060019050919050565b5f8060015f611454611e01565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561150e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150590613b85565b60405180910390fd5b611522611519611e01565b85858403611e08565b600191505092915050565b600c5481565b60155481565b5f61154c611545611e01565b8484611fcb565b6001905092915050565b61155e611e01565b73ffffffffffffffffffffffffffffffffffffffff1661157c6111ce565b73ffffffffffffffffffffffffffffffffffffffff16146115d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c99061391e565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6760405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b61169e611e01565b73ffffffffffffffffffffffffffffffffffffffff166116bc6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611712576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117099061391e565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b601a602052805f5260405f205f915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b6117f6611e01565b73ffffffffffffffffffffffffffffffffffffffff166118146111ce565b73ffffffffffffffffffffffffffffffffffffffff161461186a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118619061391e565b60405180910390fd5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516119049190613677565b60405180910390a25050565b60085481565b5f61191f611e01565b73ffffffffffffffffffffffffffffffffffffffff1661193d6111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198a9061391e565b60405180910390fd5b600182101580156119a5575060808211155b6119ad575f80fd5b8160098190555060019050919050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60095481565b60115481565b611a59611e01565b73ffffffffffffffffffffffffffffffffffffffff16611a776111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac49061391e565b60405180910390fd5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b36573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b5a9190613bb7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bdf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c039190613bb7565b6040518363ffffffff1660e01b8152600401611c20929190613be2565b6020604051808303815f875af1158015611c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c609190613bb7565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ccb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611054565b611cf760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612c5b565b611d09611d0330610eeb565b34612cf9565b565b611d13611e01565b73ffffffffffffffffffffffffffffffffffffffff16611d316111ce565b73ffffffffffffffffffffffffffffffffffffffff1614611d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7e9061391e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dec90613c79565b60405180910390fd5b611dfe81612b96565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6d90613d07565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edb90613d95565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fbe919061373e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203090613e23565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209e90613eb1565b60405180910390fd5b5f81036120be576120b983835f612dd7565b612b91565b5f439050600d5f9054906101000a900460ff16156125a6576120de6111ce565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561214c575061211c6111ce565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561218457505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121be575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156121d75750600660149054906101000a900460ff16155b156125a557600d60019054906101000a900460ff166122cb5760175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061228b575060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6122ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c190613f19565b60405180910390fd5b5b601a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612368575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561240f576008548211156123b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a990613fa7565b60405180910390fd5b6008546123be84610eeb565b836123c99190613969565b111561240a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124019061400f565b60405180910390fd5b6125a4565b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156124ac575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156124fb576008548211156124f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ed9061409d565b60405180910390fd5b6125a3565b60195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166125a25760085461255584610eeb565b836125609190613969565b11156125a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125989061400f565b60405180910390fd5b5b5b5b5b5b5f6125b030610eeb565b90505f60095482101590508080156125d55750600660149054906101000a900460ff16155b80156125f35750600260185f8581526020019081526020015f205411155b80156126465750601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612699575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156126ec575060175f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612753576001600660146101000a81548160ff02191690831515021790555061271461304c565b60185f8481526020019081526020015f205f8154612731906140bb565b919050819055505f600660146101000a81548160ff0219169083151502179055505b600660149054906101000a900460ff161580156127b65750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015612809575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561281757612816613114565b5b5f600660149054906101000a900460ff1615905060175f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806128c6575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156128cf575f90505b5f805f8315612b7e57601a5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561292f57505f601254115b15612aa0576064601254896129449190614102565b61294e9190614170565b9250601254601454846129619190614102565b61296b9190614170565b9050808361297991906141a0565b915060155f81548092919061298d906140bb565b91905055505f6129bd60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610eeb565b90505f8203612a8257612000811180156129da5750600260155410155b806129f55750611000811180156129f45750600460155410155b5b80612a10575061080081118015612a0f5750600860155410155b5b80612a2b575061040081118015612a2a5750601060155410155b5b80612a46575061020081118015612a455750602060155410155b5b80612a61575061010081118015612a605750604060155410155b5b15612a81575f60158190555060019150600184612a7e9190613969565b93505b5b8860165f828254612a939190613969565b9250508190555050612b45565b5f600f54118015612af75750601a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612b44576064600f5489612b0c9190614102565b612b169190614170565b9250600f5460115484612b299190614102565b612b339190614170565b90508083612b4191906141a0565b91505b5b5f821115612b5957612b588a3084612dd7565b5b5f811115612b6f57612b6e8a61dead83612dd7565b5b8288612b7b91906141a0565b97505b612b898a8a8a612dd7565b505050505050505b505050565b5f600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b612d24307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611e08565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80612d6d6111ce565b426040518863ffffffff1660e01b8152600401612d8f9695949392919061420c565b60606040518083038185885af1158015612dab573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612dd0919061427f565b5050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3c90613e23565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eaa90613eb1565b60405180910390fd5b612ebe838383613269565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f389061433f565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612fcf9190613969565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613033919061373e565b60405180910390a361304684848461326e565b50505050565b5f61305630610eeb565b90505f808203613067575050613112565b600a5482111561307757600a5491505b5f82905061308481613273565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516130c99061438a565b5f6040518083038185875af1925050503d805f8114613103576040519150601f19603f3d011682016040523d82523d5f602084013e613108565b606091505b5050809250505050505b565b5f61313f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610eeb565b905061010081111561326557610400601654101561318057600b54600c546131679190613969565b4210156131745750613267565b42600c81905550613188565b5f6016819055505b6131b760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead6001612dd7565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015613221575f80fd5b505af1158015613233573d5f803e3d5ffd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a1505b505b565b505050565b505050565b5f600267ffffffffffffffff81111561328f5761328e61439e565b5b6040519080825280602002602001820160405280156132bd5781602001602082028036833780820191505090505b50905030815f815181106132d4576132d36143cb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613377573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061339b9190613bb7565b816001815181106133af576133ae6143cb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613414307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611e08565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016134759594939291906144af565b5f604051808303815f87803b15801561348c575f80fd5b505af115801561349e573d5f803e3d5ffd5b505050505050565b5f80fd5b5f819050919050565b6134bc816134aa565b81146134c6575f80fd5b50565b5f813590506134d7816134b3565b92915050565b5f80604083850312156134f3576134f26134a6565b5b5f613500858286016134c9565b9250506020613511858286016134c9565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613552578082015181840152602081019050613537565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6135778261351b565b6135818185613525565b9350613591818560208601613535565b61359a8161355d565b840191505092915050565b5f6020820190508181035f8301526135bd818461356d565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6135ee826135c5565b9050919050565b6135fe816135e4565b8114613608575f80fd5b50565b5f81359050613619816135f5565b92915050565b5f8060408385031215613635576136346134a6565b5b5f6136428582860161360b565b9250506020613653858286016134c9565b9150509250929050565b5f8115159050919050565b6136718161365d565b82525050565b5f60208201905061368a5f830184613668565b92915050565b5f602082840312156136a5576136a46134a6565b5b5f6136b28482850161360b565b91505092915050565b5f819050919050565b5f6136de6136d96136d4846135c5565b6136bb565b6135c5565b9050919050565b5f6136ef826136c4565b9050919050565b5f613700826136e5565b9050919050565b613710816136f6565b82525050565b5f6020820190506137295f830184613707565b92915050565b613738816134aa565b82525050565b5f6020820190506137515f83018461372f565b92915050565b5f805f6060848603121561376e5761376d6134a6565b5b5f61377b8682870161360b565b935050602061378c8682870161360b565b925050604061379d868287016134c9565b9150509250925092565b6137b0816135e4565b82525050565b5f6020820190506137c95f8301846137a7565b92915050565b5f60ff82169050919050565b6137e4816137cf565b82525050565b5f6020820190506137fd5f8301846137db565b92915050565b61380c8161365d565b8114613816575f80fd5b50565b5f8135905061382781613803565b92915050565b5f8060408385031215613843576138426134a6565b5b5f6138508582860161360b565b925050602061386185828601613819565b9150509250929050565b5f602082840312156138805761387f6134a6565b5b5f61388d848285016134c9565b91505092915050565b5f80604083850312156138ac576138ab6134a6565b5b5f6138b98582860161360b565b92505060206138ca8582860161360b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613908602083613525565b9150613913826138d4565b602082019050919050565b5f6020820190508181035f830152613935816138fc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613973826134aa565b915061397e836134aa565b92508282019050808211156139965761399561393c565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806139e057607f821691505b6020821081036139f3576139f261399c565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613a53602883613525565b9150613a5e826139f9565b604082019050919050565b5f6020820190508181035f830152613a8081613a47565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613ae1603983613525565b9150613aec82613a87565b604082019050919050565b5f6020820190508181035f830152613b0e81613ad5565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613b6f602583613525565b9150613b7a82613b15565b604082019050919050565b5f6020820190508181035f830152613b9c81613b63565b9050919050565b5f81519050613bb1816135f5565b92915050565b5f60208284031215613bcc57613bcb6134a6565b5b5f613bd984828501613ba3565b91505092915050565b5f604082019050613bf55f8301856137a7565b613c0260208301846137a7565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613c63602683613525565b9150613c6e82613c09565b604082019050919050565b5f6020820190508181035f830152613c9081613c57565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613cf1602483613525565b9150613cfc82613c97565b604082019050919050565b5f6020820190508181035f830152613d1e81613ce5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d7f602283613525565b9150613d8a82613d25565b604082019050919050565b5f6020820190508181035f830152613dac81613d73565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613e0d602583613525565b9150613e1882613db3565b604082019050919050565b5f6020820190508181035f830152613e3a81613e01565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613e9b602383613525565b9150613ea682613e41565b604082019050919050565b5f6020820190508181035f830152613ec881613e8f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f613f03601683613525565b9150613f0e82613ecf565b602082019050919050565b5f6020820190508181035f830152613f3081613ef7565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f613f91603583613525565b9150613f9c82613f37565b604082019050919050565b5f6020820190508181035f830152613fbe81613f85565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613ff9601383613525565b915061400482613fc5565b602082019050919050565b5f6020820190508181035f83015261402681613fed565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f614087603683613525565b91506140928261402d565b604082019050919050565b5f6020820190508181035f8301526140b48161407b565b9050919050565b5f6140c5826134aa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036140f7576140f661393c565b5b600182019050919050565b5f61410c826134aa565b9150614117836134aa565b9250828202614125816134aa565b9150828204841483151761413c5761413b61393c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61417a826134aa565b9150614185836134aa565b92508261419557614194614143565b5b828204905092915050565b5f6141aa826134aa565b91506141b5836134aa565b92508282039050818111156141cd576141cc61393c565b5b92915050565b5f819050919050565b5f6141f66141f16141ec846141d3565b6136bb565b6134aa565b9050919050565b614206816141dc565b82525050565b5f60c08201905061421f5f8301896137a7565b61422c602083018861372f565b61423960408301876141fd565b61424660608301866141fd565b61425360808301856137a7565b61426060a083018461372f565b979650505050505050565b5f81519050614279816134b3565b92915050565b5f805f60608486031215614296576142956134a6565b5b5f6142a38682870161426b565b93505060206142b48682870161426b565b92505060406142c58682870161426b565b9150509250925092565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614329602683613525565b9150614334826142cf565b604082019050919050565b5f6020820190508181035f8301526143568161431d565b9050919050565b5f81905092915050565b50565b5f6143755f8361435d565b915061438082614367565b5f82019050919050565b5f6143948261436a565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61442a816135e4565b82525050565b5f61443b8383614421565b60208301905092915050565b5f602082019050919050565b5f61445d826143f8565b6144678185614402565b935061447283614412565b805f5b838110156144a25781516144898882614430565b975061449483614447565b925050600181019050614475565b5085935050505092915050565b5f60a0820190506144c25f83018861372f565b6144cf60208301876141fd565b81810360408301526144e18186614453565b90506144f060608301856137a7565b6144fd608083018461372f565b969550505050505056fea2646970667358221220e923b3c3bb520e9da2db82b3873f847b1416ba5f1eeccf5e759aa9392a7fc65364736f6c63430008170033

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.