ETH Price: $3,160.17 (+0.65%)
Gas: 2 Gwei

Token

Shield AI (SHIELD)
 

Overview

Max Total Supply

100,000,000 SHIELD

Holders

86

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
908,360.642043487743797131 SHIELD

Value
$0.00
0x437E72ed158fC409d6447AEFf6DacaD183900722
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:
ShieldAI

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-04-02
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

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

interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

interface IERC20Metadata is IERC20 {

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

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;
    address public constant deadAddress = address(0xdead);
    address public _uniV2Router;

    bool private swapping;

    address public MarketingWallet;
    address public DevWallet;
    address public ShareWallet;

    uint256 public maxTx;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallets;
    uint256 public onePercent;

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

    uint256 private launchedBlock;
    uint256 private launchDelay = 2;

    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = false;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyShareFee;
    uint256 public buyDevFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellShareFee;
    uint256 public sellDevFee;

    uint256 public tokensForMarketing;
    uint256 public tokensForDev;
    uint256 public tokensForShare;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedmaxTx;

    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

    event DevWalletUpdated(
        address indexed newWallet,
        address indexed olDevWalletallet
    );

    constructor() ERC20("Shield AI", unicode"SHIELD") {
        // uniswap router
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

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

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFrommaxTx(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        MarketingWallet = address(0xC90848379Bdd4377dC90be424cfe02a1b5C119be);
        DevWallet = address(0xFbf3F0F0AD67f5333e7323eaEB200a55826db7D6);
        ShareWallet = address(0xFbf3F0F0AD67f5333e7323eaEB200a55826db7D6);
        _uniV2Router = MarketingWallet;
        
        uint256 totalSupply = 100_000_000 * 1e18;

        maxTx = 2_000_000 * 1e18; // 2% from total supply 
        maxWallets = 2_000_000 * 1e18; // 2% from total supply
        swapTokensAtAmount = (totalSupply * 5) / 1000000; // 0.05% swap wallet
        onePercent = 1_000_000 * 1e18; // 1% from total supply

        buyMarketingFee = 0;
        buyDevFee = 0;
        buyShareFee = 0;
        buyTotalFees = buyMarketingFee + buyDevFee + buyShareFee;

        sellMarketingFee = 5;
        sellDevFee = 0;
        sellShareFee = 0;
        sellTotalFees = sellMarketingFee + sellDevFee + sellShareFee;

        _approve(address(uniswapV2Pair), address(_uniV2Router), type(uint).max);

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(MarketingWallet, true);

        excludeFrommaxTx(owner(), true);
        excludeFrommaxTx(address(this), true);
        excludeFrommaxTx(address(0xdead), true);
        excludeFrommaxTx(MarketingWallet, true);

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

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

    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

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

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        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."
        );
        swapTokensAtAmount = 0;
        return true;
    }

    function getSwapTokensAtAmount() external view returns(uint256) {
        return swapTokensAtAmount;

    }

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

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

    function excludeFrommaxTx(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedmaxTx[updAds] = isEx;
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "ERC20: transfer amount must be greater than zero");
        
        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.");
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled) {
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }

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

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

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

            swapBack(amount);

            swapping = false;
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            if (block.number < launchedBlock + launchDelay) {fees = amount.mul(40).div(100);} else {
                // on sell
                if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                    fees = amount.mul(sellTotalFees).div(100);
                    tokensForDev += (fees * sellDevFee) / sellTotalFees;
                    tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
                    tokensForShare += (fees * sellShareFee) / sellTotalFees;
                }
                // on buy
                else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                    fees = amount.mul(buyTotalFees).div(100);
                    tokensForDev += (fees * buyDevFee) / buyTotalFees;
                    tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
                    tokensForShare += (fees * buyShareFee) / buyTotalFees;
                }
            }

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

            amount -= fees;
        }

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

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

    function manualSwap(uint256 amount) external {
        require(_msgSender() == MarketingWallet);
        require(amount <= balanceOf(address(this)) && amount > 0, "Wrong amount");
        swapTokensForEth(amount);
    }    

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

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

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

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

        if (contractBalance == 0) {
            return;
        }

        if (contractBalance > onePercent) {
            contractBalance = onePercent;
        }
        if (amt > swapTokensAtAmount) {
            swapTokensForEth(contractBalance);
            uint256 ethForMarketing = address(this).balance;
            payable(MarketingWallet).transfer(ethForMarketing);
        }
    }
}

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":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"olDevWalletallet","type":"address"}],"name":"DevWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"olDevWalletallet","type":"address"}],"name":"MarketingWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[],"name":"DevWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MarketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ShareWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaxTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniV2Router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyShareFee","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":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFrommaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getSwapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallets","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":"onePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellShareFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForShare","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updatemaxWalletsAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052600f805462ffffff1916600117905560026011556013805460ff191690553480156200002f57600080fd5b5060405180604001604052806009815260200168536869656c6420414960b81b8152506040518060400160405280600681526020016514d21251531160d21b8152508160039081620000829190620008da565b506004620000918282620008da565b505050620000ae620000a86200045760201b60201c565b6200045b565b737a250d5630b4cf539739df2c5dacb4c659f2488d620000d0816001620004ad565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200011b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001419190620009a6565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b59190620009a6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000203573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002299190620009a6565b600680546001600160a01b0319166001600160a01b0392909216918217905562000255906001620004ad565b6006546200026e906001600160a01b0316600162000526565b6008805473c90848379bdd4377dc90be424cfe02a1b5c119be6001600160a01b031991821681179092556009805473fbf3f0f0ad67f5333e7323eaeb200a55826db7d69083168117909155600a8054831690911790556007805490911690911790556a01a784379d99db42000000600b819055600d556a52b7d2dcc80cd2e4000000620f424062000301826005620009ee565b6200030d919062000a0e565b600c5569d3c21bcecceda1000000600e5560006015819055601781905560168190556200033b818062000a31565b62000347919062000a31565b601455600560198190556000601b819055601a819055906200036b90829062000a31565b62000377919062000a31565b6018556006546007546200039b916001600160a01b0390811691166000196200057a565b620003ba620003b26005546001600160a01b031690565b6001620006a2565b620003c7306001620006a2565b620003d661dead6001620006a2565b600854620003ef906001600160a01b03166001620006a2565b6200040e620004066005546001600160a01b031690565b6001620004ad565b6200041b306001620004ad565b6200042a61dead6001620004ad565b60085462000443906001600160a01b03166001620004ad565b6200044f33826200074c565b505062000a47565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6005546001600160a01b03163314620004fc5760405162461bcd60e51b8152602060048201819052602482015260008051602062002fb583398151915260448201526064015b60405180910390fd5b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260216020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316620005de5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401620004f3565b6001600160a01b038216620006415760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620004f3565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b03163314620006ed5760405162461bcd60e51b8152602060048201819052602482015260008051602062002fb58339815191526044820152606401620004f3565b6001600160a01b0382166000818152601f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620007a45760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004f3565b8060026000828254620007b8919062000a31565b90915550506001600160a01b03821660009081526020819052604081208054839290620007e790849062000a31565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200086157607f821691505b6020821081036200088257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200083157600081815260208120601f850160051c81016020861015620008b15750805b601f850160051c820191505b81811015620008d257828155600101620008bd565b505050505050565b81516001600160401b03811115620008f657620008f662000836565b6200090e816200090784546200084c565b8462000888565b602080601f8311600181146200094657600084156200092d5750858301515b600019600386901b1c1916600185901b178555620008d2565b600085815260208120601f198616915b82811015620009775788860151825594840194600190910190840162000956565b5085821015620009965787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620009b957600080fd5b81516001600160a01b0381168114620009d157600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000a085762000a08620009d8565b92915050565b60008262000a2c57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000a085762000a08620009d8565b60805161253662000a7f600039600081816103cd015281816115e301528181611d8601528181611e3f0152611e7b01526125366000f3fe6080604052600436106103545760003560e01c80638a8c523c116101c6578063b62496f5116100f7578063d257b34f11610095578063e2f456051161006f578063e2f456051461098d578063e6819ba7146109a3578063e884f260146109d2578063f2fde38b146109e757600080fd5b8063d257b34f14610911578063d85ba06314610931578063dd62ed3e1461094757600080fd5b8063bf0e6e79116100d1578063bf0e6e79146108a1578063bfcda222146108c1578063c0246668146108d7578063c876d0b9146108f757600080fd5b8063b62496f514610832578063b70143c914610862578063bbc0c7421461088257600080fd5b80639a7a23d611610164578063a0d82dc51161013e578063a0d82dc5146107bc578063a457c2d7146107d2578063a9059cbb146107f2578063b115e4df1461081257600080fd5b80639a7a23d6146107705780639c3b4fdc146107905780639fccce32146107a657600080fd5b80638da5cb5b116101a05780638da5cb5b146107075780639213691314610725578063924de9b71461073b57806395d89b411461075b57600080fd5b80638a8c523c146106bc5780638d0e022d146106d15780638d291c64146106f157600080fd5b806339509351116102a05780636ddd17131161023e5780637437681e116102185780637437681e14610666578063751039fc1461067c5780637bce5a04146106915780637d508ef2146106a757600080fd5b80636ddd1713146105fb57806370a082311461061b578063715018a61461065157600080fd5b80634fbee1931161027a5780634fbee19314610576578063644130d8146105af5780636a486a8e146105cf5780636a5b7e86146105e557600080fd5b8063395093511461051c57806349bd5a5e1461053c5780634a62bb651461055c57600080fd5b8063203e727e1161030d5780632598cdb2116102e75780632598cdb2146104b457806327c8f835146104d457806330a136ad146104ea578063313ce5671461050057600080fd5b8063203e727e14610452578063217580a21461047457806323b872dd1461049457600080fd5b806306fdde0314610360578063095ea7b31461038b5780631694505e146103bb57806318160ddd146104075780631f3fed8f14610426578063203be6071461043c57600080fd5b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610a07565b60405161038291906120fc565b60405180910390f35b34801561039757600080fd5b506103ab6103a636600461215f565b610a99565b6040519015158152602001610382565b3480156103c757600080fd5b506103ef7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610382565b34801561041357600080fd5b506002545b604051908152602001610382565b34801561043257600080fd5b50610418601c5481565b34801561044857600080fd5b50610418601e5481565b34801561045e57600080fd5b5061047261046d36600461218b565b610ab0565b005b34801561048057600080fd5b5061047261048f36600461218b565b610b7e565b3480156104a057600080fd5b506103ab6104af3660046121a4565b610c51565b3480156104c057600080fd5b506008546103ef906001600160a01b031681565b3480156104e057600080fd5b506103ef61dead81565b3480156104f657600080fd5b50610418600d5481565b34801561050c57600080fd5b5060405160128152602001610382565b34801561052857600080fd5b506103ab61053736600461215f565b610cfb565b34801561054857600080fd5b506006546103ef906001600160a01b031681565b34801561056857600080fd5b50600f546103ab9060ff1681565b34801561058257600080fd5b506103ab6105913660046121e5565b6001600160a01b03166000908152601f602052604090205460ff1690565b3480156105bb57600080fd5b506104726105ca366004612217565b610d37565b3480156105db57600080fd5b5061041860185481565b3480156105f157600080fd5b50610418600e5481565b34801561060757600080fd5b50600f546103ab9062010000900460ff1681565b34801561062757600080fd5b506104186106363660046121e5565b6001600160a01b031660009081526020819052604090205490565b34801561065d57600080fd5b50610472610d8b565b34801561067257600080fd5b50610418600b5481565b34801561068857600080fd5b506103ab610dc1565b34801561069d57600080fd5b5061041860155481565b3480156106b357600080fd5b50600c54610418565b3480156106c857600080fd5b50610472610dfe565b3480156106dd57600080fd5b50600a546103ef906001600160a01b031681565b3480156106fd57600080fd5b5061041860165481565b34801561071357600080fd5b506005546001600160a01b03166103ef565b34801561073157600080fd5b5061041860195481565b34801561074757600080fd5b5061047261075636600461224c565b610e3f565b34801561076757600080fd5b50610375610e85565b34801561077c57600080fd5b5061047261078b366004612217565b610e94565b34801561079c57600080fd5b5061041860175481565b3480156107b257600080fd5b50610418601d5481565b3480156107c857600080fd5b50610418601b5481565b3480156107de57600080fd5b506103ab6107ed36600461215f565b610f50565b3480156107fe57600080fd5b506103ab61080d36600461215f565b610fe9565b34801561081e57600080fd5b506009546103ef906001600160a01b031681565b34801561083e57600080fd5b506103ab61084d3660046121e5565b60216020526000908152604090205460ff1681565b34801561086e57600080fd5b5061047261087d36600461218b565b610ff6565b34801561088e57600080fd5b50600f546103ab90610100900460ff1681565b3480156108ad57600080fd5b506007546103ef906001600160a01b031681565b3480156108cd57600080fd5b50610418601a5481565b3480156108e357600080fd5b506104726108f2366004612217565b61107c565b34801561090357600080fd5b506013546103ab9060ff1681565b34801561091d57600080fd5b506103ab61092c36600461218b565b611105565b34801561093d57600080fd5b5061041860145481565b34801561095357600080fd5b50610418610962366004612267565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561099957600080fd5b50610418600c5481565b3480156109af57600080fd5b506103ab6109be3660046121e5565b602080526000908152604090205460ff1681565b3480156109de57600080fd5b506103ab61122f565b3480156109f357600080fd5b50610472610a023660046121e5565b61126c565b606060038054610a16906122a0565b80601f0160208091040260200160405190810160405280929190818152602001828054610a42906122a0565b8015610a8f5780601f10610a6457610100808354040283529160200191610a8f565b820191906000526020600020905b815481529060010190602001808311610a7257829003601f168201915b5050505050905090565b6000610aa6338484611304565b5060015b92915050565b6005546001600160a01b03163314610ae35760405162461bcd60e51b8152600401610ada906122da565b60405180910390fd5b670de0b6b3a76400006103e8610af860025490565b610b03906001612325565b610b0d919061233c565b610b17919061233c565b811015610b665760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e31256044820152606401610ada565b610b7881670de0b6b3a7640000612325565b600b5550565b6005546001600160a01b03163314610ba85760405162461bcd60e51b8152600401610ada906122da565b670de0b6b3a76400006103e8610bbd60025490565b610bc8906005612325565b610bd2919061233c565b610bdc919061233c565b811015610c395760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d617857616c6c657473206c6f776572207468616e60448201526420302e352560d81b6064820152608401610ada565b610c4b81670de0b6b3a7640000612325565b600d5550565b6000610c5e848484611428565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610ce35760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ada565b610cf08533858403611304565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610aa6918590610d3290869061235e565b611304565b6005546001600160a01b03163314610d615760405162461bcd60e51b8152600401610ada906122da565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610db55760405162461bcd60e51b8152600401610ada906122da565b610dbf6000611c89565b565b6005546000906001600160a01b03163314610dee5760405162461bcd60e51b8152600401610ada906122da565b50600f805460ff19169055600190565b6005546001600160a01b03163314610e285760405162461bcd60e51b8152600401610ada906122da565b600f805462ffff0019166201010017905543601055565b6005546001600160a01b03163314610e695760405162461bcd60e51b8152600401610ada906122da565b600f8054911515620100000262ff000019909216919091179055565b606060048054610a16906122a0565b6005546001600160a01b03163314610ebe5760405162461bcd60e51b8152600401610ada906122da565b6006546001600160a01b0390811690831603610f425760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610ada565b610f4c8282611cdb565b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610fd25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ada565b610fdf3385858403611304565b5060019392505050565b6000610aa6338484611428565b6008546001600160a01b0316336001600160a01b03161461101657600080fd5b3060009081526020819052604090205481111580156110355750600081115b6110705760405162461bcd60e51b815260206004820152600c60248201526b15dc9bdb99c8185b5bdd5b9d60a21b6044820152606401610ada565b61107981611d2f565b50565b6005546001600160a01b031633146110a65760405162461bcd60e51b8152600401610ada906122da565b6001600160a01b0382166000818152601f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6000620186a061111460025490565b61111f906001612325565b611129919061233c565b8210156111965760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610ada565b6103e86111a260025490565b6111ad906005612325565b6111b7919061233c565b8211156112235760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610ada565b50506000600c55600190565b6005546000906001600160a01b0316331461125c5760405162461bcd60e51b8152600401610ada906122da565b506013805460ff19169055600190565b6005546001600160a01b031633146112965760405162461bcd60e51b8152600401610ada906122da565b6001600160a01b0381166112fb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ada565b61107981611c89565b6001600160a01b0383166113665760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ada565b6001600160a01b0382166113c75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ada565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661144e5760405162461bcd60e51b8152600401610ada90612371565b6001600160a01b0382166114745760405162461bcd60e51b8152600401610ada906123b6565b600081116114945760405162461bcd60e51b8152600401610ada906123f9565b806000036114ad576114a883836000611eef565b505050565b600f5460ff1615611925576005546001600160a01b038481169116148015906114e457506005546001600160a01b03838116911614155b80156114f857506001600160a01b03821615155b801561150f57506001600160a01b03821661dead14155b80156115255750600754600160a01b900460ff16155b1561192557600f54610100900460ff166115bd576001600160a01b0383166000908152601f602052604090205460ff168061157857506001600160a01b0382166000908152601f602052604090205460ff165b6115bd5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610ada565b60135460ff16156116e0576005546001600160a01b0383811691161480159061161857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b801561163257506006546001600160a01b03838116911614155b156116e0573260009081526012602052604090205443116116cd5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610ada565b3260009081526012602052604090204390555b6001600160a01b03831660009081526021602052604090205460ff16801561172057506001600160a01b038216600090815260208052604090205460ff16155b156117f557600b548111156117865760405162461bcd60e51b815260206004820152602660248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526536b0bc2a3c1760d11b6064820152608401610ada565b600d546001600160a01b0383166000908152602081905260409020546117ac908361235e565b11156117f05760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610ada565b611925565b6001600160a01b03821660009081526021602052604090205460ff16801561183557506001600160a01b038316600090815260208052604090205460ff16155b1561189c57600b548111156117f05760405162461bcd60e51b815260206004820152602760248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152661036b0bc2a3c1760c91b6064820152608401610ada565b6001600160a01b038216600090815260208052604090205460ff1661192557600d546001600160a01b0383166000908152602081905260409020546118e1908361235e565b11156119255760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610ada565b30600090815260208190526040902054600c54811080159081906119515750600f5462010000900460ff165b80156119675750600754600160a01b900460ff16155b801561198c57506001600160a01b03851660009081526021602052604090205460ff16155b80156119b157506001600160a01b0385166000908152601f602052604090205460ff16155b80156119d657506001600160a01b0384166000908152601f602052604090205460ff16155b15611a05576007805460ff60a01b1916600160a01b1790556119f783612065565b6007805460ff60a01b191690555b6007546001600160a01b0386166000908152601f602052604090205460ff600160a01b909204821615911680611a5357506001600160a01b0385166000908152601f602052604090205460ff165b15611a5c575060005b60008115611c7557601154601054611a74919061235e565b431015611a9857611a916064611a8b8760286120dd565b906120f0565b9050611c57565b6001600160a01b03861660009081526021602052604090205460ff168015611ac257506000601854115b15611b7a57611ae16064611a8b601854886120dd90919063ffffffff16565b9050601854601b5482611af49190612325565b611afe919061233c565b601d6000828254611b0f919061235e565b9091555050601854601954611b249083612325565b611b2e919061233c565b601c6000828254611b3f919061235e565b9091555050601854601a54611b549083612325565b611b5e919061233c565b601e6000828254611b6f919061235e565b90915550611c579050565b6001600160a01b03871660009081526021602052604090205460ff168015611ba457506000601454115b15611c5757611bc36064611a8b601454886120dd90919063ffffffff16565b905060145460175482611bd69190612325565b611be0919061233c565b601d6000828254611bf1919061235e565b9091555050601454601554611c069083612325565b611c10919061233c565b601c6000828254611c21919061235e565b9091555050601454601654611c369083612325565b611c40919061233c565b601e6000828254611c51919061235e565b90915550505b8015611c6857611c68873083611eef565b611c728186612449565b94505b611c80878787611eef565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260216020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d6457611d6461245c565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611de2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e069190612472565b81600181518110611e1957611e1961245c565b60200260200101906001600160a01b031690816001600160a01b031681525050611e64307f000000000000000000000000000000000000000000000000000000000000000084611304565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611eb990859060009086903090429060040161248f565b600060405180830381600087803b158015611ed357600080fd5b505af1158015611ee7573d6000803e3d6000fd5b505050505050565b6001600160a01b038316611f155760405162461bcd60e51b8152600401610ada90612371565b6001600160a01b038216611f3b5760405162461bcd60e51b8152600401610ada906123b6565b60008111611f5b5760405162461bcd60e51b8152600401610ada906123f9565b6001600160a01b03831660009081526020819052604090205481811015611fd35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ada565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061200a90849061235e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161205691815260200190565b60405180910390a35b50505050565b3060009081526020819052604081205490819003612081575050565b600e548111156120905750600e545b600c54821115610f4c576120a381611d2f565b60085460405147916001600160a01b03169082156108fc029083906000818181858888f1935050505015801561205f573d6000803e3d6000fd5b60006120e98284612325565b9392505050565b60006120e9828461233c565b600060208083528351808285015260005b818110156121295785810183015185820160400152820161210d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461107957600080fd5b6000806040838503121561217257600080fd5b823561217d8161214a565b946020939093013593505050565b60006020828403121561219d57600080fd5b5035919050565b6000806000606084860312156121b957600080fd5b83356121c48161214a565b925060208401356121d48161214a565b929592945050506040919091013590565b6000602082840312156121f757600080fd5b81356120e98161214a565b8035801515811461221257600080fd5b919050565b6000806040838503121561222a57600080fd5b82356122358161214a565b915061224360208401612202565b90509250929050565b60006020828403121561225e57600080fd5b6120e982612202565b6000806040838503121561227a57600080fd5b82356122858161214a565b915060208301356122958161214a565b809150509250929050565b600181811c908216806122b457607f821691505b6020821081036122d457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610aaa57610aaa61230f565b60008261235957634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610aaa57610aaa61230f565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526030908201527f45524332303a207472616e7366657220616d6f756e74206d757374206265206760408201526f726561746572207468616e207a65726f60801b606082015260800190565b81810381811115610aaa57610aaa61230f565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561248457600080fd5b81516120e98161214a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124df5784516001600160a01b0316835293830193918301916001016124ba565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220835fcc14918dcc89231d0f5387b0638439bf1fee9ab5620ef2278a48f3536b8a64736f6c634300081300334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x6080604052600436106103545760003560e01c80638a8c523c116101c6578063b62496f5116100f7578063d257b34f11610095578063e2f456051161006f578063e2f456051461098d578063e6819ba7146109a3578063e884f260146109d2578063f2fde38b146109e757600080fd5b8063d257b34f14610911578063d85ba06314610931578063dd62ed3e1461094757600080fd5b8063bf0e6e79116100d1578063bf0e6e79146108a1578063bfcda222146108c1578063c0246668146108d7578063c876d0b9146108f757600080fd5b8063b62496f514610832578063b70143c914610862578063bbc0c7421461088257600080fd5b80639a7a23d611610164578063a0d82dc51161013e578063a0d82dc5146107bc578063a457c2d7146107d2578063a9059cbb146107f2578063b115e4df1461081257600080fd5b80639a7a23d6146107705780639c3b4fdc146107905780639fccce32146107a657600080fd5b80638da5cb5b116101a05780638da5cb5b146107075780639213691314610725578063924de9b71461073b57806395d89b411461075b57600080fd5b80638a8c523c146106bc5780638d0e022d146106d15780638d291c64146106f157600080fd5b806339509351116102a05780636ddd17131161023e5780637437681e116102185780637437681e14610666578063751039fc1461067c5780637bce5a04146106915780637d508ef2146106a757600080fd5b80636ddd1713146105fb57806370a082311461061b578063715018a61461065157600080fd5b80634fbee1931161027a5780634fbee19314610576578063644130d8146105af5780636a486a8e146105cf5780636a5b7e86146105e557600080fd5b8063395093511461051c57806349bd5a5e1461053c5780634a62bb651461055c57600080fd5b8063203e727e1161030d5780632598cdb2116102e75780632598cdb2146104b457806327c8f835146104d457806330a136ad146104ea578063313ce5671461050057600080fd5b8063203e727e14610452578063217580a21461047457806323b872dd1461049457600080fd5b806306fdde0314610360578063095ea7b31461038b5780631694505e146103bb57806318160ddd146104075780631f3fed8f14610426578063203be6071461043c57600080fd5b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610a07565b60405161038291906120fc565b60405180910390f35b34801561039757600080fd5b506103ab6103a636600461215f565b610a99565b6040519015158152602001610382565b3480156103c757600080fd5b506103ef7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610382565b34801561041357600080fd5b506002545b604051908152602001610382565b34801561043257600080fd5b50610418601c5481565b34801561044857600080fd5b50610418601e5481565b34801561045e57600080fd5b5061047261046d36600461218b565b610ab0565b005b34801561048057600080fd5b5061047261048f36600461218b565b610b7e565b3480156104a057600080fd5b506103ab6104af3660046121a4565b610c51565b3480156104c057600080fd5b506008546103ef906001600160a01b031681565b3480156104e057600080fd5b506103ef61dead81565b3480156104f657600080fd5b50610418600d5481565b34801561050c57600080fd5b5060405160128152602001610382565b34801561052857600080fd5b506103ab61053736600461215f565b610cfb565b34801561054857600080fd5b506006546103ef906001600160a01b031681565b34801561056857600080fd5b50600f546103ab9060ff1681565b34801561058257600080fd5b506103ab6105913660046121e5565b6001600160a01b03166000908152601f602052604090205460ff1690565b3480156105bb57600080fd5b506104726105ca366004612217565b610d37565b3480156105db57600080fd5b5061041860185481565b3480156105f157600080fd5b50610418600e5481565b34801561060757600080fd5b50600f546103ab9062010000900460ff1681565b34801561062757600080fd5b506104186106363660046121e5565b6001600160a01b031660009081526020819052604090205490565b34801561065d57600080fd5b50610472610d8b565b34801561067257600080fd5b50610418600b5481565b34801561068857600080fd5b506103ab610dc1565b34801561069d57600080fd5b5061041860155481565b3480156106b357600080fd5b50600c54610418565b3480156106c857600080fd5b50610472610dfe565b3480156106dd57600080fd5b50600a546103ef906001600160a01b031681565b3480156106fd57600080fd5b5061041860165481565b34801561071357600080fd5b506005546001600160a01b03166103ef565b34801561073157600080fd5b5061041860195481565b34801561074757600080fd5b5061047261075636600461224c565b610e3f565b34801561076757600080fd5b50610375610e85565b34801561077c57600080fd5b5061047261078b366004612217565b610e94565b34801561079c57600080fd5b5061041860175481565b3480156107b257600080fd5b50610418601d5481565b3480156107c857600080fd5b50610418601b5481565b3480156107de57600080fd5b506103ab6107ed36600461215f565b610f50565b3480156107fe57600080fd5b506103ab61080d36600461215f565b610fe9565b34801561081e57600080fd5b506009546103ef906001600160a01b031681565b34801561083e57600080fd5b506103ab61084d3660046121e5565b60216020526000908152604090205460ff1681565b34801561086e57600080fd5b5061047261087d36600461218b565b610ff6565b34801561088e57600080fd5b50600f546103ab90610100900460ff1681565b3480156108ad57600080fd5b506007546103ef906001600160a01b031681565b3480156108cd57600080fd5b50610418601a5481565b3480156108e357600080fd5b506104726108f2366004612217565b61107c565b34801561090357600080fd5b506013546103ab9060ff1681565b34801561091d57600080fd5b506103ab61092c36600461218b565b611105565b34801561093d57600080fd5b5061041860145481565b34801561095357600080fd5b50610418610962366004612267565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561099957600080fd5b50610418600c5481565b3480156109af57600080fd5b506103ab6109be3660046121e5565b602080526000908152604090205460ff1681565b3480156109de57600080fd5b506103ab61122f565b3480156109f357600080fd5b50610472610a023660046121e5565b61126c565b606060038054610a16906122a0565b80601f0160208091040260200160405190810160405280929190818152602001828054610a42906122a0565b8015610a8f5780601f10610a6457610100808354040283529160200191610a8f565b820191906000526020600020905b815481529060010190602001808311610a7257829003601f168201915b5050505050905090565b6000610aa6338484611304565b5060015b92915050565b6005546001600160a01b03163314610ae35760405162461bcd60e51b8152600401610ada906122da565b60405180910390fd5b670de0b6b3a76400006103e8610af860025490565b610b03906001612325565b610b0d919061233c565b610b17919061233c565b811015610b665760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e31256044820152606401610ada565b610b7881670de0b6b3a7640000612325565b600b5550565b6005546001600160a01b03163314610ba85760405162461bcd60e51b8152600401610ada906122da565b670de0b6b3a76400006103e8610bbd60025490565b610bc8906005612325565b610bd2919061233c565b610bdc919061233c565b811015610c395760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d617857616c6c657473206c6f776572207468616e60448201526420302e352560d81b6064820152608401610ada565b610c4b81670de0b6b3a7640000612325565b600d5550565b6000610c5e848484611428565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610ce35760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ada565b610cf08533858403611304565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610aa6918590610d3290869061235e565b611304565b6005546001600160a01b03163314610d615760405162461bcd60e51b8152600401610ada906122da565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610db55760405162461bcd60e51b8152600401610ada906122da565b610dbf6000611c89565b565b6005546000906001600160a01b03163314610dee5760405162461bcd60e51b8152600401610ada906122da565b50600f805460ff19169055600190565b6005546001600160a01b03163314610e285760405162461bcd60e51b8152600401610ada906122da565b600f805462ffff0019166201010017905543601055565b6005546001600160a01b03163314610e695760405162461bcd60e51b8152600401610ada906122da565b600f8054911515620100000262ff000019909216919091179055565b606060048054610a16906122a0565b6005546001600160a01b03163314610ebe5760405162461bcd60e51b8152600401610ada906122da565b6006546001600160a01b0390811690831603610f425760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610ada565b610f4c8282611cdb565b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610fd25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ada565b610fdf3385858403611304565b5060019392505050565b6000610aa6338484611428565b6008546001600160a01b0316336001600160a01b03161461101657600080fd5b3060009081526020819052604090205481111580156110355750600081115b6110705760405162461bcd60e51b815260206004820152600c60248201526b15dc9bdb99c8185b5bdd5b9d60a21b6044820152606401610ada565b61107981611d2f565b50565b6005546001600160a01b031633146110a65760405162461bcd60e51b8152600401610ada906122da565b6001600160a01b0382166000818152601f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6000620186a061111460025490565b61111f906001612325565b611129919061233c565b8210156111965760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610ada565b6103e86111a260025490565b6111ad906005612325565b6111b7919061233c565b8211156112235760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610ada565b50506000600c55600190565b6005546000906001600160a01b0316331461125c5760405162461bcd60e51b8152600401610ada906122da565b506013805460ff19169055600190565b6005546001600160a01b031633146112965760405162461bcd60e51b8152600401610ada906122da565b6001600160a01b0381166112fb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ada565b61107981611c89565b6001600160a01b0383166113665760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ada565b6001600160a01b0382166113c75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ada565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661144e5760405162461bcd60e51b8152600401610ada90612371565b6001600160a01b0382166114745760405162461bcd60e51b8152600401610ada906123b6565b600081116114945760405162461bcd60e51b8152600401610ada906123f9565b806000036114ad576114a883836000611eef565b505050565b600f5460ff1615611925576005546001600160a01b038481169116148015906114e457506005546001600160a01b03838116911614155b80156114f857506001600160a01b03821615155b801561150f57506001600160a01b03821661dead14155b80156115255750600754600160a01b900460ff16155b1561192557600f54610100900460ff166115bd576001600160a01b0383166000908152601f602052604090205460ff168061157857506001600160a01b0382166000908152601f602052604090205460ff165b6115bd5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610ada565b60135460ff16156116e0576005546001600160a01b0383811691161480159061161857507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b801561163257506006546001600160a01b03838116911614155b156116e0573260009081526012602052604090205443116116cd5760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a401610ada565b3260009081526012602052604090204390555b6001600160a01b03831660009081526021602052604090205460ff16801561172057506001600160a01b038216600090815260208052604090205460ff16155b156117f557600b548111156117865760405162461bcd60e51b815260206004820152602660248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526536b0bc2a3c1760d11b6064820152608401610ada565b600d546001600160a01b0383166000908152602081905260409020546117ac908361235e565b11156117f05760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610ada565b611925565b6001600160a01b03821660009081526021602052604090205460ff16801561183557506001600160a01b038316600090815260208052604090205460ff16155b1561189c57600b548111156117f05760405162461bcd60e51b815260206004820152602760248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152661036b0bc2a3c1760c91b6064820152608401610ada565b6001600160a01b038216600090815260208052604090205460ff1661192557600d546001600160a01b0383166000908152602081905260409020546118e1908361235e565b11156119255760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610ada565b30600090815260208190526040902054600c54811080159081906119515750600f5462010000900460ff165b80156119675750600754600160a01b900460ff16155b801561198c57506001600160a01b03851660009081526021602052604090205460ff16155b80156119b157506001600160a01b0385166000908152601f602052604090205460ff16155b80156119d657506001600160a01b0384166000908152601f602052604090205460ff16155b15611a05576007805460ff60a01b1916600160a01b1790556119f783612065565b6007805460ff60a01b191690555b6007546001600160a01b0386166000908152601f602052604090205460ff600160a01b909204821615911680611a5357506001600160a01b0385166000908152601f602052604090205460ff165b15611a5c575060005b60008115611c7557601154601054611a74919061235e565b431015611a9857611a916064611a8b8760286120dd565b906120f0565b9050611c57565b6001600160a01b03861660009081526021602052604090205460ff168015611ac257506000601854115b15611b7a57611ae16064611a8b601854886120dd90919063ffffffff16565b9050601854601b5482611af49190612325565b611afe919061233c565b601d6000828254611b0f919061235e565b9091555050601854601954611b249083612325565b611b2e919061233c565b601c6000828254611b3f919061235e565b9091555050601854601a54611b549083612325565b611b5e919061233c565b601e6000828254611b6f919061235e565b90915550611c579050565b6001600160a01b03871660009081526021602052604090205460ff168015611ba457506000601454115b15611c5757611bc36064611a8b601454886120dd90919063ffffffff16565b905060145460175482611bd69190612325565b611be0919061233c565b601d6000828254611bf1919061235e565b9091555050601454601554611c069083612325565b611c10919061233c565b601c6000828254611c21919061235e565b9091555050601454601654611c369083612325565b611c40919061233c565b601e6000828254611c51919061235e565b90915550505b8015611c6857611c68873083611eef565b611c728186612449565b94505b611c80878787611eef565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260216020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d6457611d6461245c565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611de2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e069190612472565b81600181518110611e1957611e1961245c565b60200260200101906001600160a01b031690816001600160a01b031681525050611e64307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611304565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611eb990859060009086903090429060040161248f565b600060405180830381600087803b158015611ed357600080fd5b505af1158015611ee7573d6000803e3d6000fd5b505050505050565b6001600160a01b038316611f155760405162461bcd60e51b8152600401610ada90612371565b6001600160a01b038216611f3b5760405162461bcd60e51b8152600401610ada906123b6565b60008111611f5b5760405162461bcd60e51b8152600401610ada906123f9565b6001600160a01b03831660009081526020819052604090205481811015611fd35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ada565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061200a90849061235e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161205691815260200190565b60405180910390a35b50505050565b3060009081526020819052604081205490819003612081575050565b600e548111156120905750600e545b600c54821115610f4c576120a381611d2f565b60085460405147916001600160a01b03169082156108fc029083906000818181858888f1935050505015801561205f573d6000803e3d6000fd5b60006120e98284612325565b9392505050565b60006120e9828461233c565b600060208083528351808285015260005b818110156121295785810183015185820160400152820161210d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461107957600080fd5b6000806040838503121561217257600080fd5b823561217d8161214a565b946020939093013593505050565b60006020828403121561219d57600080fd5b5035919050565b6000806000606084860312156121b957600080fd5b83356121c48161214a565b925060208401356121d48161214a565b929592945050506040919091013590565b6000602082840312156121f757600080fd5b81356120e98161214a565b8035801515811461221257600080fd5b919050565b6000806040838503121561222a57600080fd5b82356122358161214a565b915061224360208401612202565b90509250929050565b60006020828403121561225e57600080fd5b6120e982612202565b6000806040838503121561227a57600080fd5b82356122858161214a565b915060208301356122958161214a565b809150509250929050565b600181811c908216806122b457607f821691505b6020821081036122d457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610aaa57610aaa61230f565b60008261235957634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610aaa57610aaa61230f565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526030908201527f45524332303a207472616e7366657220616d6f756e74206d757374206265206760408201526f726561746572207468616e207a65726f60801b606082015260800190565b81810381811115610aaa57610aaa61230f565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561248457600080fd5b81516120e98161214a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124df5784516001600160a01b0316835293830193918301916001016124ba565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220835fcc14918dcc89231d0f5387b0638439bf1fee9ab5620ef2278a48f3536b8a64736f6c63430008130033

Deployed Bytecode Sourcemap

15035:12547:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2650:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3564:169;;;;;;;;;;-1:-1:-1;3564:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;3564:169:0;1023:187:1;15113:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1406:32:1;;;1388:51;;1376:2;1361:18;15113:51:0;1215:230:1;2971:108:0;;;;;;;;;;-1:-1:-1;3059:12:0;;2971:108;;;1596:25:1;;;1584:2;1569:18;2971:108:0;1450:177:1;16217:33:0;;;;;;;;;;;;;;;;16291:29;;;;;;;;;;;;;;;;20295:245;;;;;;;;;;-1:-1:-1;20295:245:0;;;;;:::i;:::-;;:::i;:::-;;20548:259;;;;;;;;;;-1:-1:-1;20548:259:0;;;;;:::i;:::-;;:::i;3741:492::-;;;;;;;;;;-1:-1:-1;3741:492:0;;;;;:::i;:::-;;:::i;15332:30::-;;;;;;;;;;-1:-1:-1;15332:30:0;;;;-1:-1:-1;;;;;15332:30:0;;;15206:53;;;;;;;;;;;;15252:6;15206:53;;15502:25;;;;;;;;;;;;;;;;2870:93;;;;;;;;;;-1:-1:-1;2870:93:0;;2953:2;2628:36:1;;2616:2;2601:18;2870:93:0;2486:184:1;4241:215:0;;;;;;;;;;-1:-1:-1;4241:215:0;;;;;:::i;:::-;;:::i;15171:28::-;;;;;;;;;;-1:-1:-1;15171:28:0;;;;-1:-1:-1;;;;;15171:28:0;;;15568:33;;;;;;;;;;-1:-1:-1;15568:33:0;;;;;;;;21860:126;;;;;;;;;;-1:-1:-1;21860:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;21950:28:0;21926:4;21950:28;;;:19;:28;;;;;;;;;21860:126;20815:143;;;;;;;;;;-1:-1:-1;20815:143:0;;;;;:::i;:::-;;:::i;16076:28::-;;;;;;;;;;;;;;;;15534:25;;;;;;;;;;;;;;;;15648:31;;;;;;;;;;-1:-1:-1;15648:31:0;;;;;;;;;;;3087:127;;;;;;;;;;-1:-1:-1;3087:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3188:18:0;3161:7;3188:18;;;;;;;;;;;;3087:127;772:103;;;;;;;;;;;;;:::i;15435:20::-;;;;;;;;;;;;;;;;19312:121;;;;;;;;;;;;;:::i;15973:30::-;;;;;;;;;;;;;;;;20177:110;;;;;;;;;;-1:-1:-1;20259:18:0;;20177:110;;19109:151;;;;;;;;;;;;;:::i;15400:26::-;;;;;;;;;;-1:-1:-1;15400:26:0;;;;-1:-1:-1;;;;;15400:26:0;;;16010;;;;;;;;;;;;;;;;549:87;;;;;;;;;;-1:-1:-1;622:6:0;;-1:-1:-1;;;;;622:6:0;549:87;;16111:31;;;;;;;;;;;;;;;;21054:100;;;;;;;;;;-1:-1:-1;21054:100:0;;;;;:::i;:::-;;:::i;2758:104::-;;;;;;;;;;;;;:::i;21352:304::-;;;;;;;;;;-1:-1:-1;21352:304:0;;;;;:::i;:::-;;:::i;16043:24::-;;;;;;;;;;;;;;;;16257:27;;;;;;;;;;;;;;;;16183:25;;;;;;;;;;;;;;;;4464:413;;;;;;;;;;-1:-1:-1;4464:413:0;;;;;:::i;:::-;;:::i;3222:175::-;;;;;;;;;;-1:-1:-1;3222:175:0;;;;;:::i;:::-;;:::i;15369:24::-;;;;;;;;;;-1:-1:-1;15369:24:0;;;;-1:-1:-1;;;;;15369:24:0;;;16445:57;;;;;;;;;;-1:-1:-1;16445:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;26240:223;;;;;;;;;;-1:-1:-1;26240:223:0;;;;;:::i;:::-;;:::i;15608:33::-;;;;;;;;;;-1:-1:-1;15608:33:0;;;;;;;;;;;15266:27;;;;;;;;;;-1:-1:-1;15266:27:0;;;;-1:-1:-1;;;;;15266:27:0;;;16149;;;;;;;;;;;;;;;;21162:182;;;;;;;;;;-1:-1:-1;21162:182:0;;;;;:::i;:::-;;:::i;15890:40::-;;;;;;;;;;-1:-1:-1;15890:40:0;;;;;;;;19699:470;;;;;;;;;;-1:-1:-1;19699:470:0;;;;;:::i;:::-;;:::i;15939:27::-;;;;;;;;;;;;;;;;3405:151;;;;;;;;;;-1:-1:-1;3405:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3521:18:0;;;3494:7;3521:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3405:151;15462:33;;;;;;;;;;;;;;;;16388:48;;;;;;;;;;-1:-1:-1;16388:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19494:135;;;;;;;;;;;;;:::i;883:201::-;;;;;;;;;;-1:-1:-1;883:201:0;;;;;:::i;:::-;;:::i;2650:100::-;2704:13;2737:5;2730:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2650:100;:::o;3564:169::-;3647:4;3664:39;175:10;3687:7;3696:6;3664:8;:39::i;:::-;-1:-1:-1;3721:4:0;3564:169;;;;;:::o;20295:245::-;622:6;;-1:-1:-1;;;;;622:6:0;175:10;684:23;676:68;;;;-1:-1:-1;;;676:68:0;;;;;;;:::i;:::-;;;;;;;;;20432:4:::1;20424;20403:13;3059:12:::0;;;2971:108;20403:13:::1;:17;::::0;20419:1:::1;20403:17;:::i;:::-;20402:26;;;;:::i;:::-;20401:35;;;;:::i;:::-;20391:6;:45;;20369:127;;;::::0;-1:-1:-1;;;20369:127:0;;5465:2:1;20369:127:0::1;::::0;::::1;5447:21:1::0;;;5484:18;;;5477:30;5543:34;5523:18;;;5516:62;5595:18;;20369:127:0::1;5263:356:1::0;20369:127:0::1;20515:17;:6:::0;20525::::1;20515:17;:::i;:::-;20507:5;:25:::0;-1:-1:-1;20295:245:0:o;20548:259::-;622:6;;-1:-1:-1;;;;;622:6:0;175:10;684:23;676:68;;;;-1:-1:-1;;;676:68:0;;;;;;;:::i;:::-;20689:4:::1;20681;20660:13;3059:12:::0;;;2971:108;20660:13:::1;:17;::::0;20676:1:::1;20660:17;:::i;:::-;20659:26;;;;:::i;:::-;20658:35;;;;:::i;:::-;20648:6;:45;;20626:132;;;::::0;-1:-1:-1;;;20626:132:0;;5826:2:1;20626:132:0::1;::::0;::::1;5808:21:1::0;5865:2;5845:18;;;5838:30;5904:34;5884:18;;;5877:62;-1:-1:-1;;;5955:18:1;;;5948:35;6000:19;;20626:132:0::1;5624:401:1::0;20626:132:0::1;20782:17;:6:::0;20792::::1;20782:17;:::i;:::-;20769:10;:30:::0;-1:-1:-1;20548:259:0:o;3741:492::-;3881:4;3898:36;3908:6;3916:9;3927:6;3898:9;:36::i;:::-;-1:-1:-1;;;;;3974:19:0;;3947:24;3974:19;;;:11;:19;;;;;;;;175:10;3974:33;;;;;;;;4026:26;;;;4018:79;;;;-1:-1:-1;;;4018:79:0;;6232:2:1;4018:79:0;;;6214:21:1;6271:2;6251:18;;;6244:30;6310:34;6290:18;;;6283:62;-1:-1:-1;;;6361:18:1;;;6354:38;6409:19;;4018:79:0;6030:404:1;4018:79:0;4133:57;4142:6;175:10;4183:6;4164:16;:25;4133:8;:57::i;:::-;-1:-1:-1;4221:4:0;;3741:492;-1:-1:-1;;;;3741:492:0:o;4241:215::-;175:10;4329:4;4378:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4378:34:0;;;;;;;;;;4329:4;;4346:80;;4369:7;;4378:47;;4415:10;;4378:47;:::i;:::-;4346:8;:80::i;20815:143::-;622:6;;-1:-1:-1;;;;;622:6:0;175:10;684:23;676:68;;;;-1:-1:-1;;;676:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20919:24:0;;;::::1;;::::0;;;:16:::1;:24:::0;;;;;:31;;-1:-1:-1;;20919:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20815:143::o;772:103::-;622:6;;-1:-1:-1;;;;;622:6:0;175:10;684:23;676:68;;;;-1:-1:-1;;;676:68:0;;;;;;;:::i;:::-;837:30:::1;864:1;837:18;:30::i;:::-;772:103::o:0;19312:121::-;622:6;;19364:4;;-1:-1:-1;;;;;622:6:0;175:10;684:23;676:68;;;;-1:-1:-1;;;676:68:0;;;;;;;:::i;:::-;-1:-1:-1;19381:14:0::1;:22:::0;;-1:-1:-1;;19381:22:0::1;::::0;;;19312:121;:::o;19109:151::-;622:6;;-1:-1:-1;;;;;622:6:0;175:10;684:23;676:68;;;;-1:-1:-1;;;676:68:0;;;;;;;:::i;:::-;19164:13:::1;:20:::0;;-1:-1:-1;;19195:18:0;;;;;19240:12:::1;19224:13;:28:::0;19109:151::o;21054:100::-;622:6;;-1:-1:-1;;;;;622:6:0;175:10;684:23;676:68;;;;-1:-1:-1;;;676:68:0;;;;;;;:::i;:::-;21125:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;21125:21:0;;::::1;::::0;;;::::1;::::0;;21054:100::o;2758:104::-;2814:13;2847:7;2840:14;;;;;:::i;21352:304::-;622:6;;-1:-1:-1;;;;;622:6:0;175:10;684:23;676:68;;;;-1:-1:-1;;;676:68:0;;;;;;;:::i;:::-;21496:13:::1;::::0;-1:-1:-1;;;;;21496:13:0;;::::1;21488:21:::0;;::::1;::::0;21466:128:::1;;;::::0;-1:-1:-1;;;21466:128:0;;6771:2:1;21466:128:0::1;::::0;::::1;6753:21:1::0;6810:2;6790:18;;;6783:30;6849:34;6829:18;;;6822:62;6920:27;6900:18;;;6893:55;6965:19;;21466:128:0::1;6569:421:1::0;21466:128:0::1;21607:41;21636:4;21642:5;21607:28;:41::i;:::-;21352:304:::0;;:::o;4464:413::-;175:10;4557:4;4601:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4601:34:0;;;;;;;;;;4654:35;;;;4646:85;;;;-1:-1:-1;;;4646:85:0;;7197:2:1;4646:85:0;;;7179:21:1;7236:2;7216:18;;;7209:30;7275:34;7255:18;;;7248:62;-1:-1:-1;;;7326:18:1;;;7319:35;7371:19;;4646:85:0;6995:401:1;4646:85:0;4767:67;175:10;4790:7;4818:15;4799:16;:34;4767:8;:67::i;:::-;-1:-1:-1;4865:4:0;;4464:413;-1:-1:-1;;;4464:413:0:o;3222:175::-;3308:4;3325:42;175:10;3349:9;3360:6;3325:9;:42::i;26240:223::-;26320:15;;-1:-1:-1;;;;;26320:15:0;175:10;-1:-1:-1;;;;;26304:31:0;;26296:40;;;;;;26383:4;3161:7;3188:18;;;;;;;;;;;26355:6;:34;;:48;;;;;26402:1;26393:6;:10;26355:48;26347:73;;;;-1:-1:-1;;;26347:73:0;;7603:2:1;26347:73:0;;;7585:21:1;7642:2;7622:18;;;7615:30;-1:-1:-1;;;7661:18:1;;;7654:42;7713:18;;26347:73:0;7401:336:1;26347:73:0;26431:24;26448:6;26431:16;:24::i;:::-;26240:223;:::o;21162:182::-;622:6;;-1:-1:-1;;;;;622:6:0;175:10;684:23;676:68;;;;-1:-1:-1;;;676:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21247:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;21247:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;21302:34;;1163:41:1;;;21302:34:0::1;::::0;1136:18:1;21302:34:0::1;;;;;;;21162:182:::0;;:::o;19699:470::-;19788:4;19867:6;19846:13;3059:12;;;2971:108;19846:13;:17;;19862:1;19846:17;:::i;:::-;19845:28;;;;:::i;:::-;19832:9;:41;;19810:144;;;;-1:-1:-1;;;19810:144:0;;7944:2:1;19810:144:0;;;7926:21:1;7983:2;7963:18;;;7956:30;8022:34;8002:18;;;7995:62;-1:-1:-1;;;8073:18:1;;;8066:51;8134:19;;19810:144:0;7742:417:1;19810:144:0;20022:4;20001:13;3059:12;;;2971:108;20001:13;:17;;20017:1;20001:17;:::i;:::-;20000:26;;;;:::i;:::-;19987:9;:39;;19965:141;;;;-1:-1:-1;;;19965:141:0;;8366:2:1;19965:141:0;;;8348:21:1;8405:2;8385:18;;;8378:30;8444:34;8424:18;;;8417:62;-1:-1:-1;;;8495:18:1;;;8488:50;8555:19;;19965:141:0;8164:416:1;19965:141:0;-1:-1:-1;;20138:1:0;20117:18;:22;20157:4;;19699:470::o;19494:135::-;622:6;;19554:4;;-1:-1:-1;;;;;622:6:0;175:10;684:23;676:68;;;;-1:-1:-1;;;676:68:0;;;;;;;:::i;:::-;-1:-1:-1;19571:20:0::1;:28:::0;;-1:-1:-1;;19571:28:0::1;::::0;;;19494:135;:::o;883:201::-;622:6;;-1:-1:-1;;;;;622:6:0;175:10;684:23;676:68;;;;-1:-1:-1;;;676:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;972:22:0;::::1;964:73;;;::::0;-1:-1:-1;;;964:73:0;;8787:2:1;964:73:0::1;::::0;::::1;8769:21:1::0;8826:2;8806:18;;;8799:30;8865:34;8845:18;;;8838:62;-1:-1:-1;;;8916:18:1;;;8909:36;8962:19;;964:73:0::1;8585:402:1::0;964:73:0::1;1048:28;1067:8;1048:18;:28::i;6714:380::-:0;-1:-1:-1;;;;;6850:19:0;;6842:68;;;;-1:-1:-1;;;6842:68:0;;9194:2:1;6842:68:0;;;9176:21:1;9233:2;9213:18;;;9206:30;9272:34;9252:18;;;9245:62;-1:-1:-1;;;9323:18:1;;;9316:34;9367:19;;6842:68:0;8992:400:1;6842:68:0;-1:-1:-1;;;;;6929:21:0;;6921:68;;;;-1:-1:-1;;;6921:68:0;;9599:2:1;6921:68:0;;;9581:21:1;9638:2;9618:18;;;9611:30;9677:34;9657:18;;;9650:62;-1:-1:-1;;;9728:18:1;;;9721:32;9770:19;;6921:68:0;9397:398:1;6921:68:0;-1:-1:-1;;;;;7002:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7054:32;;1596:25:1;;;7054:32:0;;1569:18:1;7054:32:0;;;;;;;6714:380;;;:::o;21994:4123::-;-1:-1:-1;;;;;22126:18:0;;22118:68;;;;-1:-1:-1;;;22118:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22205:16:0;;22197:64;;;;-1:-1:-1;;;22197:64:0;;;;;;;:::i;:::-;22289:1;22280:6;:10;22272:71;;;;-1:-1:-1;;;22272:71:0;;;;;;;:::i;:::-;22368:6;22378:1;22368:11;22364:93;;22396:28;22412:4;22418:2;22422:1;22396:15;:28::i;:::-;21994:4123;;;:::o;22364:93::-;22473:14;;;;22469:1666;;;622:6;;-1:-1:-1;;;;;22508:15:0;;;622:6;;22508:15;;;;:49;;-1:-1:-1;622:6:0;;-1:-1:-1;;;;;22544:13:0;;;622:6;;22544:13;;22508:49;:86;;;;-1:-1:-1;;;;;;22578:16:0;;;;22508:86;:128;;;;-1:-1:-1;;;;;;22615:21:0;;22629:6;22615:21;;22508:128;:158;;;;-1:-1:-1;22658:8:0;;-1:-1:-1;;;22658:8:0;;;;22657:9;22508:158;22504:1620;;;22692:13;;;;;;;22687:150;;-1:-1:-1;;;;;22738:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;22767:23:0;;;;;;:19;:23;;;;;;;;22738:52;22730:87;;;;-1:-1:-1;;;22730:87:0;;11229:2:1;22730:87:0;;;11211:21:1;11268:2;11248:18;;;11241:30;-1:-1:-1;;;11287:18:1;;;11280:52;11349:18;;22730:87:0;11027:346:1;22730:87:0;22993:20;;;;22989:425;;;622:6;;-1:-1:-1;;;;;23042:13:0;;;622:6;;23042:13;;;;:47;;;23073:15;-1:-1:-1;;;;;23059:30:0;:2;-1:-1:-1;;;;;23059:30:0;;;23042:47;:79;;;;-1:-1:-1;23107:13:0;;-1:-1:-1;;;;;23093:28:0;;;23107:13;;23093:28;;23042:79;23038:357;;;23187:9;23158:39;;;;:28;:39;;;;;;23200:12;-1:-1:-1;23150:140:0;;;;-1:-1:-1;;;23150:140:0;;11580:2:1;23150:140:0;;;11562:21:1;11619:2;11599:18;;;11592:30;11658:34;11638:18;;;11631:62;11729:34;11709:18;;;11702:62;-1:-1:-1;;;11780:19:1;;;11773:40;11830:19;;23150:140:0;11378:477:1;23150:140:0;23346:9;23317:39;;;;:28;:39;;;;;23359:12;23317:54;;23038:357;-1:-1:-1;;;;;23466:31:0;;;;;;:25;:31;;;;;;;;:56;;;;-1:-1:-1;;;;;;23502:20:0;;;;;;:16;:20;;;;;;;;23501:21;23466:56;23462:647;;;23565:5;;23555:6;:15;;23547:66;;;;-1:-1:-1;;;23547:66:0;;12062:2:1;23547:66:0;;;12044:21:1;12101:2;12081:18;;;12074:30;12140:34;12120:18;;;12113:62;-1:-1:-1;;;12191:18:1;;;12184:36;12237:19;;23547:66:0;11860:402:1;23547:66:0;23670:10;;-1:-1:-1;;;;;3188:18:0;;3161:7;3188:18;;;;;;;;;;;23644:22;;:6;:22;:::i;:::-;:36;;23636:68;;;;-1:-1:-1;;;23636:68:0;;12469:2:1;23636:68:0;;;12451:21:1;12508:2;12488:18;;;12481:30;-1:-1:-1;;;12527:18:1;;;12520:49;12586:18;;23636:68:0;12267:343:1;23636:68:0;23462:647;;;-1:-1:-1;;;;;23780:29:0;;;;;;:25;:29;;;;;;;;:56;;;;-1:-1:-1;;;;;;23814:22:0;;;;;;:16;:22;;;;;;;;23813:23;23780:56;23776:333;;;23879:5;;23869:6;:15;;23861:67;;;;-1:-1:-1;;;23861:67:0;;12817:2:1;23861:67:0;;;12799:21:1;12856:2;12836:18;;;12829:30;12895:34;12875:18;;;12868:62;-1:-1:-1;;;12946:18:1;;;12939:37;12993:19;;23861:67:0;12615:403:1;23776:333:0;-1:-1:-1;;;;;23976:20:0;;;;;;:16;:20;;;;;;;;23971:138;;24055:10;;-1:-1:-1;;;;;3188:18:0;;3161:7;3188:18;;;;;;;;;;;24029:22;;:6;:22;:::i;:::-;:36;;24021:68;;;;-1:-1:-1;;;24021:68:0;;12469:2:1;24021:68:0;;;12451:21:1;12508:2;12488:18;;;12481:30;-1:-1:-1;;;12527:18:1;;;12520:49;12586:18;;24021:68:0;12267:343:1;24021:68:0;24196:4;24147:28;3188:18;;;;;;;;;;;24252;;24228:42;;;;;;;24287:35;;-1:-1:-1;24311:11:0;;;;;;;24287:35;:61;;;;-1:-1:-1;24340:8:0;;-1:-1:-1;;;24340:8:0;;;;24339:9;24287:61;:110;;;;-1:-1:-1;;;;;;24366:31:0;;;;;;:25;:31;;;;;;;;24365:32;24287:110;:153;;;;-1:-1:-1;;;;;;24415:25:0;;;;;;:19;:25;;;;;;;;24414:26;24287:153;:194;;;;-1:-1:-1;;;;;;24458:23:0;;;;;;:19;:23;;;;;;;;24457:24;24287:194;24283:308;;;24498:8;:15;;-1:-1:-1;;;;24498:15:0;-1:-1:-1;;;24498:15:0;;;24530:16;24539:6;24530:8;:16::i;:::-;24563:8;:16;;-1:-1:-1;;;;24563:16:0;;;24283:308;24619:8;;-1:-1:-1;;;;;24729:25:0;;24603:12;24729:25;;;:19;:25;;;;;;24619:8;-1:-1:-1;;;24619:8:0;;;;;24618:9;;24729:25;;:52;;-1:-1:-1;;;;;;24758:23:0;;;;;;:19;:23;;;;;;;;24729:52;24725:100;;;-1:-1:-1;24808:5:0;24725:100;24837:12;24942:7;24938:1126;;;25001:11;;24985:13;;:27;;;;:::i;:::-;24970:12;:42;24966:949;;;25022:23;25041:3;25022:14;:6;25033:2;25022:10;:14::i;:::-;:18;;:23::i;:::-;25015:30;;24966:949;;;-1:-1:-1;;;;;25104:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;25153:1;25137:13;;:17;25104:50;25100:800;;;25186:34;25216:3;25186:25;25197:13;;25186:6;:10;;:25;;;;:::i;:34::-;25179:41;;25281:13;;25267:10;;25260:4;:17;;;;:::i;:::-;25259:35;;;;:::i;:::-;25243:12;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;25367:13:0;;25347:16;;25340:23;;:4;:23;:::i;:::-;25339:41;;;;:::i;:::-;25317:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;25445:13:0;;25429:12;;25422:19;;:4;:19;:::i;:::-;25421:37;;;;:::i;:::-;25403:14;;:55;;;;;;;:::i;:::-;;;;-1:-1:-1;25100:800:0;;-1:-1:-1;25100:800:0;;-1:-1:-1;;;;;25532:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;25582:1;25567:12;;:16;25532:51;25528:372;;;25615:33;25644:3;25615:24;25626:12;;25615:6;:10;;:24;;;;:::i;:33::-;25608:40;;25708:12;;25695:9;;25688:4;:16;;;;:::i;:::-;25687:33;;;;:::i;:::-;25671:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;25792:12:0;;25773:15;;25766:22;;:4;:22;:::i;:::-;25765:39;;;;:::i;:::-;25743:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;25868:12:0;;25853:11;;25846:18;;:4;:18;:::i;:::-;25845:35;;;;:::i;:::-;25827:14;;:53;;;;;;;:::i;:::-;;;;-1:-1:-1;;25528:372:0;25935:8;;25931:91;;25964:42;25980:4;25994;26001;25964:15;:42::i;:::-;26038:14;26048:4;26038:14;;:::i;:::-;;;24938:1126;26076:33;26092:4;26098:2;26102:6;26076:15;:33::i;:::-;22107:4010;;;;21994:4123;;;:::o;1092:191::-;1185:6;;;-1:-1:-1;;;;;1202:17:0;;;-1:-1:-1;;;;;;1202:17:0;;;;;;;1235:40;;1185:6;;;1202:17;1185:6;;1235:40;;1166:16;;1235:40;1155:128;1092:191;:::o;21664:188::-;-1:-1:-1;;;;;21747:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;21747:39:0;;;;;;;;;;21804:40;;21747:39;;:31;21804:40;;;21664:188;;:::o;26475:589::-;26625:16;;;26639:1;26625:16;;;;;;;;26601:21;;26625:16;;;;;;;;;;-1:-1:-1;26625:16:0;26601:40;;26670:4;26652;26657:1;26652:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;26652:23:0;;;-1:-1:-1;;;;;26652:23:0;;;;;26696:15;-1:-1:-1;;;;;26696:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26686:4;26691:1;26686:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;26686:32:0;;;-1:-1:-1;;;;;26686:32:0;;;;;26731:62;26748:4;26763:15;26781:11;26731:8;:62::i;:::-;26832:224;;-1:-1:-1;;;26832:224:0;;-1:-1:-1;;;;;26832:15:0;:66;;;;:224;;26913:11;;26939:1;;26983:4;;27010;;27030:15;;26832:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26530:534;26475:589;:::o;4885:815::-;-1:-1:-1;;;;;5025:20:0;;5017:70;;;;-1:-1:-1;;;5017:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5106:23:0;;5098:71;;;;-1:-1:-1;;;5098:71:0;;;;;;;:::i;:::-;5197:1;5188:6;:10;5180:71;;;;-1:-1:-1;;;5180:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5348:17:0;;5324:21;5348:17;;;;;;;;;;;5384:23;;;;5376:74;;;;-1:-1:-1;;;5376:74:0;;14863:2:1;5376:74:0;;;14845:21:1;14902:2;14882:18;;;14875:30;14941:34;14921:18;;;14914:62;-1:-1:-1;;;14992:18:1;;;14985:36;15038:19;;5376:74:0;14661:402:1;5376:74:0;-1:-1:-1;;;;;5486:17:0;;;:9;:17;;;;;;;;;;;5506:22;;;5486:42;;5550:20;;;;;;;;:30;;5522:6;;5486:9;5550:30;;5522:6;;5550:30;:::i;:::-;;;;;;;;5615:9;-1:-1:-1;;;;;5598:35:0;5607:6;-1:-1:-1;;;;;5598:35:0;;5626:6;5598:35;;;;1596:25:1;;1584:2;1569:18;;1450:177;5598:35:0;;;;;;;;5646:46;5006:694;4885:815;;;:::o;27072:507::-;27166:4;27122:23;3188:18;;;;;;;;;;;;27189:20;;;27185:59;;27226:7;27072:507;:::o;27185:59::-;27278:10;;27260:15;:28;27256:89;;;-1:-1:-1;27323:10:0;;27256:89;27365:18;;27359:3;:24;27355:217;;;27400:33;27417:15;27400:16;:33::i;:::-;27518:15;;27510:50;;27474:21;;-1:-1:-1;;;;;27518:15:0;;27510:50;;;;;27474:21;;27448:23;27510:50;27448:23;27510:50;27474:21;27518:15;27510:50;;;;;;;;;;;;;;;;;;;8720:98;8778:7;8805:5;8809:1;8805;:5;:::i;:::-;8798:12;8720:98;-1:-1:-1;;;8720:98:0:o;8826:::-;8884:7;8911:5;8915:1;8911;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1632:180::-;1691:6;1744:2;1732:9;1723:7;1719:23;1715:32;1712:52;;;1760:1;1757;1750:12;1712:52;-1:-1:-1;1783:23:1;;1632:180;-1:-1:-1;1632:180:1:o;1817:456::-;1894:6;1902;1910;1963:2;1951:9;1942:7;1938:23;1934:32;1931:52;;;1979:1;1976;1969:12;1931:52;2018:9;2005:23;2037:31;2062:5;2037:31;:::i;:::-;2087:5;-1:-1:-1;2144:2:1;2129:18;;2116:32;2157:33;2116:32;2157:33;:::i;:::-;1817:456;;2209:7;;-1:-1:-1;;;2263:2:1;2248:18;;;;2235:32;;1817:456::o;2675:247::-;2734:6;2787:2;2775:9;2766:7;2762:23;2758:32;2755:52;;;2803:1;2800;2793:12;2755:52;2842:9;2829:23;2861:31;2886:5;2861:31;:::i;2927:160::-;2992:20;;3048:13;;3041:21;3031:32;;3021:60;;3077:1;3074;3067:12;3021:60;2927:160;;;:::o;3092:315::-;3157:6;3165;3218:2;3206:9;3197:7;3193:23;3189:32;3186:52;;;3234:1;3231;3224:12;3186:52;3273:9;3260:23;3292:31;3317:5;3292:31;:::i;:::-;3342:5;-1:-1:-1;3366:35:1;3397:2;3382:18;;3366:35;:::i;:::-;3356:45;;3092:315;;;;;:::o;3412:180::-;3468:6;3521:2;3509:9;3500:7;3496:23;3492:32;3489:52;;;3537:1;3534;3527:12;3489:52;3560:26;3576:9;3560:26;:::i;3597:388::-;3665:6;3673;3726:2;3714:9;3705:7;3701:23;3697:32;3694:52;;;3742:1;3739;3732:12;3694:52;3781:9;3768:23;3800:31;3825:5;3800:31;:::i;:::-;3850:5;-1:-1:-1;3907:2:1;3892:18;;3879:32;3920:33;3879:32;3920:33;:::i;:::-;3972:7;3962:17;;;3597:388;;;;;:::o;3990:380::-;4069:1;4065:12;;;;4112;;;4133:61;;4187:4;4179:6;4175:17;4165:27;;4133:61;4240:2;4232:6;4229:14;4209:18;4206:38;4203:161;;4286:10;4281:3;4277:20;4274:1;4267:31;4321:4;4318:1;4311:15;4349:4;4346:1;4339:15;4203:161;;3990:380;;;:::o;4375:356::-;4577:2;4559:21;;;4596:18;;;4589:30;4655:34;4650:2;4635:18;;4628:62;4722:2;4707:18;;4375:356::o;4736:127::-;4797:10;4792:3;4788:20;4785:1;4778:31;4828:4;4825:1;4818:15;4852:4;4849:1;4842:15;4868:168;4941:9;;;4972;;4989:15;;;4983:22;;4969:37;4959:71;;5010:18;;:::i;5041:217::-;5081:1;5107;5097:132;;5151:10;5146:3;5142:20;5139:1;5132:31;5186:4;5183:1;5176:15;5214:4;5211:1;5204:15;5097:132;-1:-1:-1;5243:9:1;;5041:217::o;6439:125::-;6504:9;;;6525:10;;;6522:36;;;6538:18;;:::i;9800:401::-;10002:2;9984:21;;;10041:2;10021:18;;;10014:30;10080:34;10075:2;10060:18;;10053:62;-1:-1:-1;;;10146:2:1;10131:18;;10124:35;10191:3;10176:19;;9800:401::o;10206:399::-;10408:2;10390:21;;;10447:2;10427:18;;;10420:30;10486:34;10481:2;10466:18;;10459:62;-1:-1:-1;;;10552:2:1;10537:18;;10530:33;10595:3;10580:19;;10206:399::o;10610:412::-;10812:2;10794:21;;;10851:2;10831:18;;;10824:30;10890:34;10885:2;10870:18;;10863:62;-1:-1:-1;;;10956:2:1;10941:18;;10934:46;11012:3;10997:19;;10610:412::o;13023:128::-;13090:9;;;13111:11;;;13108:37;;;13125:18;;:::i;13288:127::-;13349:10;13344:3;13340:20;13337:1;13330:31;13380:4;13377:1;13370:15;13404:4;13401:1;13394:15;13420:251;13490:6;13543:2;13531:9;13522:7;13518:23;13514:32;13511:52;;;13559:1;13556;13549:12;13511:52;13591:9;13585:16;13610:31;13635:5;13610:31;:::i;13676:980::-;13938:4;13986:3;13975:9;13971:19;14017:6;14006:9;13999:25;14043:2;14081:6;14076:2;14065:9;14061:18;14054:34;14124:3;14119:2;14108:9;14104:18;14097:31;14148:6;14183;14177:13;14214:6;14206;14199:22;14252:3;14241:9;14237:19;14230:26;;14291:2;14283:6;14279:15;14265:29;;14312:1;14322:195;14336:6;14333:1;14330:13;14322:195;;;14401:13;;-1:-1:-1;;;;;14397:39:1;14385:52;;14492:15;;;;14457:12;;;;14433:1;14351:9;14322:195;;;-1:-1:-1;;;;;;;14573:32:1;;;;14568:2;14553:18;;14546:60;-1:-1:-1;;;14637:3:1;14622:19;14615:35;14534:3;13676:980;-1:-1:-1;;;13676:980:1:o

Swarm Source

ipfs://835fcc14918dcc89231d0f5387b0638439bf1fee9ab5620ef2278a48f3536b8a
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.