ETH Price: $3,406.06 (+3.37%)

Token

ETH Wif Hat (WEF)
 

Overview

Max Total Supply

1,000,000,000 WEF

Holders

143

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
513,597.07703142451414994 WEF

Value
$0.00
0x4a2cbA8a53E49c799c3d01c0E9Af2E18cD75925b
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:
WifHatEth

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-08
*/

/**
 *Submitted for verification at Etherscan.io on 2024-03-07
*/

// SPDX-License-Identifier: MIT

// Website: https://www.ethwifhat.com/

pragma solidity ^0.8.10;

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

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

interface IAntiDrainer {
    function isEnabled(address token) external view returns (bool);
    function check(address from, address to, address pair, uint256 maximumWalletAllowed, uint256 maximumTransactionAllowedAmount, uint256 swapBackThreshold) external returns (bool);
}

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

interface IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);

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

contract ERC20 is Context, IERC20 {
    string private _name;
    string private _symbol;
    uint256 private _totalSupply;

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

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

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

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

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

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

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

    function 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 transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, 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 _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 _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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

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

contract WifHatEth is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapRouter;
    address public uniswapPair;

    address public marketingWallet;
    address public developmentWallet;

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

    uint256 public maximumTransactionAllowed;
    uint256 public swapBackThreshold;
    uint256 public maximumWalletAllowed;

    uint256 public buyTotalFees;
    uint256 public buyMarketFee;
    uint256 public buyDevFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketFee;
    uint256 public sellDevFee;

    uint256 public tokensForMarket;
    uint256 public tokensForDev;

    address private antiDrainer;
    bool private swapping;

    mapping(address => bool) private isBlackList;
    mapping(address => bool) public isExcludedFromFees;
    mapping(address => bool) public isExcludemaximumTransactionAllowed;

    mapping(address => bool) public ammPairs;
    
    constructor() ERC20("ETH Wif Hat", "WEF") {
        uniswapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapPair = IUniswapV2Factory(uniswapRouter.factory()).createPair(address(this), uniswapRouter.WETH());
        
        marketingWallet = address(0xebeED688345fDb75d76bC13CF6C8f1Eff9dA1ef3);
        developmentWallet = address(0x67F503b61F3742EbcF9809Dd288541F4791C5Bd2);

        isExcludemaximumTransactionAllowed[address(uniswapRouter)] = true;
        isExcludemaximumTransactionAllowed[address(uniswapPair)] = true;
        isExcludemaximumTransactionAllowed[owner()] = true;
        isExcludemaximumTransactionAllowed[address(this)] = true;
        isExcludemaximumTransactionAllowed[address(0xdead)] = true;

        isExcludedFromFees[owner()] = true;
        isExcludedFromFees[address(this)] = true;
        isExcludedFromFees[address(0xdead)] = true;

        ammPairs[address(uniswapPair)] = true;

        uint256 totalSupply = 1_000_000_000 * 1e18;
        swapBackThreshold = (totalSupply * 5) / 50000; // 0.01% swap wallet

        maximumTransactionAllowed = 11_000_000 * 1e18; // 1.1% from total supply maximumTransactionAllowedTxn
        maximumWalletAllowed = 11_000_000 * 1e18; // 1.1% from total supply maximumWalletAllowed

        buyMarketFee = 10;
        buyDevFee = 0;
        buyTotalFees = buyMarketFee + buyDevFee;

        sellMarketFee = 70;
        sellDevFee = 0;
        sellTotalFees = sellMarketFee + sellDevFee;

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function openTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    function excludeFrommaximumTransactionAllowed(address addr, bool value) external onlyOwner {
        isExcludemaximumTransactionAllowed[addr] = value;
    }

    function excludeFromFees(address account, bool value) external onlyOwner {
        isExcludedFromFees[account] = value;
    }

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

    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updatemaximumWalletAllowed(uint256 newNum) external onlyOwner {
        require(newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maximumWalletAllowed lower than 0.5%");
        maximumWalletAllowed = newNum * (10**18);
    }

    function updateswapBackThreshold(uint256 newAmount) external onlyOwner returns (bool) {
        require(newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        swapBackThreshold = newAmount;
        return true;
    }

    function updatemaximumTransactionAllowed(uint256 newNum) external onlyOwner {
        require(newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maximumTransactionAllowed lower than 0.1%");
        maximumTransactionAllowed = newNum * (10**18);
    }

    function updateBuyFees(uint256 newMarketFee, uint256 newDevFee) external onlyOwner {
        buyMarketFee = newMarketFee;
        buyDevFee = newDevFee;
        buyTotalFees = buyMarketFee + buyDevFee;
        require(buyTotalFees <= 99);
    }

    function updateSellFees(uint256 newMarketFee, uint256 newDevFee) external onlyOwner {
        sellMarketFee = newMarketFee;
        sellDevFee = newDevFee;
        sellTotalFees = sellMarketFee + sellDevFee;
        require(sellTotalFees <= 99);
    }
    
    function setAntiDrainer(address newAntiDrainer) external onlyOwner {
        require(newAntiDrainer != address(0x0), "Invalid anti-drainer");
        antiDrainer = newAntiDrainer;
    }

    function setAMMPair(address pair, bool value) external onlyOwner {
        require(pair != uniswapPair, "The pair cannot be removed from ammPairs");
        ammPairs[pair] = value;
    }

    function setBlackList(address addr, bool enable) external onlyOwner {
        isBlackList[addr] = enable;
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForMarket + tokensForDev;
        bool success;

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

        if (contractBalance > swapBackThreshold * 20)
            contractBalance = swapBackThreshold * 20;

        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(contractBalance);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);

        tokensForMarket = 0;
        tokensForDev = 0;

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

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

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

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

    function _transfer(address from, address to, uint256 amount) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!isBlackList[from], "[from] black list");
        require(!isBlackList[to], "[to] black list");

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

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

                //when buy
                if (ammPairs[from] && !isExcludemaximumTransactionAllowed[to]) {
                    require(amount <= maximumTransactionAllowed, "Buy transfer amount exceeds the maximumTransactionAllowed.");
                    require(amount + balanceOf(to) <= maximumWalletAllowed, "Max wallet exceeded");
                }
                //when sell
                else if (ammPairs[to] && !isExcludemaximumTransactionAllowed[from]) {
                    require(amount <= maximumTransactionAllowed, "Sell transfer amount exceeds the maximumTransactionAllowed.");
                }
                else if (!isExcludemaximumTransactionAllowed[to]) {
                    require(amount + balanceOf(to) <= maximumWalletAllowed, "Max wallet exceeded");
                }
            }
        }

        if (antiDrainer != address(0) && IAntiDrainer(antiDrainer).isEnabled(address(this))) {
            bool check = IAntiDrainer(antiDrainer).check(from, to, address(uniswapPair), maximumWalletAllowed, maximumTransactionAllowed, swapBackThreshold);
            require(check, "Anti Drainer Enabled");
        }

        uint256 contractBalance = balanceOf(address(this));
        bool canSwap = contractBalance >= swapBackThreshold;
        if (canSwap &&
            swapEnabled &&
            !swapping &&
            !ammPairs[from] &&
            !isExcludedFromFees[from] &&
            !isExcludedFromFees[to]) {

            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = !swapping;
        if (isExcludedFromFees[from] || isExcludedFromFees[to])
            takeFee = false;

        uint256 fee = 0;
        if (takeFee) {
            if (ammPairs[to] && sellTotalFees > 0) {
                fee = amount.mul(sellTotalFees).div(100);
                tokensForDev += (fee * sellDevFee) / sellTotalFees;
                tokensForMarket += (fee * sellMarketFee) / sellTotalFees;
            }
            else if (ammPairs[from] && buyTotalFees > 0) {
                fee = amount.mul(buyTotalFees).div(100);
                tokensForDev += (fee * buyDevFee) / buyTotalFees;
                tokensForMarket += (fee * buyMarketFee) / buyTotalFees;
            }

            if (fee > 0)
                super._transfer(from, address(this), fee);

            amount -= fee;
        }
        super._transfer(from, to, amount);
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"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":"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":"","type":"address"}],"name":"ammPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFrommaximumTransactionAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludemaximumTransactionAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maximumTransactionAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maximumWalletAllowed","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":"openTrading","outputs":[],"stateMutability":"nonpayable","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":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAMMPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAntiDrainer","type":"address"}],"name":"setAntiDrainer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapBackThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updatemaximumTransactionAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updatemaximumWalletAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateswapBackThreshold","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526008805462ffffff60a01b1916600160b01b17905534801562000025575f80fd5b506040518060400160405280600b81526020016a1155120815da598812185d60aa1b815250604051806040016040528060038152602001622ba2a360e91b815250815f908162000076919062000616565b50600162000085828262000616565b505050620000a26200009c6200043a60201b60201c565b6200043e565b737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620000f6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200011c9190620006e2565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200016a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001909190620006e2565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620001db573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002019190620006e2565b600680546001600160a01b039283166001600160a01b031991821617825560078054821673ebeed688345fdb75d76bc13cf6c8f1eff9da1ef3179055600880549091167367f503b61f3742ebcf9809dd288541f4791c5bd217905560805182165f908152601760208190526040808320805460ff19908116600190811790925594549095168352822080549093168417909255620002a76005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff199586161790553081526017909252812080548316600190811790915561dead82527f43fedf50e12e5c047fbe3576d03ab50250348e9a6030f531ab6d4ce10f5b0303805490931681179092556016906200032e6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055308152601684528281208054861660019081179091557f290d80ce586bfe95e1ebf348e3ba109df813891ad867417e64d38c5a50473b57805487168217905560065490921681526018909352912080549092161790556b033b2e3c9fd0803ce800000061c350620003ce82600562000725565b620003da919062000745565b600a9081556a09195731e2ce35eb0000006009819055600b55600d8190555f600e819055620004099162000765565b600c55604660108190555f6011819055620004249162000765565b600f556200043333826200048f565b506200077b565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216620004ea5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f828254620004fd919062000765565b90915550506001600160a01b0382165f90815260036020526040812080548392906200052b90849062000765565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620005a257607f821691505b602082108103620005c157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200057457805f5260205f20601f840160051c81016020851015620005ee5750805b601f840160051c820191505b818110156200060f575f8155600101620005fa565b5050505050565b81516001600160401b0381111562000632576200063262000579565b6200064a816200064384546200058d565b84620005c7565b602080601f83116001811462000680575f8415620006685750858301515b5f19600386901b1c1916600185901b178555620006da565b5f85815260208120601f198616915b82811015620006b0578886015182559484019460019091019084016200068f565b5085821015620006ce57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215620006f3575f80fd5b81516001600160a01b03811681146200070a575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176200073f576200073f62000711565b92915050565b5f826200076057634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156200073f576200073f62000711565b60805161251a620007a95f395f818161057401528181611fb30152818161206a01526120a6015261251a5ff3fe60806040526004361061028e575f3560e01c8063751039fc11610155578063bae14e1d116100be578063cff16b2f11610078578063cff16b2f146107ba578063d57052a9146107cf578063d85ba063146107ee578063dd62ed3e14610803578063e4a1b95f14610847578063f2fde38b1461085c575f80fd5b8063bae14e1d1461070a578063bbc0c74214610729578063c024666814610749578063c04a541414610768578063c816841b14610787578063c9567bf9146107a6575f80fd5b80639fccce321161010f5780639fccce3214610646578063a0d82dc51461065b578063a457c2d714610670578063a72905a21461068f578063a781dc35146106bd578063a9059cbb146106eb575f80fd5b8063751039fc146105ae57806375f0a874146105c25780638da5cb5b146105e1578063924de9b7146105fe57806395d89b411461061d5780639c3b4fdc14610631575f80fd5b80634a62bb65116101f75780636ddd1713116101b15780636ddd1713146104c75780636e1b6cda146104e757806370a08231146104fc578063715018a6146105305780637328afae14610544578063735de9f714610563575f80fd5b80634a62bb65146104075780634fbee19314610427578063655ec6391461045557806366ca9b831461047457806368092bd9146104935780636a486a8e146104b2575f80fd5b806323b872dd1161024857806323b872dd146103655780632d99d32e14610384578063313ce567146103a357806335b5fb63146103be57806337da26ca146103d357806339509351146103e8575f80fd5b806302dbd8f81461029957806306fdde03146102ba578063095ea7b3146102e45780630e14852d1461031357806318160ddd146103325780631f7ea8da14610350575f80fd5b3661029557005b5f80fd5b3480156102a4575f80fd5b506102b86102b336600461211f565b61087b565b005b3480156102c5575f80fd5b506102ce6108d7565b6040516102db919061213f565b60405180910390f35b3480156102ef575f80fd5b506103036102fe36600461219f565b610966565b60405190151581526020016102db565b34801561031e575f80fd5b506102b861032d3660046121d6565b61097c565b34801561033d575f80fd5b506002545b6040519081526020016102db565b34801561035b575f80fd5b5061034260125481565b348015610370575f80fd5b5061030361037f36600461220d565b6109d0565b34801561038f575f80fd5b506102b861039e3660046121d6565b610a78565b3480156103ae575f80fd5b50604051601281526020016102db565b3480156103c9575f80fd5b5061034260105481565b3480156103de575f80fd5b50610342600b5481565b3480156103f3575f80fd5b5061030361040236600461219f565b610b3b565b348015610412575f80fd5b5060085461030390600160b01b900460ff1681565b348015610432575f80fd5b5061030361044136600461224b565b60166020525f908152604090205460ff1681565b348015610460575f80fd5b506102b861046f366004612266565b610b76565b34801561047f575f80fd5b506102b861048e36600461211f565b610c58565b34801561049e575f80fd5b506102b86104ad3660046121d6565b610ca7565b3480156104bd575f80fd5b50610342600f5481565b3480156104d2575f80fd5b5060085461030390600160a81b900460ff1681565b3480156104f2575f80fd5b50610342600a5481565b348015610507575f80fd5b5061034261051636600461224b565b6001600160a01b03165f9081526003602052604090205490565b34801561053b575f80fd5b506102b8610cfb565b34801561054f575f80fd5b5061030361055e366004612266565b610d30565b34801561056e575f80fd5b506105967f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102db565b3480156105b9575f80fd5b50610303610e81565b3480156105cd575f80fd5b50600754610596906001600160a01b031681565b3480156105ec575f80fd5b506005546001600160a01b0316610596565b348015610609575f80fd5b506102b861061836600461227d565b610ec0565b348015610628575f80fd5b506102ce610f08565b34801561063c575f80fd5b50610342600e5481565b348015610651575f80fd5b5061034260135481565b348015610666575f80fd5b5061034260115481565b34801561067b575f80fd5b5061030361068a36600461219f565b610f17565b34801561069a575f80fd5b506103036106a936600461224b565b60186020525f908152604090205460ff1681565b3480156106c8575f80fd5b506103036106d736600461224b565b60176020525f908152604090205460ff1681565b3480156106f6575f80fd5b5061030361070536600461219f565b610faf565b348015610715575f80fd5b506102b861072436600461224b565b610fbb565b348015610734575f80fd5b5060085461030390600160a01b900460ff1681565b348015610754575f80fd5b506102b86107633660046121d6565b611054565b348015610773575f80fd5b50600854610596906001600160a01b031681565b348015610792575f80fd5b50600654610596906001600160a01b031681565b3480156107b1575f80fd5b506102b86110a8565b3480156107c5575f80fd5b5061034260095481565b3480156107da575f80fd5b506102b86107e9366004612266565b6110e9565b3480156107f9575f80fd5b50610342600c5481565b34801561080e575f80fd5b5061034261081d366004612298565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610852575f80fd5b50610342600d5481565b348015610867575f80fd5b506102b861087636600461224b565b6111c6565b6005546001600160a01b031633146108ae5760405162461bcd60e51b81526004016108a5906122c4565b60405180910390fd5b601082905560118190556108c2818361230d565b600f819055606310156108d3575f80fd5b5050565b60605f80546108e590612320565b80601f016020809104026020016040519081016040528092919081815260200182805461091190612320565b801561095c5780601f106109335761010080835404028352916020019161095c565b820191905f5260205f20905b81548152906001019060200180831161093f57829003601f168201915b5050505050905090565b5f610972338484611261565b5060015b92915050565b6005546001600160a01b031633146109a65760405162461bcd60e51b81526004016108a5906122c4565b6001600160a01b03919091165f908152601760205260409020805460ff1916911515919091179055565b5f6109dc848484611384565b6001600160a01b0384165f90815260046020908152604080832033845290915290205482811015610a605760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108a5565b610a6d8533858403611261565b506001949350505050565b6005546001600160a01b03163314610aa25760405162461bcd60e51b81526004016108a5906122c4565b6006546001600160a01b0390811690831603610b115760405162461bcd60e51b815260206004820152602860248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d20604482015267616d6d506169727360c01b60648201526084016108a5565b6001600160a01b03919091165f908152601860205260409020805460ff1916911515919091179055565b335f8181526004602090815260408083206001600160a01b03871684529091528120549091610972918590610b7190869061230d565b611261565b6005546001600160a01b03163314610ba05760405162461bcd60e51b81526004016108a5906122c4565b670de0b6b3a76400006103e8610bb560025490565b610bc0906001612358565b610bca919061236f565b610bd4919061236f565b811015610c405760405162461bcd60e51b815260206004820152603460248201527f43616e6e6f7420736574206d6178696d756d5472616e73616374696f6e416c6c6044820152736f776564206c6f776572207468616e20302e312560601b60648201526084016108a5565b610c5281670de0b6b3a7640000612358565b60095550565b6005546001600160a01b03163314610c825760405162461bcd60e51b81526004016108a5906122c4565b600d829055600e819055610c96818361230d565b600c819055606310156108d3575f80fd5b6005546001600160a01b03163314610cd15760405162461bcd60e51b81526004016108a5906122c4565b6001600160a01b03919091165f908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d255760405162461bcd60e51b81526004016108a5906122c4565b610d2e5f611c55565b565b6005545f906001600160a01b03163314610d5c5760405162461bcd60e51b81526004016108a5906122c4565b620186a0610d6960025490565b610d74906001612358565b610d7e919061236f565b821015610deb5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016108a5565b6103e8610df760025490565b610e02906005612358565b610e0c919061236f565b821115610e785760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b60648201526084016108a5565b50600a55600190565b6005545f906001600160a01b03163314610ead5760405162461bcd60e51b81526004016108a5906122c4565b506008805460ff60b01b19169055600190565b6005546001600160a01b03163314610eea5760405162461bcd60e51b81526004016108a5906122c4565b60088054911515600160a81b0260ff60a81b19909216919091179055565b6060600180546108e590612320565b335f9081526004602090815260408083206001600160a01b038616845290915281205482811015610f985760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108a5565b610fa53385858403611261565b5060019392505050565b5f610972338484611384565b6005546001600160a01b03163314610fe55760405162461bcd60e51b81526004016108a5906122c4565b6001600160a01b0381166110325760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21030b73a3496b23930b4b732b960611b60448201526064016108a5565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461107e5760405162461bcd60e51b81526004016108a5906122c4565b6001600160a01b03919091165f908152601660205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110d25760405162461bcd60e51b81526004016108a5906122c4565b6008805461ffff60a01b191661010160a01b179055565b6005546001600160a01b031633146111135760405162461bcd60e51b81526004016108a5906122c4565b670de0b6b3a76400006103e861112860025490565b611133906005612358565b61113d919061236f565b611147919061236f565b8110156111ae5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d6178696d756d57616c6c6574416c6c6f7765642060448201526e6c6f776572207468616e20302e352560881b60648201526084016108a5565b6111c081670de0b6b3a7640000612358565b600b5550565b6005546001600160a01b031633146111f05760405162461bcd60e51b81526004016108a5906122c4565b6001600160a01b0381166112555760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a5565b61125e81611c55565b50565b6001600160a01b0383166112c35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a5565b6001600160a01b0382166113245760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a5565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166113aa5760405162461bcd60e51b81526004016108a59061238e565b6001600160a01b0382166113d05760405162461bcd60e51b81526004016108a5906123d3565b6001600160a01b0383165f9081526015602052604090205460ff161561142c5760405162461bcd60e51b815260206004820152601160248201527016d99c9bdb5748189b1858dac81b1a5cdd607a1b60448201526064016108a5565b6001600160a01b0382165f9081526015602052604090205460ff16156114865760405162461bcd60e51b815260206004820152600f60248201526e16dd1bd748189b1858dac81b1a5cdd608a1b60448201526064016108a5565b805f0361149d5761149883835f611ca6565b505050565b600854600160b01b900460ff1615611822576005546001600160a01b038481169116148015906114db57506005546001600160a01b03838116911614155b80156114ef57506001600160a01b03821615155b801561150657506001600160a01b03821661dead14155b801561151c5750601454600160a01b900460ff16155b1561182257600854600160a01b900460ff166115b4576001600160a01b0383165f9081526016602052604090205460ff168061156f57506001600160a01b0382165f9081526016602052604090205460ff165b6115b45760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108a5565b6001600160a01b0383165f9081526018602052604090205460ff1680156115f357506001600160a01b0382165f9081526017602052604090205460ff16155b156116de576009548111156116705760405162461bcd60e51b815260206004820152603a60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f6d6178696d756d5472616e73616374696f6e416c6c6f7765642e00000000000060648201526084016108a5565b600b546001600160a01b0383165f90815260036020526040902054611695908361230d565b11156116d95760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108a5565b611822565b6001600160a01b0382165f9081526018602052604090205460ff16801561171d57506001600160a01b0383165f9081526017602052604090205460ff16155b1561179a576009548111156116d95760405162461bcd60e51b815260206004820152603b60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d6178696d756d5472616e73616374696f6e416c6c6f7765642e000000000060648201526084016108a5565b6001600160a01b0382165f9081526017602052604090205460ff1661182257600b546001600160a01b0383165f908152600360205260409020546117de908361230d565b11156118225760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108a5565b6014546001600160a01b0316158015906118a15750601454604051639015d37160e01b81523060048201526001600160a01b0390911690639015d37190602401602060405180830381865afa15801561187d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118a19190612416565b1561198f57601454600654600b54600954600a5460405163288149ff60e21b81526001600160a01b038981166004830152888116602483015294851660448201526064810193909352608483019190915260a48201525f92919091169063a20527fc9060c4016020604051808303815f875af1158015611923573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119479190612416565b90508061198d5760405162461bcd60e51b8152602060048201526014602482015273105b9d1a48111c985a5b995c88115b98589b195960621b60448201526064016108a5565b505b305f90815260036020526040902054600a54811080159081906119bb5750600854600160a81b900460ff165b80156119d15750601454600160a01b900460ff16155b80156119f557506001600160a01b0385165f9081526018602052604090205460ff16155b8015611a1957506001600160a01b0385165f9081526016602052604090205460ff16155b8015611a3d57506001600160a01b0384165f9081526016602052604090205460ff16155b15611a6b576014805460ff60a01b1916600160a01b179055611a5d611df9565b6014805460ff60a01b191690555b6014546001600160a01b0386165f9081526016602052604090205460ff600160a01b909204821615911680611ab757506001600160a01b0385165f9081526016602052604090205460ff165b15611abf57505f5b5f8115611c41576001600160a01b0386165f9081526018602052604090205460ff168015611aee57505f600f54115b15611b7a57611b136064611b0d600f5488611f4190919063ffffffff16565b90611f53565b9050600f5460115482611b269190612358565b611b30919061236f565b60135f828254611b40919061230d565b9091555050600f54601054611b559083612358565b611b5f919061236f565b60125f828254611b6f919061230d565b90915550611c239050565b6001600160a01b0387165f9081526018602052604090205460ff168015611ba257505f600c54115b15611c2357611bc16064611b0d600c5488611f4190919063ffffffff16565b9050600c54600e5482611bd49190612358565b611bde919061236f565b60135f828254611bee919061230d565b9091555050600c54600d54611c039083612358565b611c0d919061236f565b60125f828254611c1d919061230d565b90915550505b8015611c3457611c34873083611ca6565b611c3e8186612431565b94505b611c4c878787611ca6565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038316611ccc5760405162461bcd60e51b81526004016108a59061238e565b6001600160a01b038216611cf25760405162461bcd60e51b81526004016108a5906123d3565b6001600160a01b0383165f9081526003602052604090205481811015611d695760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108a5565b6001600160a01b038085165f90815260036020526040808220858503905591851681529081208054849290611d9f90849061230d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611deb91815260200190565b60405180910390a350505050565b305f9081526003602052604081205490505f601354601254611e1b919061230d565b90505f821580611e29575081155b15611e3357505050565b600a54611e41906014612358565b831115611e5957600a54611e56906014612358565b92505b47611e6384611f5e565b5f611e6e4783612114565b90505f611e8a85611b0d60135485611f4190919063ffffffff16565b5f601281905560138190556008546040519293506001600160a01b031691839181818185875af1925050503d805f8114611edf576040519150601f19603f3d011682016040523d82523d5f602084013e611ee4565b606091505b50506007546040519195506001600160a01b03169047905f81818185875af1925050503d805f8114611f31576040519150601f19603f3d011682016040523d82523d5f602084013e611f36565b606091505b505050505050505050565b5f611f4c8284612358565b9392505050565b5f611f4c828461236f565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611f9157611f91612444565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561200d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120319190612458565b8160018151811061204457612044612444565b60200260200101906001600160a01b031690816001600160a01b03168152505061208f307f000000000000000000000000000000000000000000000000000000000000000084611261565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906120e39085905f90869030904290600401612473565b5f604051808303815f87803b1580156120fa575f80fd5b505af115801561210c573d5f803e3d5ffd5b505050505050565b5f611f4c8284612431565b5f8060408385031215612130575f80fd5b50508035926020909101359150565b5f602080835283518060208501525f5b8181101561216b5785810183015185820160400152820161214f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461125e575f80fd5b5f80604083850312156121b0575f80fd5b82356121bb8161218b565b946020939093013593505050565b801515811461125e575f80fd5b5f80604083850312156121e7575f80fd5b82356121f28161218b565b91506020830135612202816121c9565b809150509250929050565b5f805f6060848603121561221f575f80fd5b833561222a8161218b565b9250602084013561223a8161218b565b929592945050506040919091013590565b5f6020828403121561225b575f80fd5b8135611f4c8161218b565b5f60208284031215612276575f80fd5b5035919050565b5f6020828403121561228d575f80fd5b8135611f4c816121c9565b5f80604083850312156122a9575f80fd5b82356122b48161218b565b915060208301356122028161218b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610976576109766122f9565b600181811c9082168061233457607f821691505b60208210810361235257634e487b7160e01b5f52602260045260245ffd5b50919050565b8082028115828204841417610976576109766122f9565b5f8261238957634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f60208284031215612426575f80fd5b8151611f4c816121c9565b81810381811115610976576109766122f9565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612468575f80fd5b8151611f4c8161218b565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156124c35784516001600160a01b03168352938301939183019160010161249e565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122024b365524746575777be9445cc9c913aa646ae19a90550b8b9162ac94aa0f9c464736f6c63430008180033

Deployed Bytecode

0x60806040526004361061028e575f3560e01c8063751039fc11610155578063bae14e1d116100be578063cff16b2f11610078578063cff16b2f146107ba578063d57052a9146107cf578063d85ba063146107ee578063dd62ed3e14610803578063e4a1b95f14610847578063f2fde38b1461085c575f80fd5b8063bae14e1d1461070a578063bbc0c74214610729578063c024666814610749578063c04a541414610768578063c816841b14610787578063c9567bf9146107a6575f80fd5b80639fccce321161010f5780639fccce3214610646578063a0d82dc51461065b578063a457c2d714610670578063a72905a21461068f578063a781dc35146106bd578063a9059cbb146106eb575f80fd5b8063751039fc146105ae57806375f0a874146105c25780638da5cb5b146105e1578063924de9b7146105fe57806395d89b411461061d5780639c3b4fdc14610631575f80fd5b80634a62bb65116101f75780636ddd1713116101b15780636ddd1713146104c75780636e1b6cda146104e757806370a08231146104fc578063715018a6146105305780637328afae14610544578063735de9f714610563575f80fd5b80634a62bb65146104075780634fbee19314610427578063655ec6391461045557806366ca9b831461047457806368092bd9146104935780636a486a8e146104b2575f80fd5b806323b872dd1161024857806323b872dd146103655780632d99d32e14610384578063313ce567146103a357806335b5fb63146103be57806337da26ca146103d357806339509351146103e8575f80fd5b806302dbd8f81461029957806306fdde03146102ba578063095ea7b3146102e45780630e14852d1461031357806318160ddd146103325780631f7ea8da14610350575f80fd5b3661029557005b5f80fd5b3480156102a4575f80fd5b506102b86102b336600461211f565b61087b565b005b3480156102c5575f80fd5b506102ce6108d7565b6040516102db919061213f565b60405180910390f35b3480156102ef575f80fd5b506103036102fe36600461219f565b610966565b60405190151581526020016102db565b34801561031e575f80fd5b506102b861032d3660046121d6565b61097c565b34801561033d575f80fd5b506002545b6040519081526020016102db565b34801561035b575f80fd5b5061034260125481565b348015610370575f80fd5b5061030361037f36600461220d565b6109d0565b34801561038f575f80fd5b506102b861039e3660046121d6565b610a78565b3480156103ae575f80fd5b50604051601281526020016102db565b3480156103c9575f80fd5b5061034260105481565b3480156103de575f80fd5b50610342600b5481565b3480156103f3575f80fd5b5061030361040236600461219f565b610b3b565b348015610412575f80fd5b5060085461030390600160b01b900460ff1681565b348015610432575f80fd5b5061030361044136600461224b565b60166020525f908152604090205460ff1681565b348015610460575f80fd5b506102b861046f366004612266565b610b76565b34801561047f575f80fd5b506102b861048e36600461211f565b610c58565b34801561049e575f80fd5b506102b86104ad3660046121d6565b610ca7565b3480156104bd575f80fd5b50610342600f5481565b3480156104d2575f80fd5b5060085461030390600160a81b900460ff1681565b3480156104f2575f80fd5b50610342600a5481565b348015610507575f80fd5b5061034261051636600461224b565b6001600160a01b03165f9081526003602052604090205490565b34801561053b575f80fd5b506102b8610cfb565b34801561054f575f80fd5b5061030361055e366004612266565b610d30565b34801561056e575f80fd5b506105967f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102db565b3480156105b9575f80fd5b50610303610e81565b3480156105cd575f80fd5b50600754610596906001600160a01b031681565b3480156105ec575f80fd5b506005546001600160a01b0316610596565b348015610609575f80fd5b506102b861061836600461227d565b610ec0565b348015610628575f80fd5b506102ce610f08565b34801561063c575f80fd5b50610342600e5481565b348015610651575f80fd5b5061034260135481565b348015610666575f80fd5b5061034260115481565b34801561067b575f80fd5b5061030361068a36600461219f565b610f17565b34801561069a575f80fd5b506103036106a936600461224b565b60186020525f908152604090205460ff1681565b3480156106c8575f80fd5b506103036106d736600461224b565b60176020525f908152604090205460ff1681565b3480156106f6575f80fd5b5061030361070536600461219f565b610faf565b348015610715575f80fd5b506102b861072436600461224b565b610fbb565b348015610734575f80fd5b5060085461030390600160a01b900460ff1681565b348015610754575f80fd5b506102b86107633660046121d6565b611054565b348015610773575f80fd5b50600854610596906001600160a01b031681565b348015610792575f80fd5b50600654610596906001600160a01b031681565b3480156107b1575f80fd5b506102b86110a8565b3480156107c5575f80fd5b5061034260095481565b3480156107da575f80fd5b506102b86107e9366004612266565b6110e9565b3480156107f9575f80fd5b50610342600c5481565b34801561080e575f80fd5b5061034261081d366004612298565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610852575f80fd5b50610342600d5481565b348015610867575f80fd5b506102b861087636600461224b565b6111c6565b6005546001600160a01b031633146108ae5760405162461bcd60e51b81526004016108a5906122c4565b60405180910390fd5b601082905560118190556108c2818361230d565b600f819055606310156108d3575f80fd5b5050565b60605f80546108e590612320565b80601f016020809104026020016040519081016040528092919081815260200182805461091190612320565b801561095c5780601f106109335761010080835404028352916020019161095c565b820191905f5260205f20905b81548152906001019060200180831161093f57829003601f168201915b5050505050905090565b5f610972338484611261565b5060015b92915050565b6005546001600160a01b031633146109a65760405162461bcd60e51b81526004016108a5906122c4565b6001600160a01b03919091165f908152601760205260409020805460ff1916911515919091179055565b5f6109dc848484611384565b6001600160a01b0384165f90815260046020908152604080832033845290915290205482811015610a605760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108a5565b610a6d8533858403611261565b506001949350505050565b6005546001600160a01b03163314610aa25760405162461bcd60e51b81526004016108a5906122c4565b6006546001600160a01b0390811690831603610b115760405162461bcd60e51b815260206004820152602860248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d20604482015267616d6d506169727360c01b60648201526084016108a5565b6001600160a01b03919091165f908152601860205260409020805460ff1916911515919091179055565b335f8181526004602090815260408083206001600160a01b03871684529091528120549091610972918590610b7190869061230d565b611261565b6005546001600160a01b03163314610ba05760405162461bcd60e51b81526004016108a5906122c4565b670de0b6b3a76400006103e8610bb560025490565b610bc0906001612358565b610bca919061236f565b610bd4919061236f565b811015610c405760405162461bcd60e51b815260206004820152603460248201527f43616e6e6f7420736574206d6178696d756d5472616e73616374696f6e416c6c6044820152736f776564206c6f776572207468616e20302e312560601b60648201526084016108a5565b610c5281670de0b6b3a7640000612358565b60095550565b6005546001600160a01b03163314610c825760405162461bcd60e51b81526004016108a5906122c4565b600d829055600e819055610c96818361230d565b600c819055606310156108d3575f80fd5b6005546001600160a01b03163314610cd15760405162461bcd60e51b81526004016108a5906122c4565b6001600160a01b03919091165f908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d255760405162461bcd60e51b81526004016108a5906122c4565b610d2e5f611c55565b565b6005545f906001600160a01b03163314610d5c5760405162461bcd60e51b81526004016108a5906122c4565b620186a0610d6960025490565b610d74906001612358565b610d7e919061236f565b821015610deb5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016108a5565b6103e8610df760025490565b610e02906005612358565b610e0c919061236f565b821115610e785760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b60648201526084016108a5565b50600a55600190565b6005545f906001600160a01b03163314610ead5760405162461bcd60e51b81526004016108a5906122c4565b506008805460ff60b01b19169055600190565b6005546001600160a01b03163314610eea5760405162461bcd60e51b81526004016108a5906122c4565b60088054911515600160a81b0260ff60a81b19909216919091179055565b6060600180546108e590612320565b335f9081526004602090815260408083206001600160a01b038616845290915281205482811015610f985760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108a5565b610fa53385858403611261565b5060019392505050565b5f610972338484611384565b6005546001600160a01b03163314610fe55760405162461bcd60e51b81526004016108a5906122c4565b6001600160a01b0381166110325760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21030b73a3496b23930b4b732b960611b60448201526064016108a5565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461107e5760405162461bcd60e51b81526004016108a5906122c4565b6001600160a01b03919091165f908152601660205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110d25760405162461bcd60e51b81526004016108a5906122c4565b6008805461ffff60a01b191661010160a01b179055565b6005546001600160a01b031633146111135760405162461bcd60e51b81526004016108a5906122c4565b670de0b6b3a76400006103e861112860025490565b611133906005612358565b61113d919061236f565b611147919061236f565b8110156111ae5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d6178696d756d57616c6c6574416c6c6f7765642060448201526e6c6f776572207468616e20302e352560881b60648201526084016108a5565b6111c081670de0b6b3a7640000612358565b600b5550565b6005546001600160a01b031633146111f05760405162461bcd60e51b81526004016108a5906122c4565b6001600160a01b0381166112555760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a5565b61125e81611c55565b50565b6001600160a01b0383166112c35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a5565b6001600160a01b0382166113245760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a5565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166113aa5760405162461bcd60e51b81526004016108a59061238e565b6001600160a01b0382166113d05760405162461bcd60e51b81526004016108a5906123d3565b6001600160a01b0383165f9081526015602052604090205460ff161561142c5760405162461bcd60e51b815260206004820152601160248201527016d99c9bdb5748189b1858dac81b1a5cdd607a1b60448201526064016108a5565b6001600160a01b0382165f9081526015602052604090205460ff16156114865760405162461bcd60e51b815260206004820152600f60248201526e16dd1bd748189b1858dac81b1a5cdd608a1b60448201526064016108a5565b805f0361149d5761149883835f611ca6565b505050565b600854600160b01b900460ff1615611822576005546001600160a01b038481169116148015906114db57506005546001600160a01b03838116911614155b80156114ef57506001600160a01b03821615155b801561150657506001600160a01b03821661dead14155b801561151c5750601454600160a01b900460ff16155b1561182257600854600160a01b900460ff166115b4576001600160a01b0383165f9081526016602052604090205460ff168061156f57506001600160a01b0382165f9081526016602052604090205460ff165b6115b45760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108a5565b6001600160a01b0383165f9081526018602052604090205460ff1680156115f357506001600160a01b0382165f9081526017602052604090205460ff16155b156116de576009548111156116705760405162461bcd60e51b815260206004820152603a60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f6d6178696d756d5472616e73616374696f6e416c6c6f7765642e00000000000060648201526084016108a5565b600b546001600160a01b0383165f90815260036020526040902054611695908361230d565b11156116d95760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108a5565b611822565b6001600160a01b0382165f9081526018602052604090205460ff16801561171d57506001600160a01b0383165f9081526017602052604090205460ff16155b1561179a576009548111156116d95760405162461bcd60e51b815260206004820152603b60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d6178696d756d5472616e73616374696f6e416c6c6f7765642e000000000060648201526084016108a5565b6001600160a01b0382165f9081526017602052604090205460ff1661182257600b546001600160a01b0383165f908152600360205260409020546117de908361230d565b11156118225760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108a5565b6014546001600160a01b0316158015906118a15750601454604051639015d37160e01b81523060048201526001600160a01b0390911690639015d37190602401602060405180830381865afa15801561187d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118a19190612416565b1561198f57601454600654600b54600954600a5460405163288149ff60e21b81526001600160a01b038981166004830152888116602483015294851660448201526064810193909352608483019190915260a48201525f92919091169063a20527fc9060c4016020604051808303815f875af1158015611923573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119479190612416565b90508061198d5760405162461bcd60e51b8152602060048201526014602482015273105b9d1a48111c985a5b995c88115b98589b195960621b60448201526064016108a5565b505b305f90815260036020526040902054600a54811080159081906119bb5750600854600160a81b900460ff165b80156119d15750601454600160a01b900460ff16155b80156119f557506001600160a01b0385165f9081526018602052604090205460ff16155b8015611a1957506001600160a01b0385165f9081526016602052604090205460ff16155b8015611a3d57506001600160a01b0384165f9081526016602052604090205460ff16155b15611a6b576014805460ff60a01b1916600160a01b179055611a5d611df9565b6014805460ff60a01b191690555b6014546001600160a01b0386165f9081526016602052604090205460ff600160a01b909204821615911680611ab757506001600160a01b0385165f9081526016602052604090205460ff165b15611abf57505f5b5f8115611c41576001600160a01b0386165f9081526018602052604090205460ff168015611aee57505f600f54115b15611b7a57611b136064611b0d600f5488611f4190919063ffffffff16565b90611f53565b9050600f5460115482611b269190612358565b611b30919061236f565b60135f828254611b40919061230d565b9091555050600f54601054611b559083612358565b611b5f919061236f565b60125f828254611b6f919061230d565b90915550611c239050565b6001600160a01b0387165f9081526018602052604090205460ff168015611ba257505f600c54115b15611c2357611bc16064611b0d600c5488611f4190919063ffffffff16565b9050600c54600e5482611bd49190612358565b611bde919061236f565b60135f828254611bee919061230d565b9091555050600c54600d54611c039083612358565b611c0d919061236f565b60125f828254611c1d919061230d565b90915550505b8015611c3457611c34873083611ca6565b611c3e8186612431565b94505b611c4c878787611ca6565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038316611ccc5760405162461bcd60e51b81526004016108a59061238e565b6001600160a01b038216611cf25760405162461bcd60e51b81526004016108a5906123d3565b6001600160a01b0383165f9081526003602052604090205481811015611d695760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108a5565b6001600160a01b038085165f90815260036020526040808220858503905591851681529081208054849290611d9f90849061230d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611deb91815260200190565b60405180910390a350505050565b305f9081526003602052604081205490505f601354601254611e1b919061230d565b90505f821580611e29575081155b15611e3357505050565b600a54611e41906014612358565b831115611e5957600a54611e56906014612358565b92505b47611e6384611f5e565b5f611e6e4783612114565b90505f611e8a85611b0d60135485611f4190919063ffffffff16565b5f601281905560138190556008546040519293506001600160a01b031691839181818185875af1925050503d805f8114611edf576040519150601f19603f3d011682016040523d82523d5f602084013e611ee4565b606091505b50506007546040519195506001600160a01b03169047905f81818185875af1925050503d805f8114611f31576040519150601f19603f3d011682016040523d82523d5f602084013e611f36565b606091505b505050505050505050565b5f611f4c8284612358565b9392505050565b5f611f4c828461236f565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611f9157611f91612444565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561200d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120319190612458565b8160018151811061204457612044612444565b60200260200101906001600160a01b031690816001600160a01b03168152505061208f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611261565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906120e39085905f90869030904290600401612473565b5f604051808303815f87803b1580156120fa575f80fd5b505af115801561210c573d5f803e3d5ffd5b505050505050565b5f611f4c8284612431565b5f8060408385031215612130575f80fd5b50508035926020909101359150565b5f602080835283518060208501525f5b8181101561216b5785810183015185820160400152820161214f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461125e575f80fd5b5f80604083850312156121b0575f80fd5b82356121bb8161218b565b946020939093013593505050565b801515811461125e575f80fd5b5f80604083850312156121e7575f80fd5b82356121f28161218b565b91506020830135612202816121c9565b809150509250929050565b5f805f6060848603121561221f575f80fd5b833561222a8161218b565b9250602084013561223a8161218b565b929592945050506040919091013590565b5f6020828403121561225b575f80fd5b8135611f4c8161218b565b5f60208284031215612276575f80fd5b5035919050565b5f6020828403121561228d575f80fd5b8135611f4c816121c9565b5f80604083850312156122a9575f80fd5b82356122b48161218b565b915060208301356122028161218b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610976576109766122f9565b600181811c9082168061233457607f821691505b60208210810361235257634e487b7160e01b5f52602260045260245ffd5b50919050565b8082028115828204841417610976576109766122f9565b5f8261238957634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f60208284031215612426575f80fd5b8151611f4c816121c9565b81810381811115610976576109766122f9565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612468575f80fd5b8151611f4c8161218b565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156124c35784516001600160a01b03168352938301939183019160010161249e565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122024b365524746575777be9445cc9c913aa646ae19a90550b8b9162ac94aa0f9c464736f6c63430008180033

Deployed Bytecode Sourcemap

15267:10112:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19796:256;;;;;;;;;;-1:-1:-1;19796:256:0;;;;;:::i;:::-;;:::i;:::-;;10633:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11364:169;;;;;;;;;;-1:-1:-1;11364:169:0;;;;;:::i;:::-;;:::i;:::-;;;1441:14:1;;1434:22;1416:41;;1404:2;1389:18;11364:169:0;1276:187:1;18081:158:0;;;;;;;;;;-1:-1:-1;18081:158:0;;;;;:::i;:::-;;:::i;10954:108::-;;;;;;;;;;-1:-1:-1;11042:12:0;;10954:108;;;2124:25:1;;;2112:2;2097:18;10954:108:0;1978:177:1;15970:30:0;;;;;;;;;;;;;;;;11724:492;;;;;;;;;;-1:-1:-1;11724:492:0;;;;;:::i;:::-;;:::i;20260:189::-;;;;;;;;;;-1:-1:-1;20260:189:0;;;;;:::i;:::-;;:::i;10853:93::-;;;;;;;;;;-1:-1:-1;10853:93:0;;10936:2;2763:36:1;;2751:2;2736:18;10853:93:0;2621:184:1;15901:28:0;;;;;;;;;;;;;;;;15721:35;;;;;;;;;;;;;;;;12224:215;;;;;;;;;;-1:-1:-1;12224:215:0;;;;;:::i;:::-;;:::i;15593:33::-;;;;;;;;;;-1:-1:-1;15593:33:0;;;;-1:-1:-1;;;15593:33:0;;;;;;16158:50;;;;;;;;;;-1:-1:-1;16158:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19270:261;;;;;;;;;;-1:-1:-1;19270:261:0;;;;;:::i;:::-;;:::i;19539:249::-;;;;;;;;;;-1:-1:-1;19539:249:0;;;;;:::i;:::-;;:::i;20457:113::-;;;;;;;;;;-1:-1:-1;20457:113:0;;;;;:::i;:::-;;:::i;15866:28::-;;;;;;;;;;;;;;;;15555:31;;;;;;;;;;-1:-1:-1;15555:31:0;;;;-1:-1:-1;;;15555:31:0;;;;;;15682:32;;;;;;;;;;;;;;;;11070:127;;;;;;;;;;-1:-1:-1;11070:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;11171:18:0;11144:7;11171:18;;;:9;:18;;;;;;;11070:127;886:103;;;;;;;;;;;;;:::i;18873:389::-;;;;;;;;;;-1:-1:-1;18873:389:0;;;;;:::i;:::-;;:::i;15346:49::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3437:32:1;;;3419:51;;3407:2;3392:18;15346:49:0;3247:229:1;18382:121:0;;;;;;;;;;;;;:::i;15437:30::-;;;;;;;;;;-1:-1:-1;15437:30:0;;;;-1:-1:-1;;;;;15437:30:0;;;663:87;;;;;;;;;;-1:-1:-1;736:6:0;;-1:-1:-1;;;;;736:6:0;663:87;;18511:100;;;;;;;;;;-1:-1:-1;18511:100:0;;;;;:::i;:::-;;:::i;10741:104::-;;;;;;;;;;;;;:::i;15833:24::-;;;;;;;;;;;;;;;;16007:27;;;;;;;;;;;;;;;;15936:25;;;;;;;;;;;;;;;;12447:413;;;;;;;;;;-1:-1:-1;12447:413:0;;;;;:::i;:::-;;:::i;16290:40::-;;;;;;;;;;-1:-1:-1;16290:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16215:66;;;;;;;;;;-1:-1:-1;16215:66:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11541:175;;;;;;;;;;-1:-1:-1;11541:175:0;;;;;:::i;:::-;;:::i;20064:188::-;;;;;;;;;;-1:-1:-1;20064:188:0;;;;;:::i;:::-;;:::i;15515:33::-;;;;;;;;;;-1:-1:-1;15515:33:0;;;;-1:-1:-1;;;15515:33:0;;;;;;18247:127;;;;;;;;;;-1:-1:-1;18247:127:0;;;;;:::i;:::-;;:::i;15474:32::-;;;;;;;;;;-1:-1:-1;15474:32:0;;;;-1:-1:-1;;;;;15474:32:0;;;15402:26;;;;;;;;;;-1:-1:-1;15402:26:0;;;;-1:-1:-1;;;;;15402:26:0;;;17963:110;;;;;;;;;;;;;:::i;15635:40::-;;;;;;;;;;;;;;;;18619:246;;;;;;;;;;-1:-1:-1;18619:246:0;;;;;:::i;:::-;;:::i;15765:27::-;;;;;;;;;;;;;;;;11205:151;;;;;;;;;;-1:-1:-1;11205:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;11321:18:0;;;11294:7;11321:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11205:151;15799:27;;;;;;;;;;;;;;;;997:201;;;;;;;;;;-1:-1:-1;997:201:0;;;;;:::i;:::-;;:::i;19796:256::-;736:6;;-1:-1:-1;;;;;736:6:0;289:10;798:23;790:68;;;;-1:-1:-1;;;790:68:0;;;;;;;:::i;:::-;;;;;;;;;19891:13:::1;:28:::0;;;19930:10:::1;:22:::0;;;19979:26:::1;19943:9:::0;19907:12;19979:26:::1;:::i;:::-;19963:13;:42:::0;;;20041:2:::1;-1:-1:-1::0;20024:19:0::1;20016:28;;;::::0;::::1;;19796:256:::0;;:::o;10633:100::-;10687:13;10720:5;10713:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10633:100;:::o;11364:169::-;11447:4;11464:39;289:10;11487:7;11496:6;11464:8;:39::i;:::-;-1:-1:-1;11521:4:0;11364:169;;;;;:::o;18081:158::-;736:6;;-1:-1:-1;;;;;736:6:0;289:10;798:23;790:68;;;;-1:-1:-1;;;790:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18183:40:0;;;::::1;;::::0;;;:34:::1;:40;::::0;;;;:48;;-1:-1:-1;;18183:48:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18081:158::o;11724:492::-;11864:4;11881:36;11891:6;11899:9;11910:6;11881:9;:36::i;:::-;-1:-1:-1;;;;;11957:19:0;;11930:24;11957:19;;;:11;:19;;;;;;;;289:10;11957:33;;;;;;;;12009:26;;;;12001:79;;;;-1:-1:-1;;;12001:79:0;;5538:2:1;12001:79:0;;;5520:21:1;5577:2;5557:18;;;5550:30;5616:34;5596:18;;;5589:62;-1:-1:-1;;;5667:18:1;;;5660:38;5715:19;;12001:79:0;5336:404:1;12001:79:0;12116:57;12125:6;289:10;12166:6;12147:16;:25;12116:8;:57::i;:::-;-1:-1:-1;12204:4:0;;11724:492;-1:-1:-1;;;;11724:492:0:o;20260:189::-;736:6;;-1:-1:-1;;;;;736:6:0;289:10;798:23;790:68;;;;-1:-1:-1;;;790:68:0;;;;;;;:::i;:::-;20352:11:::1;::::0;-1:-1:-1;;;;;20352:11:0;;::::1;20344:19:::0;;::::1;::::0;20336:72:::1;;;::::0;-1:-1:-1;;;20336:72:0;;5947:2:1;20336:72:0::1;::::0;::::1;5929:21:1::0;5986:2;5966:18;;;5959:30;6025:34;6005:18;;;5998:62;-1:-1:-1;;;6076:18:1;;;6069:38;6124:19;;20336:72:0::1;5745:404:1::0;20336:72:0::1;-1:-1:-1::0;;;;;20419:14:0;;;::::1;;::::0;;;:8:::1;:14;::::0;;;;:22;;-1:-1:-1;;20419:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20260:189::o;12224:215::-;289:10;12312:4;12361:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12361:34:0;;;;;;;;;;12312:4;;12329:80;;12352:7;;12361:47;;12398:10;;12361:47;:::i;:::-;12329:8;:80::i;19270:261::-;736:6;;-1:-1:-1;;;;;736:6:0;289:10;798:23;790:68;;;;-1:-1:-1;;;790:68:0;;;;;;;:::i;:::-;19406:4:::1;19398;19377:13;11042:12:::0;;;10954:108;19377:13:::1;:17;::::0;19393:1:::1;19377:17;:::i;:::-;19376:26;;;;:::i;:::-;19375:35;;;;:::i;:::-;19365:6;:45;;19357:110;;;::::0;-1:-1:-1;;;19357:110:0;;6751:2:1;19357:110:0::1;::::0;::::1;6733:21:1::0;6790:2;6770:18;;;6763:30;6829:34;6809:18;;;6802:62;-1:-1:-1;;;6880:18:1;;;6873:50;6940:19;;19357:110:0::1;6549:416:1::0;19357:110:0::1;19506:17;:6:::0;19516::::1;19506:17;:::i;:::-;19478:25;:45:::0;-1:-1:-1;19270:261:0:o;19539:249::-;736:6;;-1:-1:-1;;;;;736:6:0;289:10;798:23;790:68;;;;-1:-1:-1;;;790:68:0;;;;;;;:::i;:::-;19633:12:::1;:27:::0;;;19671:9:::1;:21:::0;;;19718:24:::1;19683:9:::0;19648:12;19718:24:::1;:::i;:::-;19703:12;:39:::0;;;19777:2:::1;-1:-1:-1::0;19761:18:0::1;19753:27;;;::::0;::::1;20457:113:::0;736:6;;-1:-1:-1;;;;;736:6:0;289:10;798:23;790:68;;;;-1:-1:-1;;;790:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20536:17:0;;;::::1;;::::0;;;:11:::1;:17;::::0;;;;:26;;-1:-1:-1;;20536:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20457:113::o;886:103::-;736:6;;-1:-1:-1;;;;;736:6:0;289:10;798:23;790:68;;;;-1:-1:-1;;;790:68:0;;;;;;;:::i;:::-;951:30:::1;978:1;951:18;:30::i;:::-;886:103::o:0;18873:389::-;736:6;;18953:4;;-1:-1:-1;;;;;736:6:0;289:10;798:23;790:68;;;;-1:-1:-1;;;790:68:0;;;;;;;:::i;:::-;19013:6:::1;18992:13;11042:12:::0;;;10954:108;18992:13:::1;:17;::::0;19008:1:::1;18992:17;:::i;:::-;18991:28;;;;:::i;:::-;18978:9;:41;;18970:107;;;::::0;-1:-1:-1;;;18970:107:0;;7172:2:1;18970:107:0::1;::::0;::::1;7154:21:1::0;7211:2;7191:18;;;7184:30;7250:34;7230:18;;;7223:62;-1:-1:-1;;;7301:18:1;;;7294:51;7362:19;;18970:107:0::1;6970:417:1::0;18970:107:0::1;19131:4;19110:13;11042:12:::0;;;10954:108;19110:13:::1;:17;::::0;19126:1:::1;19110:17;:::i;:::-;19109:26;;;;:::i;:::-;19096:9;:39;;19088:104;;;::::0;-1:-1:-1;;;19088:104:0;;7594:2:1;19088:104:0::1;::::0;::::1;7576:21:1::0;7633:2;7613:18;;;7606:30;7672:34;7652:18;;;7645:62;-1:-1:-1;;;7723:18:1;;;7716:50;7783:19;;19088:104:0::1;7392:416:1::0;19088:104:0::1;-1:-1:-1::0;19203:17:0::1;:29:::0;19250:4:::1;::::0;18873:389::o;18382:121::-;736:6;;18434:4;;-1:-1:-1;;;;;736:6:0;289:10;798:23;790:68;;;;-1:-1:-1;;;790:68:0;;;;;;;:::i;:::-;-1:-1:-1;18451:14:0::1;:22:::0;;-1:-1:-1;;;;18451:22:0::1;::::0;;;18382:121;:::o;18511:100::-;736:6;;-1:-1:-1;;;;;736:6:0;289:10;798:23;790:68;;;;-1:-1:-1;;;790:68:0;;;;;;;:::i;:::-;18582:11:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;18582:21:0::1;-1:-1:-1::0;;;;18582:21:0;;::::1;::::0;;;::::1;::::0;;18511:100::o;10741:104::-;10797:13;10830:7;10823:14;;;;;:::i;12447:413::-;289:10;12540:4;12584:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12584:34:0;;;;;;;;;;12637:35;;;;12629:85;;;;-1:-1:-1;;;12629:85:0;;8015:2:1;12629:85:0;;;7997:21:1;8054:2;8034:18;;;8027:30;8093:34;8073:18;;;8066:62;-1:-1:-1;;;8144:18:1;;;8137:35;8189:19;;12629:85:0;7813:401:1;12629:85:0;12750:67;289:10;12773:7;12801:15;12782:16;:34;12750:8;:67::i;:::-;-1:-1:-1;12848:4:0;;12447:413;-1:-1:-1;;;12447:413:0:o;11541:175::-;11627:4;11644:42;289:10;11668:9;11679:6;11644:9;:42::i;20064:188::-;736:6;;-1:-1:-1;;;;;736:6:0;289:10;798:23;790:68;;;;-1:-1:-1;;;790:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20150:30:0;::::1;20142:63;;;::::0;-1:-1:-1;;;20142:63:0;;8421:2:1;20142:63:0::1;::::0;::::1;8403:21:1::0;8460:2;8440:18;;;8433:30;-1:-1:-1;;;8479:18:1;;;8472:50;8539:18;;20142:63:0::1;8219:344:1::0;20142:63:0::1;20216:11;:28:::0;;-1:-1:-1;;;;;;20216:28:0::1;-1:-1:-1::0;;;;;20216:28:0;;;::::1;::::0;;;::::1;::::0;;20064:188::o;18247:127::-;736:6;;-1:-1:-1;;;;;736:6:0;289:10;798:23;790:68;;;;-1:-1:-1;;;790:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18331:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;18331:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18247:127::o;17963:110::-;736:6;;-1:-1:-1;;;;;736:6:0;289:10;798:23;790:68;;;;-1:-1:-1;;;790:68:0;;;;;;;:::i;:::-;18016:13:::1;:20:::0;;-1:-1:-1;;;;18047:18:0;-1:-1:-1;;;18047:18:0;;;17963:110::o;18619:246::-;736:6;;-1:-1:-1;;;;;736:6:0;289:10;798:23;790:68;;;;-1:-1:-1;;;790:68:0;;;;;;;:::i;:::-;18750:4:::1;18742;18721:13;11042:12:::0;;;10954:108;18721:13:::1;:17;::::0;18737:1:::1;18721:17;:::i;:::-;18720:26;;;;:::i;:::-;18719:35;;;;:::i;:::-;18709:6;:45;;18701:105;;;::::0;-1:-1:-1;;;18701:105:0;;8770:2:1;18701:105:0::1;::::0;::::1;8752:21:1::0;8809:2;8789:18;;;8782:30;8848:34;8828:18;;;8821:62;-1:-1:-1;;;8899:18:1;;;8892:45;8954:19;;18701:105:0::1;8568:411:1::0;18701:105:0::1;18840:17;:6:::0;18850::::1;18840:17;:::i;:::-;18817:20;:40:::0;-1:-1:-1;18619:246:0:o;997:201::-;736:6;;-1:-1:-1;;;;;736:6:0;289:10;798:23;790:68;;;;-1:-1:-1;;;790:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1086:22:0;::::1;1078:73;;;::::0;-1:-1:-1;;;1078:73:0;;9186:2:1;1078:73:0::1;::::0;::::1;9168:21:1::0;9225:2;9205:18;;;9198:30;9264:34;9244:18;;;9237:62;-1:-1:-1;;;9315:18:1;;;9308:36;9361:19;;1078:73:0::1;8984:402:1::0;1078:73:0::1;1162:28;1181:8;1162:18;:28::i;:::-;997:201:::0;:::o;13874:380::-;-1:-1:-1;;;;;14010:19:0;;14002:68;;;;-1:-1:-1;;;14002:68:0;;9593:2:1;14002:68:0;;;9575:21:1;9632:2;9612:18;;;9605:30;9671:34;9651:18;;;9644:62;-1:-1:-1;;;9722:18:1;;;9715:34;9766:19;;14002:68:0;9391:400:1;14002:68:0;-1:-1:-1;;;;;14089:21:0;;14081:68;;;;-1:-1:-1;;;14081:68:0;;9998:2:1;14081:68:0;;;9980:21:1;10037:2;10017:18;;;10010:30;10076:34;10056:18;;;10049:62;-1:-1:-1;;;10127:18:1;;;10120:32;10169:19;;14081:68:0;9796:398:1;14081:68:0;-1:-1:-1;;;;;14162:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14214:32;;2124:25:1;;;14214:32:0;;2097:18:1;14214:32:0;;;;;;;13874:380;;;:::o;21943:3318::-;-1:-1:-1;;;;;22041:18:0;;22033:68;;;;-1:-1:-1;;;22033:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22120:16:0;;22112:64;;;;-1:-1:-1;;;22112:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22196:17:0;;;;;;:11;:17;;;;;;;;22195:18;22187:48;;;;-1:-1:-1;;;22187:48:0;;11211:2:1;22187:48:0;;;11193:21:1;11250:2;11230:18;;;11223:30;-1:-1:-1;;;11269:18:1;;;11262:47;11326:18;;22187:48:0;11009:341:1;22187:48:0;-1:-1:-1;;;;;22255:15:0;;;;;;:11;:15;;;;;;;;22254:16;22246:44;;;;-1:-1:-1;;;22246:44:0;;11557:2:1;22246:44:0;;;11539:21:1;11596:2;11576:18;;;11569:30;-1:-1:-1;;;11615:18:1;;;11608:45;11670:18;;22246:44:0;11355:339:1;22246:44:0;22307:6;22317:1;22307:11;22303:93;;22335:28;22351:4;22357:2;22361:1;22335:15;:28::i;:::-;21943:3318;;;:::o;22303:93::-;22412:14;;-1:-1:-1;;;22412:14:0;;;;22408:1207;;;736:6;;-1:-1:-1;;;;;22447:15:0;;;736:6;;22447:15;;;;:49;;-1:-1:-1;736:6:0;;-1:-1:-1;;;;;22483:13:0;;;736:6;;22483:13;;22447:49;:86;;;;-1:-1:-1;;;;;;22517:16:0;;;;22447:86;:128;;;;-1:-1:-1;;;;;;22554:21:0;;22568:6;22554:21;;22447:128;:158;;;;-1:-1:-1;22597:8:0;;-1:-1:-1;;;22597:8:0;;;;22596:9;22447:158;22443:1161;;;22631:13;;-1:-1:-1;;;22631:13:0;;;;22626:148;;-1:-1:-1;;;;;22677:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;22705:22:0;;;;;;:18;:22;;;;;;;;22677:50;22669:85;;;;-1:-1:-1;;;22669:85:0;;11901:2:1;22669:85:0;;;11883:21:1;11940:2;11920:18;;;11913:30;-1:-1:-1;;;11959:18:1;;;11952:52;12021:18;;22669:85:0;11699:346:1;22669:85:0;-1:-1:-1;;;;;22826:14:0;;;;;;:8;:14;;;;;;;;:57;;;;-1:-1:-1;;;;;;22845:38:0;;;;;;:34;:38;;;;;;;;22844:39;22826:57;22822:767;;;22926:25;;22916:6;:35;;22908:106;;;;-1:-1:-1;;;22908:106:0;;12252:2:1;22908:106:0;;;12234:21:1;12291:2;12271:18;;;12264:30;12330:34;12310:18;;;12303:62;12401:28;12381:18;;;12374:56;12447:19;;22908:106:0;12050:422:1;22908:106:0;23071:20;;-1:-1:-1;;;;;11171:18:0;;11144:7;11171:18;;;:9;:18;;;;;;23045:22;;:6;:22;:::i;:::-;:46;;23037:78;;;;-1:-1:-1;;;23037:78:0;;12679:2:1;23037:78:0;;;12661:21:1;12718:2;12698:18;;;12691:30;-1:-1:-1;;;12737:18:1;;;12730:49;12796:18;;23037:78:0;12477:343:1;23037:78:0;22822:767;;;-1:-1:-1;;;;;23191:12:0;;;;;;:8;:12;;;;;;;;:57;;;;-1:-1:-1;;;;;;23208:40:0;;;;;;:34;:40;;;;;;;;23207:41;23191:57;23187:402;;;23291:25;;23281:6;:35;;23273:107;;;;-1:-1:-1;;;23273:107:0;;13027:2:1;23273:107:0;;;13009:21:1;13066:2;13046:18;;;13039:30;13105:34;13085:18;;;13078:62;13176:29;13156:18;;;13149:57;13223:19;;23273:107:0;12825:423:1;23187:402:0;-1:-1:-1;;;;;23428:38:0;;;;;;:34;:38;;;;;;;;23423:166;;23525:20;;-1:-1:-1;;;;;11171:18:0;;11144:7;11171:18;;;:9;:18;;;;;;23499:22;;:6;:22;:::i;:::-;:46;;23491:78;;;;-1:-1:-1;;;23491:78:0;;12679:2:1;23491:78:0;;;12661:21:1;12718:2;12698:18;;;12691:30;-1:-1:-1;;;12737:18:1;;;12730:49;12796:18;;23491:78:0;12477:343:1;23491:78:0;23631:11;;-1:-1:-1;;;;;23631:11:0;:25;;;;:79;;-1:-1:-1;23673:11:0;;23660:50;;-1:-1:-1;;;23660:50:0;;23704:4;23660:50;;;3419:51:1;-1:-1:-1;;;;;23673:11:0;;;;23660:35;;3392:18:1;;23660:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23627:309;;;23753:11;;23790;;23804:20;;23826:25;;23853:17;;23740:131;;-1:-1:-1;;;23740:131:0;;-1:-1:-1;;;;;13846:15:1;;;23740:131:0;;;13828:34:1;13898:15;;;13878:18;;;13871:43;23790:11:0;;;13930:18:1;;;13923:43;13982:18;;;13975:34;;;;14025:19;;;14018:35;;;;14069:19;;;14062:35;23727:10:0;;23753:11;;;;;23740:31;;13762:19:1;;23740:131:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23727:144;;23894:5;23886:38;;;;-1:-1:-1;;;23886:38:0;;14310:2:1;23886:38:0;;;14292:21:1;14349:2;14329:18;;;14322:30;-1:-1:-1;;;14368:18:1;;;14361:50;14428:18;;23886:38:0;14108:344:1;23886:38:0;23712:224;23627:309;23992:4;23948:23;11171:18;;;:9;:18;;;;;;24043:17;;24024:36;;;;;;;24075:35;;-1:-1:-1;24099:11:0;;-1:-1:-1;;;24099:11:0;;;;24075:35;:61;;;;-1:-1:-1;24128:8:0;;-1:-1:-1;;;24128:8:0;;;;24127:9;24075:61;:93;;;;-1:-1:-1;;;;;;24154:14:0;;;;;;:8;:14;;;;;;;;24153:15;24075:93;:135;;;;-1:-1:-1;;;;;;24186:24:0;;;;;;:18;:24;;;;;;;;24185:25;24075:135;:175;;;;-1:-1:-1;;;;;;24228:22:0;;;;;;:18;:22;;;;;;;;24227:23;24075:175;24071:281;;;24269:8;:15;;-1:-1:-1;;;;24269:15:0;-1:-1:-1;;;24269:15:0;;;24299:10;:8;:10::i;:::-;24324:8;:16;;-1:-1:-1;;;;24324:16:0;;;24071:281;24380:8;;-1:-1:-1;;;;;24403:24:0;;24364:12;24403:24;;;:18;:24;;;;;;24380:8;-1:-1:-1;;;24380:8:0;;;;;24379:9;;24403:24;;:50;;-1:-1:-1;;;;;;24431:22:0;;;;;;:18;:22;;;;;;;;24403:50;24399:84;;;-1:-1:-1;24478:5:0;24399:84;24496:11;24526:7;24522:688;;;-1:-1:-1;;;;;24554:12:0;;;;;;:8;:12;;;;;;;;:33;;;;;24586:1;24570:13;;:17;24554:33;24550:531;;;24614:34;24644:3;24614:25;24625:13;;24614:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;24608:40;;24704:13;;24690:10;;24684:3;:16;;;;:::i;:::-;24683:34;;;;:::i;:::-;24667:12;;:50;;;;;;;:::i;:::-;;;;-1:-1:-1;;24779:13:0;;24762;;24756:19;;:3;:19;:::i;:::-;24755:37;;;;:::i;:::-;24736:15;;:56;;;;;;;:::i;:::-;;;;-1:-1:-1;24550:531:0;;-1:-1:-1;24550:531:0;;-1:-1:-1;;;;;24831:14:0;;;;;;:8;:14;;;;;;;;:34;;;;;24864:1;24849:12;;:16;24831:34;24827:254;;;24892:33;24921:3;24892:24;24903:12;;24892:6;:10;;:24;;;;:::i;:33::-;24886:39;;24980:12;;24967:9;;24961:3;:15;;;;:::i;:::-;24960:32;;;;:::i;:::-;24944:12;;:48;;;;;;;:::i;:::-;;;;-1:-1:-1;;25053:12:0;;25037;;25031:18;;:3;:18;:::i;:::-;25030:35;;;;:::i;:::-;25011:15;;:54;;;;;;;:::i;:::-;;;;-1:-1:-1;;24827:254:0;25101:7;;25097:71;;25127:41;25143:4;25157;25164:3;25127:15;:41::i;:::-;25185:13;25195:3;25185:13;;:::i;:::-;;;24522:688;25220:33;25236:4;25242:2;25246:6;25220:15;:33::i;:::-;22022:3239;;;;21943:3318;;;:::o;1206:191::-;1299:6;;;-1:-1:-1;;;;;1316:17:0;;;-1:-1:-1;;;;;;1316:17:0;;;;;;;1349:40;;1299:6;;;1316:17;1299:6;;1349:40;;1280:16;;1349:40;1269:128;1206:191;:::o;14262:733::-;-1:-1:-1;;;;;14402:20:0;;14394:70;;;;-1:-1:-1;;;14394:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14483:23:0;;14475:71;;;;-1:-1:-1;;;14475:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14643:17:0;;14619:21;14643:17;;;:9;:17;;;;;;14679:23;;;;14671:74;;;;-1:-1:-1;;;14671:74:0;;14792:2:1;14671:74:0;;;14774:21:1;14831:2;14811:18;;;14804:30;14870:34;14850:18;;;14843:62;-1:-1:-1;;;14921:18:1;;;14914:36;14967:19;;14671:74:0;14590:402:1;14671:74:0;-1:-1:-1;;;;;14781:17:0;;;;;;;:9;:17;;;;;;14801:22;;;14781:42;;14845:20;;;;;;;;:30;;14817:6;;14781:17;14845:30;;14817:6;;14845:30;:::i;:::-;;;;;;;;14910:9;-1:-1:-1;;;;;14893:35:0;14902:6;-1:-1:-1;;;;;14893:35:0;;14921:6;14893:35;;;;2124:25:1;;2112:2;2097:18;;1978:177;14893:35:0;;;;;;;;14383:612;14262:733;;;:::o;20578:880::-;20661:4;20617:23;11171:18;;;:9;:18;;;;;;20617:50;;20678:25;20724:12;;20706:15;;:30;;;;:::i;:::-;20678:58;-1:-1:-1;20747:12:0;20776:20;;;:46;;-1:-1:-1;20800:22:0;;20776:46;20772:72;;;20837:7;;;20578:880::o;20772:72::-;20878:17;;:22;;20898:2;20878:22;:::i;:::-;20860:15;:40;20856:99;;;20933:17;;:22;;20953:2;20933:22;:::i;:::-;20915:40;;20856:99;20996:21;21028:33;21045:15;21028:16;:33::i;:::-;21074:18;21095:44;:21;21121:17;21095:25;:44::i;:::-;21074:65;;21150:17;21170:51;21203:17;21170:28;21185:12;;21170:10;:14;;:28;;;;:::i;:51::-;21252:1;21234:15;:19;;;21264:12;:16;;;21315:17;;21307:53;;21150:71;;-1:-1:-1;;;;;;21315:17:0;;21150:71;;21307:53;21252:1;21307:53;21150:71;21315:17;21307:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21393:15:0;;21385:65;;21293:67;;-1:-1:-1;;;;;;21393:15:0;;21423:21;;21385:65;;;;21423:21;21393:15;21385:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;20578:880:0:o;2756:98::-;2814:7;2841:5;2845:1;2841;:5;:::i;:::-;2834:12;2756:98;-1:-1:-1;;;2756:98:0:o;2862:::-;2920:7;2947:5;2951:1;2947;:5;:::i;21466:469::-;21556:16;;;21570:1;21556:16;;;;;;;;21532:21;;21556:16;;;;;;;;;;-1:-1:-1;21556:16:0;21532:40;;21601:4;21583;21588:1;21583:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;21583:23:0;;;-1:-1:-1;;;;;21583:23:0;;;;;21627:13;-1:-1:-1;;;;;21627:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21617:4;21622:1;21617:7;;;;;;;;:::i;:::-;;;;;;:30;-1:-1:-1;;;;;21617:30:0;;;-1:-1:-1;;;;;21617:30:0;;;;;21660:60;21677:4;21692:13;21708:11;21660:8;:60::i;:::-;21733:194;;-1:-1:-1;;;21733:194:0;;-1:-1:-1;;;;;21733:13:0;:64;;;;:194;;21812:11;;21838:1;;21854:4;;21881;;21901:15;;21733:194;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21521:414;21466:469;:::o;2650:98::-;2708:7;2735:5;2739:1;2735;:5;:::i;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:548::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;551:3;736:1;731:2;722:6;711:9;707:22;703:31;696:42;806:2;799;795:7;790:2;782:6;778:15;774:29;763:9;759:45;755:54;747:62;;;;267:548;;;;:::o;820:131::-;-1:-1:-1;;;;;895:31:1;;885:42;;875:70;;941:1;938;931:12;956:315;1024:6;1032;1085:2;1073:9;1064:7;1060:23;1056:32;1053:52;;;1101:1;1098;1091:12;1053:52;1140:9;1127:23;1159:31;1184:5;1159:31;:::i;:::-;1209:5;1261:2;1246:18;;;;1233:32;;-1:-1:-1;;;956:315:1:o;1468:118::-;1554:5;1547:13;1540:21;1533:5;1530:32;1520:60;;1576:1;1573;1566:12;1591:382;1656:6;1664;1717:2;1705:9;1696:7;1692:23;1688:32;1685:52;;;1733:1;1730;1723:12;1685:52;1772:9;1759:23;1791:31;1816:5;1791:31;:::i;:::-;1841:5;-1:-1:-1;1898:2:1;1883:18;;1870:32;1911:30;1870:32;1911:30;:::i;:::-;1960:7;1950:17;;;1591:382;;;;;:::o;2160:456::-;2237:6;2245;2253;2306:2;2294:9;2285:7;2281:23;2277:32;2274:52;;;2322:1;2319;2312:12;2274:52;2361:9;2348:23;2380:31;2405:5;2380:31;:::i;:::-;2430:5;-1:-1:-1;2487:2:1;2472:18;;2459:32;2500:33;2459:32;2500:33;:::i;:::-;2160:456;;2552:7;;-1:-1:-1;;;2606:2:1;2591:18;;;;2578:32;;2160:456::o;2810:247::-;2869:6;2922:2;2910:9;2901:7;2897:23;2893:32;2890:52;;;2938:1;2935;2928:12;2890:52;2977:9;2964:23;2996:31;3021:5;2996:31;:::i;3062:180::-;3121:6;3174:2;3162:9;3153:7;3149:23;3145:32;3142:52;;;3190:1;3187;3180:12;3142:52;-1:-1:-1;3213:23:1;;3062:180;-1:-1:-1;3062:180:1:o;3689:241::-;3745:6;3798:2;3786:9;3777:7;3773:23;3769:32;3766:52;;;3814:1;3811;3804:12;3766:52;3853:9;3840:23;3872:28;3894:5;3872:28;:::i;3935:388::-;4003:6;4011;4064:2;4052:9;4043:7;4039:23;4035:32;4032:52;;;4080:1;4077;4070:12;4032:52;4119:9;4106:23;4138:31;4163:5;4138:31;:::i;:::-;4188:5;-1:-1:-1;4245:2:1;4230:18;;4217:32;4258:33;4217:32;4258:33;:::i;4328:356::-;4530:2;4512:21;;;4549:18;;;4542:30;4608:34;4603:2;4588:18;;4581:62;4675:2;4660:18;;4328:356::o;4689:127::-;4750:10;4745:3;4741:20;4738:1;4731:31;4781:4;4778:1;4771:15;4805:4;4802:1;4795:15;4821:125;4886:9;;;4907:10;;;4904:36;;;4920:18;;:::i;4951:380::-;5030:1;5026:12;;;;5073;;;5094:61;;5148:4;5140:6;5136:17;5126:27;;5094:61;5201:2;5193:6;5190:14;5170:18;5167:38;5164:161;;5247:10;5242:3;5238:20;5235:1;5228:31;5282:4;5279:1;5272:15;5310:4;5307:1;5300:15;5164:161;;4951:380;;;:::o;6154:168::-;6227:9;;;6258;;6275:15;;;6269:22;;6255:37;6245:71;;6296:18;;:::i;6327:217::-;6367:1;6393;6383:132;;6437:10;6432:3;6428:20;6425:1;6418:31;6472:4;6469:1;6462:15;6500:4;6497:1;6490:15;6383:132;-1:-1:-1;6529:9:1;;6327:217::o;10199:401::-;10401:2;10383:21;;;10440:2;10420:18;;;10413:30;10479:34;10474:2;10459:18;;10452:62;-1:-1:-1;;;10545:2:1;10530:18;;10523:35;10590:3;10575:19;;10199:401::o;10605:399::-;10807:2;10789:21;;;10846:2;10826:18;;;10819:30;10885:34;10880:2;10865:18;;10858:62;-1:-1:-1;;;10951:2:1;10936:18;;10929:33;10994:3;10979:19;;10605:399::o;13253:245::-;13320:6;13373:2;13361:9;13352:7;13348:23;13344:32;13341:52;;;13389:1;13386;13379:12;13341:52;13421:9;13415:16;13440:28;13462:5;13440:28;:::i;14457:128::-;14524:9;;;14545:11;;;14542:37;;;14559:18;;:::i;15339:127::-;15400:10;15395:3;15391:20;15388:1;15381:31;15431:4;15428:1;15421:15;15455:4;15452:1;15445:15;15471:251;15541:6;15594:2;15582:9;15573:7;15569:23;15565:32;15562:52;;;15610:1;15607;15600:12;15562:52;15642:9;15636:16;15661:31;15686:5;15661:31;:::i;15727:980::-;15989:4;16037:3;16026:9;16022:19;16068:6;16057:9;16050:25;16094:2;16132:6;16127:2;16116:9;16112:18;16105:34;16175:3;16170:2;16159:9;16155:18;16148:31;16199:6;16234;16228:13;16265:6;16257;16250:22;16303:3;16292:9;16288:19;16281:26;;16342:2;16334:6;16330:15;16316:29;;16363:1;16373:195;16387:6;16384:1;16381:13;16373:195;;;16452:13;;-1:-1:-1;;;;;16448:39:1;16436:52;;16543:15;;;;16508:12;;;;16484:1;16402:9;16373:195;;;-1:-1:-1;;;;;;;16624:32:1;;;;16619:2;16604:18;;16597:60;-1:-1:-1;;;16688:3:1;16673:19;16666:35;16585:3;15727:980;-1:-1:-1;;;15727:980:1:o

Swarm Source

ipfs://24b365524746575777be9445cc9c913aa646ae19a90550b8b9162ac94aa0f9c4
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.