ETH Price: $3,502.16 (+2.13%)
Gas: 2 Gwei

Token

Life Of A Degen (LOAD)
 

Overview

Max Total Supply

1,000,000,000 LOAD

Holders

86

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1 LOAD

Value
$0.00
0x8d1ff6bbc60e63b4927a7605c31338056ec40630
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:
LOAD

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-15
*/

/**
 *Submitted for verification at Etherscan.io on 2022-12-15
*/

/*

Website:
https://lifeofadegen.com/

Twitter:
https://twitter.com/Life_OfADegen

Telegram:
https://t.me/LifeOfADegen

For Degens, By Degens.

*/

// SPDX-License-Identifier: Unlicensed
pragma solidity =0.8.17;

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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        emit OwnershipTransferred(_owner, newOwner);
        _owner = 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");

        _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 _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 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 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 LOAD is ERC20, Ownable {
    using SafeMath for uint256;

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

    bool private swapping;

    address public marketingWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public buyTotalFees;
    uint256 private buyMarketingFee;
    uint256 private buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 private sellMarketingFee;
    uint256 private sellLiquidityFee;

    uint256 private tokensForMarketing;
    uint256 private tokensForLiquidity;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;

    mapping(address => bool) private automatedMarketMakerPairs;

    mapping(address => bool) public bots;

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

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

    constructor() ERC20("Life Of A Degen", "LOAD") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

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

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

        uint256 _buyMarketingFee = 5;
        uint256 _buyLiquidityFee = 1;

        uint256 _sellMarketingFee = 10;
        uint256 _sellLiquidityFee = 2;

        uint256 totalSupply = 1000000000 * 1e18;

        maxTransactionAmount = 10000000 * 1e18;
        maxWallet = 20000000 * 1e18;
        swapTokensAtAmount = (totalSupply * 5) / 10000;

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;

        marketingWallet = address(0x21fC8f74fEBe90E1ad9CB2995A44F8193D64DaB3);

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

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

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

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

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

        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxWalletAmount(uint256 newAmount) external onlyOwner {
        require(
            newAmount >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxWallet lower than 0.5%"
        );

        maxWallet = newAmount * (10**18);
    }

    function updateMaxTxnAmount(uint256 newAmount) external onlyOwner {
        require(
            newAmount >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxTxn lower than 0.5%"
        );

        maxTransactionAmount = newAmount * (10**18);
    }

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

    function updateBuyFees(
        uint256 _marketingFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;
        require(buyTotalFees <= 6, "Must keep fees at 6% or less");
    }

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        require(sellTotalFees <= 12, "Must keep fees at 12% or less");
    }

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

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address notBot) public onlyOwner {
        bots[notBot] = false;
    }

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

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

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

            // Buy
            if (
                automatedMarketMakerPairs[from] &&
                !_isExcludedMaxTransactionAmount[to]
            ) {
                require(
                    amount <= maxTransactionAmount,
                    "Buy transfer amount exceeds the maxTransactionAmount."
                );
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "Max wallet exceeded"
                );
            }
            // Sell
            else if (
                automatedMarketMakerPairs[to] &&
                !_isExcludedMaxTransactionAmount[from]
            ) {
                require(
                    amount <= maxTransactionAmount,
                    "Sell transfer amount exceeds the maxTransactionAmount."
                );
            } else if (!_isExcludedMaxTransactionAmount[to]) {
                require(amount + balanceOf(to) <= maxWallet, "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();

            swapping = false;
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;

        if (takeFee) {
            // Sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // Buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

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

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

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

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

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

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

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

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

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

        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(
            totalTokensToSwap
        );

        uint256 ethForLiquidity = ethBalance - ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }

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

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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toExclude","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toExclude","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notBot","type":"address"}],"name":"unblockBot","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":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600a805461ffff191690553480156200001c57600080fd5b506040518060400160405280600f81526020016e2634b3329027b31020902232b3b2b760891b815250604051806040016040528060048152602001631313d05160e21b8152508160039081620000739190620006e2565b506004620000828282620006e2565b5050506200009f620000996200037c60201b60201c565b62000380565b737a250d5630b4cf539739df2c5dacb4c659f2488d620000c1816001620003dc565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200010c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001329190620007ae565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000180573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a69190620007ae565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620001f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021a9190620007ae565b6001600160a01b031660a081905262000235906001620003dc565b60a0516200024590600162000456565b6a084595161401484a0000006007556a108b2a2c2802909400000060095560056001600a60026b033b2e3c9fd0803ce8000000612710620002878287620007f6565b62000293919062000816565b600855600c859055600d849055620002ac848662000839565b600b55600f8390556010829055620002c5828462000839565b600e55600680546001600160a01b0319167321fc8f74febe90e1ad9cb2995a44f8193d64dab31790556200030d620003056005546001600160a01b031690565b6001620004aa565b6200031a306001620004aa565b6200032961dead6001620004aa565b62000348620003406005546001600160a01b031690565b6001620003dc565b62000355306001620003dc565b6200036461dead6001620003dc565b62000370338262000554565b5050505050506200084f565b3390565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146200042b5760405162461bcd60e51b8152602060048201819052602482015260008051602062002dfa83398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260156020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620004f55760405162461bcd60e51b8152602060048201819052602482015260008051602062002dfa833981519152604482015260640162000422565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005ac5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000422565b8060026000828254620005c0919062000839565b90915550506001600160a01b03821660009081526020819052604081208054839290620005ef90849062000839565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200066957607f821691505b6020821081036200068a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200063957600081815260208120601f850160051c81016020861015620006b95750805b601f850160051c820191505b81811015620006da57828155600101620006c5565b505050505050565b81516001600160401b03811115620006fe57620006fe6200063e565b62000716816200070f845462000654565b8462000690565b602080601f8311600181146200074e5760008415620007355750858301515b600019600386901b1c1916600185901b178555620006da565b600085815260208120601f198616915b828110156200077f578886015182559484019460019091019084016200075e565b50858210156200079e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620007c157600080fd5b81516001600160a01b0381168114620007d957600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620008105762000810620007e0565b92915050565b6000826200083457634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620008105762000810620007e0565b60805160a05161255b6200089f600039600081816103e00152610cf80152600081816102e301528181611e0a01528181611ec301528181611eff01528181611f790152611fd6015261255b6000f3fe6080604052600436106102285760003560e01c80637571336a11610123578063bfd79284116100ab578063d85ba0631161006f578063d85ba063146106a3578063dd62ed3e146106b9578063e2f45605146106ff578063f2fde38b14610715578063f8b45b051461073557600080fd5b8063bfd79284146105fd578063c02466681461062d578063c18bc1951461064d578063c8c8ebe41461066d578063d257b34f1461068357600080fd5b806395d89b41116100f257806395d89b411461056e5780639a7a23d614610583578063a457c2d7146105a3578063a9059cbb146105c3578063bbc0c742146105e357600080fd5b80637571336a146104fb57806375f0a8741461051b5780638a8c523c1461053b5780638da5cb5b1461055057600080fd5b8063313ce567116101b15780636a486a8e116101755780636a486a8e1461045b5780636b999053146104715780636ddd17131461049157806370a08231146104b0578063715018a6146104e657600080fd5b8063313ce5671461039257806339509351146103ae57806349bd5a5e146103ce5780634fbee1931461040257806366ca9b831461043b57600080fd5b80631694505e116101f85780631694505e146102d157806318160ddd1461031d578063203e727e1461033c57806323b872dd1461035c57806327c8f8351461037c57600080fd5b8062b8cf2a1461023457806302dbd8f81461025657806306fdde0314610276578063095ea7b3146102a157600080fd5b3661022f57005b600080fd5b34801561024057600080fd5b5061025461024f36600461208a565b61074b565b005b34801561026257600080fd5b5061025461027136600461214f565b6107ea565b34801561028257600080fd5b5061028b61087d565b6040516102989190612171565b60405180910390f35b3480156102ad57600080fd5b506102c16102bc3660046121bf565b61090f565b6040519015158152602001610298565b3480156102dd57600080fd5b506103057f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610298565b34801561032957600080fd5b506002545b604051908152602001610298565b34801561034857600080fd5b506102546103573660046121eb565b610926565b34801561036857600080fd5b506102c1610377366004612204565b6109f5565b34801561038857600080fd5b5061030561dead81565b34801561039e57600080fd5b5060405160128152602001610298565b3480156103ba57600080fd5b506102c16103c93660046121bf565b610a9f565b3480156103da57600080fd5b506103057f000000000000000000000000000000000000000000000000000000000000000081565b34801561040e57600080fd5b506102c161041d366004612245565b6001600160a01b031660009081526013602052604090205460ff1690565b34801561044757600080fd5b5061025461045636600461214f565b610adb565b34801561046757600080fd5b5061032e600e5481565b34801561047d57600080fd5b5061025461048c366004612245565b610b6e565b34801561049d57600080fd5b50600a546102c190610100900460ff1681565b3480156104bc57600080fd5b5061032e6104cb366004612245565b6001600160a01b031660009081526020819052604090205490565b3480156104f257600080fd5b50610254610bb9565b34801561050757600080fd5b50610254610516366004612262565b610c2d565b34801561052757600080fd5b50600654610305906001600160a01b031681565b34801561054757600080fd5b50610254610c82565b34801561055c57600080fd5b506005546001600160a01b0316610305565b34801561057a57600080fd5b5061028b610cbd565b34801561058f57600080fd5b5061025461059e366004612262565b610ccc565b3480156105af57600080fd5b506102c16105be3660046121bf565b610da7565b3480156105cf57600080fd5b506102c16105de3660046121bf565b610e40565b3480156105ef57600080fd5b50600a546102c19060ff1681565b34801561060957600080fd5b506102c1610618366004612245565b60166020526000908152604090205460ff1681565b34801561063957600080fd5b50610254610648366004612262565b610e4d565b34801561065957600080fd5b506102546106683660046121eb565b610ed6565b34801561067957600080fd5b5061032e60075481565b34801561068f57600080fd5b506102c161069e3660046121eb565b610fa7565b3480156106af57600080fd5b5061032e600b5481565b3480156106c557600080fd5b5061032e6106d43660046122a0565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561070b57600080fd5b5061032e60085481565b34801561072157600080fd5b50610254610730366004612245565b6110fe565b34801561074157600080fd5b5061032e60095481565b6005546001600160a01b0316331461077e5760405162461bcd60e51b8152600401610775906122ce565b60405180910390fd5b60005b81518110156107e6576001601660008484815181106107a2576107a2612303565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806107de8161232f565b915050610781565b5050565b6005546001600160a01b031633146108145760405162461bcd60e51b8152600401610775906122ce565b600f82905560108190556108288183612348565b600e819055600c10156107e65760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313225206f72206c6573730000006044820152606401610775565b60606003805461088c9061235b565b80601f01602080910402602001604051908101604052809291908181526020018280546108b89061235b565b80156109055780601f106108da57610100808354040283529160200191610905565b820191906000526020600020905b8154815290600101906020018083116108e857829003601f168201915b5050505050905090565b600061091c338484611199565b5060015b92915050565b6005546001600160a01b031633146109505760405162461bcd60e51b8152600401610775906122ce565b670de0b6b3a76400006103e861096560025490565b610970906005612395565b61097a91906123ac565b61098491906123ac565b8110156109dd5760405162461bcd60e51b815260206004820152602160248201527f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e356044820152602560f81b6064820152608401610775565b6109ef81670de0b6b3a7640000612395565b60075550565b6000610a028484846112bd565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a875760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610775565b610a948533858403611199565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161091c918590610ad6908690612348565b611199565b6005546001600160a01b03163314610b055760405162461bcd60e51b8152600401610775906122ce565b600c829055600d819055610b198183612348565b600b819055600610156107e65760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702066656573206174203625206f72206c657373000000006044820152606401610775565b6005546001600160a01b03163314610b985760405162461bcd60e51b8152600401610775906122ce565b6001600160a01b03166000908152601660205260409020805460ff19169055565b6005546001600160a01b03163314610be35760405162461bcd60e51b8152600401610775906122ce565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610c575760405162461bcd60e51b8152600401610775906122ce565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610cac5760405162461bcd60e51b8152600401610775906122ce565b600a805461ffff1916610101179055565b60606004805461088c9061235b565b6005546001600160a01b03163314610cf65760405162461bcd60e51b8152600401610775906122ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610d9d5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610775565b6107e682826119da565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610e295760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610775565b610e363385858403611199565b5060019392505050565b600061091c3384846112bd565b6005546001600160a01b03163314610e775760405162461bcd60e51b8152600401610775906122ce565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610f005760405162461bcd60e51b8152600401610775906122ce565b670de0b6b3a76400006103e8610f1560025490565b610f20906005612395565b610f2a91906123ac565b610f3491906123ac565b811015610f8f5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610775565b610fa181670de0b6b3a7640000612395565b60095550565b6005546000906001600160a01b03163314610fd45760405162461bcd60e51b8152600401610775906122ce565b620186a0610fe160025490565b610fec906001612395565b610ff691906123ac565b8210156110635760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610775565b6103e861106f60025490565b61107a906005612395565b61108491906123ac565b8211156110f05760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610775565b50600881905560015b919050565b6005546001600160a01b031633146111285760405162461bcd60e51b8152600401610775906122ce565b6001600160a01b03811661118d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610775565b61119681611a2e565b50565b6001600160a01b0383166111fb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610775565b6001600160a01b03821661125c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610775565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112e35760405162461bcd60e51b8152600401610775906123ce565b6001600160a01b0382166113095760405162461bcd60e51b815260040161077590612413565b806000036113225761131d83836000611a8a565b505050565b6005546001600160a01b0384811691161480159061134e57506005546001600160a01b03838116911614155b801561136257506001600160a01b03821615155b801561137957506001600160a01b03821661dead14155b801561138f5750600554600160a01b900460ff16155b1561170657600a5460ff16611422576001600160a01b03831660009081526013602052604090205460ff16806113dd57506001600160a01b03821660009081526013602052604090205460ff165b6114225760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610775565b6001600160a01b03831660009081526016602052604090205460ff1615801561146457506001600160a01b03821660009081526016602052604090205460ff16155b6114a05760405162461bcd60e51b815260206004820152600d60248201526c2734b1b2903a393c9039b2b91760991b6044820152606401610775565b6001600160a01b03831660009081526015602052604090205460ff1680156114e157506001600160a01b03821660009081526014602052604090205460ff16155b156115c5576007548111156115565760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610775565b6009546001600160a01b03831660009081526020819052604090205461157c9083612348565b11156115c05760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610775565b611706565b6001600160a01b03821660009081526015602052604090205460ff16801561160657506001600160a01b03831660009081526014602052604090205460ff16155b1561167c576007548111156115c05760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610775565b6001600160a01b03821660009081526014602052604090205460ff16611706576009546001600160a01b0383166000908152602081905260409020546116c29083612348565b11156117065760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610775565b30600090815260208190526040902054600854811080159081906117315750600a54610100900460ff165b80156117475750600554600160a01b900460ff16155b801561176c57506001600160a01b03851660009081526015602052604090205460ff16155b801561179157506001600160a01b03851660009081526013602052604090205460ff16155b80156117b657506001600160a01b03841660009081526013602052604090205460ff16155b156117e4576005805460ff60a01b1916600160a01b1790556117d6611bdf565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526013602052604090205460ff600160a01b90920482161591168061183257506001600160a01b03851660009081526013602052604090205460ff165b1561183b575060005b600081156119c6576001600160a01b03861660009081526015602052604090205460ff16801561186d57506000600e54115b156118fb57611892606461188c600e5488611d8890919063ffffffff16565b90611d9b565b9050600e54601054826118a59190612395565b6118af91906123ac565b601260008282546118c09190612348565b9091555050600e54600f546118d59083612395565b6118df91906123ac565b601160008282546118f09190612348565b909155506119a89050565b6001600160a01b03871660009081526015602052604090205460ff16801561192557506000600b54115b156119a857611944606461188c600b5488611d8890919063ffffffff16565b9050600b54600d54826119579190612395565b61196191906123ac565b601260008282546119729190612348565b9091555050600b54600c546119879083612395565b61199191906123ac565b601160008282546119a29190612348565b90915550505b80156119b9576119b9873083611a8a565b6119c38186612456565b94505b6119d1878787611a8a565b50505050505050565b6001600160a01b038216600081815260156020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611ab05760405162461bcd60e51b8152600401610775906123ce565b6001600160a01b038216611ad65760405162461bcd60e51b815260040161077590612413565b6001600160a01b03831660009081526020819052604090205481811015611b4e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610775565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611b85908490612348565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bd191815260200190565b60405180910390a350505050565b3060009081526020819052604081205490506000601154601254611c039190612348565b90506000821580611c12575081155b15611c1c57505050565b600854611c2a906014612395565b831115611c4257600854611c3f906014612395565b92505b600060028360125486611c559190612395565b611c5f91906123ac565b611c6991906123ac565b90506000611c778583611da7565b905047611c8382611db3565b6000611c8f4783611da7565b90506000611cac8761188c60115485611d8890919063ffffffff16565b90506000611cba8284612456565b6000601281905560115590508515801590611cd55750600081115b15611d2857611ce48682611f73565b601254604080518781526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611d75576040519150601f19603f3d011682016040523d82523d6000602084013e611d7a565b606091505b505050505050505050505050565b6000611d948284612395565b9392505050565b6000611d9482846123ac565b6000611d948284612456565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611de857611de8612303565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8a9190612469565b81600181518110611e9d57611e9d612303565b60200260200101906001600160a01b031690816001600160a01b031681525050611ee8307f000000000000000000000000000000000000000000000000000000000000000084611199565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611f3d908590600090869030904290600401612486565b600060405180830381600087803b158015611f5757600080fd5b505af1158015611f6b573d6000803e3d6000fd5b505050505050565b611f9e307f000000000000000000000000000000000000000000000000000000000000000084611199565b60405163f305d71960e01b815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015612028573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061204d91906124f7565b5050505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461119657600080fd5b80356110f98161206a565b6000602080838503121561209d57600080fd5b823567ffffffffffffffff808211156120b557600080fd5b818501915085601f8301126120c957600080fd5b8135818111156120db576120db612054565b8060051b604051601f19603f8301168101818110858211171561210057612100612054565b60405291825284820192508381018501918883111561211e57600080fd5b938501935b82851015612143576121348561207f565b84529385019392850192612123565b98975050505050505050565b6000806040838503121561216257600080fd5b50508035926020909101359150565b600060208083528351808285015260005b8181101561219e57858101830151858201604001528201612182565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156121d257600080fd5b82356121dd8161206a565b946020939093013593505050565b6000602082840312156121fd57600080fd5b5035919050565b60008060006060848603121561221957600080fd5b83356122248161206a565b925060208401356122348161206a565b929592945050506040919091013590565b60006020828403121561225757600080fd5b8135611d948161206a565b6000806040838503121561227557600080fd5b82356122808161206a565b91506020830135801515811461229557600080fd5b809150509250929050565b600080604083850312156122b357600080fd5b82356122be8161206a565b915060208301356122958161206a565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161234157612341612319565b5060010190565b8082018082111561092057610920612319565b600181811c9082168061236f57607f821691505b60208210810361238f57634e487b7160e01b600052602260045260246000fd5b50919050565b808202811582820484141761092057610920612319565b6000826123c957634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561092057610920612319565b60006020828403121561247b57600080fd5b8151611d948161206a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124d65784516001600160a01b0316835293830193918301916001016124b1565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561250c57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220d23e712e637bb85387404ee8beb56e70eddeee59874b09535f97dbafa8ab3b2b64736f6c634300081100334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x6080604052600436106102285760003560e01c80637571336a11610123578063bfd79284116100ab578063d85ba0631161006f578063d85ba063146106a3578063dd62ed3e146106b9578063e2f45605146106ff578063f2fde38b14610715578063f8b45b051461073557600080fd5b8063bfd79284146105fd578063c02466681461062d578063c18bc1951461064d578063c8c8ebe41461066d578063d257b34f1461068357600080fd5b806395d89b41116100f257806395d89b411461056e5780639a7a23d614610583578063a457c2d7146105a3578063a9059cbb146105c3578063bbc0c742146105e357600080fd5b80637571336a146104fb57806375f0a8741461051b5780638a8c523c1461053b5780638da5cb5b1461055057600080fd5b8063313ce567116101b15780636a486a8e116101755780636a486a8e1461045b5780636b999053146104715780636ddd17131461049157806370a08231146104b0578063715018a6146104e657600080fd5b8063313ce5671461039257806339509351146103ae57806349bd5a5e146103ce5780634fbee1931461040257806366ca9b831461043b57600080fd5b80631694505e116101f85780631694505e146102d157806318160ddd1461031d578063203e727e1461033c57806323b872dd1461035c57806327c8f8351461037c57600080fd5b8062b8cf2a1461023457806302dbd8f81461025657806306fdde0314610276578063095ea7b3146102a157600080fd5b3661022f57005b600080fd5b34801561024057600080fd5b5061025461024f36600461208a565b61074b565b005b34801561026257600080fd5b5061025461027136600461214f565b6107ea565b34801561028257600080fd5b5061028b61087d565b6040516102989190612171565b60405180910390f35b3480156102ad57600080fd5b506102c16102bc3660046121bf565b61090f565b6040519015158152602001610298565b3480156102dd57600080fd5b506103057f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610298565b34801561032957600080fd5b506002545b604051908152602001610298565b34801561034857600080fd5b506102546103573660046121eb565b610926565b34801561036857600080fd5b506102c1610377366004612204565b6109f5565b34801561038857600080fd5b5061030561dead81565b34801561039e57600080fd5b5060405160128152602001610298565b3480156103ba57600080fd5b506102c16103c93660046121bf565b610a9f565b3480156103da57600080fd5b506103057f0000000000000000000000005a9f1af6642e94c9545520808e7a41060d5d903381565b34801561040e57600080fd5b506102c161041d366004612245565b6001600160a01b031660009081526013602052604090205460ff1690565b34801561044757600080fd5b5061025461045636600461214f565b610adb565b34801561046757600080fd5b5061032e600e5481565b34801561047d57600080fd5b5061025461048c366004612245565b610b6e565b34801561049d57600080fd5b50600a546102c190610100900460ff1681565b3480156104bc57600080fd5b5061032e6104cb366004612245565b6001600160a01b031660009081526020819052604090205490565b3480156104f257600080fd5b50610254610bb9565b34801561050757600080fd5b50610254610516366004612262565b610c2d565b34801561052757600080fd5b50600654610305906001600160a01b031681565b34801561054757600080fd5b50610254610c82565b34801561055c57600080fd5b506005546001600160a01b0316610305565b34801561057a57600080fd5b5061028b610cbd565b34801561058f57600080fd5b5061025461059e366004612262565b610ccc565b3480156105af57600080fd5b506102c16105be3660046121bf565b610da7565b3480156105cf57600080fd5b506102c16105de3660046121bf565b610e40565b3480156105ef57600080fd5b50600a546102c19060ff1681565b34801561060957600080fd5b506102c1610618366004612245565b60166020526000908152604090205460ff1681565b34801561063957600080fd5b50610254610648366004612262565b610e4d565b34801561065957600080fd5b506102546106683660046121eb565b610ed6565b34801561067957600080fd5b5061032e60075481565b34801561068f57600080fd5b506102c161069e3660046121eb565b610fa7565b3480156106af57600080fd5b5061032e600b5481565b3480156106c557600080fd5b5061032e6106d43660046122a0565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561070b57600080fd5b5061032e60085481565b34801561072157600080fd5b50610254610730366004612245565b6110fe565b34801561074157600080fd5b5061032e60095481565b6005546001600160a01b0316331461077e5760405162461bcd60e51b8152600401610775906122ce565b60405180910390fd5b60005b81518110156107e6576001601660008484815181106107a2576107a2612303565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806107de8161232f565b915050610781565b5050565b6005546001600160a01b031633146108145760405162461bcd60e51b8152600401610775906122ce565b600f82905560108190556108288183612348565b600e819055600c10156107e65760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313225206f72206c6573730000006044820152606401610775565b60606003805461088c9061235b565b80601f01602080910402602001604051908101604052809291908181526020018280546108b89061235b565b80156109055780601f106108da57610100808354040283529160200191610905565b820191906000526020600020905b8154815290600101906020018083116108e857829003601f168201915b5050505050905090565b600061091c338484611199565b5060015b92915050565b6005546001600160a01b031633146109505760405162461bcd60e51b8152600401610775906122ce565b670de0b6b3a76400006103e861096560025490565b610970906005612395565b61097a91906123ac565b61098491906123ac565b8110156109dd5760405162461bcd60e51b815260206004820152602160248201527f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e356044820152602560f81b6064820152608401610775565b6109ef81670de0b6b3a7640000612395565b60075550565b6000610a028484846112bd565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a875760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610775565b610a948533858403611199565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161091c918590610ad6908690612348565b611199565b6005546001600160a01b03163314610b055760405162461bcd60e51b8152600401610775906122ce565b600c829055600d819055610b198183612348565b600b819055600610156107e65760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702066656573206174203625206f72206c657373000000006044820152606401610775565b6005546001600160a01b03163314610b985760405162461bcd60e51b8152600401610775906122ce565b6001600160a01b03166000908152601660205260409020805460ff19169055565b6005546001600160a01b03163314610be35760405162461bcd60e51b8152600401610775906122ce565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610c575760405162461bcd60e51b8152600401610775906122ce565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610cac5760405162461bcd60e51b8152600401610775906122ce565b600a805461ffff1916610101179055565b60606004805461088c9061235b565b6005546001600160a01b03163314610cf65760405162461bcd60e51b8152600401610775906122ce565b7f0000000000000000000000005a9f1af6642e94c9545520808e7a41060d5d90336001600160a01b0316826001600160a01b031603610d9d5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610775565b6107e682826119da565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610e295760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610775565b610e363385858403611199565b5060019392505050565b600061091c3384846112bd565b6005546001600160a01b03163314610e775760405162461bcd60e51b8152600401610775906122ce565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610f005760405162461bcd60e51b8152600401610775906122ce565b670de0b6b3a76400006103e8610f1560025490565b610f20906005612395565b610f2a91906123ac565b610f3491906123ac565b811015610f8f5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610775565b610fa181670de0b6b3a7640000612395565b60095550565b6005546000906001600160a01b03163314610fd45760405162461bcd60e51b8152600401610775906122ce565b620186a0610fe160025490565b610fec906001612395565b610ff691906123ac565b8210156110635760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610775565b6103e861106f60025490565b61107a906005612395565b61108491906123ac565b8211156110f05760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610775565b50600881905560015b919050565b6005546001600160a01b031633146111285760405162461bcd60e51b8152600401610775906122ce565b6001600160a01b03811661118d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610775565b61119681611a2e565b50565b6001600160a01b0383166111fb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610775565b6001600160a01b03821661125c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610775565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112e35760405162461bcd60e51b8152600401610775906123ce565b6001600160a01b0382166113095760405162461bcd60e51b815260040161077590612413565b806000036113225761131d83836000611a8a565b505050565b6005546001600160a01b0384811691161480159061134e57506005546001600160a01b03838116911614155b801561136257506001600160a01b03821615155b801561137957506001600160a01b03821661dead14155b801561138f5750600554600160a01b900460ff16155b1561170657600a5460ff16611422576001600160a01b03831660009081526013602052604090205460ff16806113dd57506001600160a01b03821660009081526013602052604090205460ff165b6114225760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610775565b6001600160a01b03831660009081526016602052604090205460ff1615801561146457506001600160a01b03821660009081526016602052604090205460ff16155b6114a05760405162461bcd60e51b815260206004820152600d60248201526c2734b1b2903a393c9039b2b91760991b6044820152606401610775565b6001600160a01b03831660009081526015602052604090205460ff1680156114e157506001600160a01b03821660009081526014602052604090205460ff16155b156115c5576007548111156115565760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610775565b6009546001600160a01b03831660009081526020819052604090205461157c9083612348565b11156115c05760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610775565b611706565b6001600160a01b03821660009081526015602052604090205460ff16801561160657506001600160a01b03831660009081526014602052604090205460ff16155b1561167c576007548111156115c05760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610775565b6001600160a01b03821660009081526014602052604090205460ff16611706576009546001600160a01b0383166000908152602081905260409020546116c29083612348565b11156117065760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610775565b30600090815260208190526040902054600854811080159081906117315750600a54610100900460ff165b80156117475750600554600160a01b900460ff16155b801561176c57506001600160a01b03851660009081526015602052604090205460ff16155b801561179157506001600160a01b03851660009081526013602052604090205460ff16155b80156117b657506001600160a01b03841660009081526013602052604090205460ff16155b156117e4576005805460ff60a01b1916600160a01b1790556117d6611bdf565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526013602052604090205460ff600160a01b90920482161591168061183257506001600160a01b03851660009081526013602052604090205460ff165b1561183b575060005b600081156119c6576001600160a01b03861660009081526015602052604090205460ff16801561186d57506000600e54115b156118fb57611892606461188c600e5488611d8890919063ffffffff16565b90611d9b565b9050600e54601054826118a59190612395565b6118af91906123ac565b601260008282546118c09190612348565b9091555050600e54600f546118d59083612395565b6118df91906123ac565b601160008282546118f09190612348565b909155506119a89050565b6001600160a01b03871660009081526015602052604090205460ff16801561192557506000600b54115b156119a857611944606461188c600b5488611d8890919063ffffffff16565b9050600b54600d54826119579190612395565b61196191906123ac565b601260008282546119729190612348565b9091555050600b54600c546119879083612395565b61199191906123ac565b601160008282546119a29190612348565b90915550505b80156119b9576119b9873083611a8a565b6119c38186612456565b94505b6119d1878787611a8a565b50505050505050565b6001600160a01b038216600081815260156020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611ab05760405162461bcd60e51b8152600401610775906123ce565b6001600160a01b038216611ad65760405162461bcd60e51b815260040161077590612413565b6001600160a01b03831660009081526020819052604090205481811015611b4e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610775565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611b85908490612348565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bd191815260200190565b60405180910390a350505050565b3060009081526020819052604081205490506000601154601254611c039190612348565b90506000821580611c12575081155b15611c1c57505050565b600854611c2a906014612395565b831115611c4257600854611c3f906014612395565b92505b600060028360125486611c559190612395565b611c5f91906123ac565b611c6991906123ac565b90506000611c778583611da7565b905047611c8382611db3565b6000611c8f4783611da7565b90506000611cac8761188c60115485611d8890919063ffffffff16565b90506000611cba8284612456565b6000601281905560115590508515801590611cd55750600081115b15611d2857611ce48682611f73565b601254604080518781526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611d75576040519150601f19603f3d011682016040523d82523d6000602084013e611d7a565b606091505b505050505050505050505050565b6000611d948284612395565b9392505050565b6000611d9482846123ac565b6000611d948284612456565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611de857611de8612303565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8a9190612469565b81600181518110611e9d57611e9d612303565b60200260200101906001600160a01b031690816001600160a01b031681525050611ee8307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611199565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611f3d908590600090869030904290600401612486565b600060405180830381600087803b158015611f5757600080fd5b505af1158015611f6b573d6000803e3d6000fd5b505050505050565b611f9e307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611199565b60405163f305d71960e01b815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015612028573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061204d91906124f7565b5050505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461119657600080fd5b80356110f98161206a565b6000602080838503121561209d57600080fd5b823567ffffffffffffffff808211156120b557600080fd5b818501915085601f8301126120c957600080fd5b8135818111156120db576120db612054565b8060051b604051601f19603f8301168101818110858211171561210057612100612054565b60405291825284820192508381018501918883111561211e57600080fd5b938501935b82851015612143576121348561207f565b84529385019392850192612123565b98975050505050505050565b6000806040838503121561216257600080fd5b50508035926020909101359150565b600060208083528351808285015260005b8181101561219e57858101830151858201604001528201612182565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156121d257600080fd5b82356121dd8161206a565b946020939093013593505050565b6000602082840312156121fd57600080fd5b5035919050565b60008060006060848603121561221957600080fd5b83356122248161206a565b925060208401356122348161206a565b929592945050506040919091013590565b60006020828403121561225757600080fd5b8135611d948161206a565b6000806040838503121561227557600080fd5b82356122808161206a565b91506020830135801515811461229557600080fd5b809150509250929050565b600080604083850312156122b357600080fd5b82356122be8161206a565b915060208301356122958161206a565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161234157612341612319565b5060010190565b8082018082111561092057610920612319565b600181811c9082168061236f57607f821691505b60208210810361238f57634e487b7160e01b600052602260045260246000fd5b50919050565b808202811582820484141761092057610920612319565b6000826123c957634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561092057610920612319565b60006020828403121561247b57600080fd5b8151611d948161206a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124d65784516001600160a01b0316835293830193918301916001016124b1565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561250c57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220d23e712e637bb85387404ee8beb56e70eddeee59874b09535f97dbafa8ab3b2b64736f6c63430008110033

Deployed Bytecode Sourcemap

14412:12273:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19991:169;;;;;;;;;;-1:-1:-1;19991:169:0;;;;;:::i;:::-;;:::i;:::-;;19439:342;;;;;;;;;;-1:-1:-1;19439:342:0;;;;;:::i;:::-;;:::i;2896:100::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3812:171;;;;;;;;;;-1:-1:-1;3812:171:0;;;;;:::i;:::-;;:::i;:::-;;;2838:14:1;;2831:22;2813:41;;2801:2;2786:18;3812:171:0;2673:187:1;14486:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3056:32:1;;;3038:51;;3026:2;3011:18;14486:51:0;2865:230:1;3217:108:0;;;;;;;;;;-1:-1:-1;3305:12:0;;3217:108;;;3246:25:1;;;3234:2;3219:18;3217:108:0;3100:177:1;18625:272:0;;;;;;;;;;-1:-1:-1;18625:272:0;;;;;:::i;:::-;;:::i;3991:494::-;;;;;;;;;;-1:-1:-1;3991:494:0;;;;;:::i;:::-;;:::i;14589:53::-;;;;;;;;;;;;14635:6;14589:53;;3116:93;;;;;;;;;;-1:-1:-1;3116:93:0;;3199:2;4278:36:1;;4266:2;4251:18;3116:93:0;4136:184:1;4493:217:0;;;;;;;;;;-1:-1:-1;4493:217:0;;;;;:::i;:::-;;:::i;14544:38::-;;;;;;;;;;;;;;;20776:126;;;;;;;;;;-1:-1:-1;20776:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;20866:28:0;20842:4;20866:28;;;:19;:28;;;;;;;;;20776:126;19098:333;;;;;;;;;;-1:-1:-1;19098:333:0;;;;;:::i;:::-;;:::i;15027:28::-;;;;;;;;;;;;;;;;20168:92;;;;;;;;;;-1:-1:-1;20168:92:0;;;;;:::i;:::-;;:::i;14875:31::-;;;;;;;;;;-1:-1:-1;14875:31:0;;;;;;;;;;;3333:127;;;;;;;;;;-1:-1:-1;3333:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3434:18:0;3407:7;3434:18;;;;;;;;;;;;3333:127;1013:148;;;;;;;;;;;;;:::i;18905:185::-;;;;;;;;;;-1:-1:-1;18905:185:0;;;;;:::i;:::-;;:::i;14681:30::-;;;;;;;;;;-1:-1:-1;14681:30:0;;;;-1:-1:-1;;;;;14681:30:0;;;17723:112;;;;;;;;;;;;;:::i;790:87::-;;;;;;;;;;-1:-1:-1;863:6:0;;-1:-1:-1;;;;;863:6:0;790:87;;3004:104;;;;;;;;;;;;;:::i;20268:304::-;;;;;;;;;;-1:-1:-1;20268:304:0;;;;;:::i;:::-;;:::i;4718:415::-;;;;;;;;;;-1:-1:-1;4718:415:0;;;;;:::i;:::-;;:::i;3468:177::-;;;;;;;;;;-1:-1:-1;3468:177:0;;;;;:::i;:::-;;:::i;14835:33::-;;;;;;;;;;-1:-1:-1;14835:33:0;;;;;;;;15425:36;;;;;;;;;;-1:-1:-1;15425:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19789:194;;;;;;;;;;-1:-1:-1;19789:194:0;;;;;:::i;:::-;;:::i;18350:267::-;;;;;;;;;;-1:-1:-1;18350:267:0;;;;;:::i;:::-;;:::i;14720:35::-;;;;;;;;;;;;;;;;17843:499;;;;;;;;;;-1:-1:-1;17843:499:0;;;;;:::i;:::-;;:::i;14915:27::-;;;;;;;;;;;;;;;;3653:151;;;;;;;;;;-1:-1:-1;3653:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3769:18:0;;;3742:7;3769:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3653:151;14762:33;;;;;;;;;;;;;;;;1169:201;;;;;;;;;;-1:-1:-1;1169:201:0;;;;;:::i;:::-;;:::i;14802:24::-;;;;;;;;;;;;;;;;19991:169;863:6;;-1:-1:-1;;;;;863:6:0;416:10;925:23;917:68;;;;-1:-1:-1;;;917:68:0;;;;;;;:::i;:::-;;;;;;;;;20067:9:::1;20062:91;20086:5;:12;20082:1;:16;20062:91;;;20137:4;20120;:14;20125:5;20131:1;20125:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;20120:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;20120:14:0;:21;;-1:-1:-1;;20120:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20100:3;::::1;::::0;::::1;:::i;:::-;;;;20062:91;;;;19991:169:::0;:::o;19439:342::-;863:6;;-1:-1:-1;;;;;863:6:0;416:10;925:23;917:68;;;;-1:-1:-1;;;917:68:0;;;;;;;:::i;:::-;19564:16:::1;:32:::0;;;19607:16:::1;:32:::0;;;19666:35:::1;19626:13:::0;19583;19666:35:::1;:::i;:::-;19650:13;:51:::0;;;19737:2:::1;-1:-1:-1::0;19720:19:0::1;19712:61;;;::::0;-1:-1:-1;;;19712:61:0;;6488:2:1;19712:61:0::1;::::0;::::1;6470:21:1::0;6527:2;6507:18;;;6500:30;6566:31;6546:18;;;6539:59;6615:18;;19712:61:0::1;6286:353:1::0;2896:100:0;2950:13;2983:5;2976:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2896:100;:::o;3812:171::-;3895:4;3912:39;416:10;3935:7;3944:6;3912:8;:39::i;:::-;-1:-1:-1;3971:4:0;3812:171;;;;;:::o;18625:272::-;863:6;;-1:-1:-1;;;;;863:6:0;416:10;925:23;917:68;;;;-1:-1:-1;;;917:68:0;;;;;;;:::i;:::-;18768:4:::1;18760;18739:13;3305:12:::0;;;3217:108;18739:13:::1;:17;::::0;18755:1:::1;18739:17;:::i;:::-;18738:26;;;;:::i;:::-;18737:35;;;;:::i;:::-;18724:9;:48;;18702:131;;;::::0;-1:-1:-1;;;18702:131:0;;7626:2:1;18702:131:0::1;::::0;::::1;7608:21:1::0;7665:2;7645:18;;;7638:30;7704:34;7684:18;;;7677:62;-1:-1:-1;;;7755:18:1;;;7748:31;7796:19;;18702:131:0::1;7424:397:1::0;18702:131:0::1;18869:20;:9:::0;18882:6:::1;18869:20;:::i;:::-;18846;:43:::0;-1:-1:-1;18625:272:0:o;3991:494::-;4131:4;4148:36;4158:6;4166:9;4177:6;4148:9;:36::i;:::-;-1:-1:-1;;;;;4224:19:0;;4197:24;4224:19;;;:11;:19;;;;;;;;416:10;4224:33;;;;;;;;4276:26;;;;4268:79;;;;-1:-1:-1;;;4268:79:0;;8028:2:1;4268:79:0;;;8010:21:1;8067:2;8047:18;;;8040:30;8106:34;8086:18;;;8079:62;-1:-1:-1;;;8157:18:1;;;8150:38;8205:19;;4268:79:0;7826:404:1;4268:79:0;4385:57;4394:6;416:10;4435:6;4416:16;:25;4385:8;:57::i;:::-;-1:-1:-1;4473:4:0;;3991:494;-1:-1:-1;;;;3991:494:0:o;4493:217::-;416:10;4581:4;4630:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4630:34:0;;;;;;;;;;4581:4;;4598:80;;4621:7;;4630:47;;4667:10;;4630:47;:::i;:::-;4598:8;:80::i;19098:333::-;863:6;;-1:-1:-1;;;;;863:6:0;416:10;925:23;917:68;;;;-1:-1:-1;;;917:68:0;;;;;;;:::i;:::-;19222:15:::1;:31:::0;;;19264:15:::1;:31:::0;;;19321:33:::1;19282:13:::0;19240;19321:33:::1;:::i;:::-;19306:12;:48:::0;;;19389:1:::1;-1:-1:-1::0;19373:17:0::1;19365:58;;;::::0;-1:-1:-1;;;19365:58:0;;8437:2:1;19365:58:0::1;::::0;::::1;8419:21:1::0;8476:2;8456:18;;;8449:30;8515;8495:18;;;8488:58;8563:18;;19365:58:0::1;8235:352:1::0;20168:92:0;863:6;;-1:-1:-1;;;;;863:6:0;416:10;925:23;917:68;;;;-1:-1:-1;;;917:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20232:12:0::1;20247:5;20232:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;20232:20:0::1;::::0;;20168:92::o;1013:148::-;863:6;;-1:-1:-1;;;;;863:6:0;416:10;925:23;917:68;;;;-1:-1:-1;;;917:68:0;;;;;;;:::i;:::-;1104:6:::1;::::0;1083:40:::1;::::0;1120:1:::1;::::0;-1:-1:-1;;;;;1104:6:0::1;::::0;1083:40:::1;::::0;1120:1;;1083:40:::1;1134:6;:19:::0;;-1:-1:-1;;;;;;1134:19:0::1;::::0;;1013:148::o;18905:185::-;863:6;;-1:-1:-1;;;;;863:6:0;416:10;925:23;917:68;;;;-1:-1:-1;;;917:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19027:42:0;;;::::1;;::::0;;;:31:::1;:42;::::0;;;;:55;;-1:-1:-1;;19027:55:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18905:185::o;17723:112::-;863:6;;-1:-1:-1;;;;;863:6:0;416:10;925:23;917:68;;;;-1:-1:-1;;;917:68:0;;;;;;;:::i;:::-;17778:13:::1;:20:::0;;-1:-1:-1;;17809:18:0;;;;;17723:112::o;3004:104::-;3060:13;3093:7;3086:14;;;;;:::i;20268:304::-;863:6;;-1:-1:-1;;;;;863:6:0;416:10;925:23;917:68;;;;-1:-1:-1;;;917:68:0;;;;;;;:::i;:::-;20412:13:::1;-1:-1:-1::0;;;;;20404:21:0::1;:4;-1:-1:-1::0;;;;;20404:21:0::1;::::0;20382:128:::1;;;::::0;-1:-1:-1;;;20382:128:0;;8794:2:1;20382:128:0::1;::::0;::::1;8776:21:1::0;8833:2;8813:18;;;8806:30;8872:34;8852:18;;;8845:62;8943:27;8923:18;;;8916:55;8988:19;;20382:128:0::1;8592:421:1::0;20382:128:0::1;20523:41;20552:4;20558:5;20523:28;:41::i;4718:415::-:0;416:10;4811:4;4855:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4855:34:0;;;;;;;;;;4908:35;;;;4900:85;;;;-1:-1:-1;;;4900:85:0;;9220:2:1;4900:85:0;;;9202:21:1;9259:2;9239:18;;;9232:30;9298:34;9278:18;;;9271:62;-1:-1:-1;;;9349:18:1;;;9342:35;9394:19;;4900:85:0;9018:401:1;4900:85:0;5023:67;416:10;5046:7;5074:15;5055:16;:34;5023:8;:67::i;:::-;-1:-1:-1;5121:4:0;;4718:415;-1:-1:-1;;;4718:415:0:o;3468:177::-;3554:4;3571:42;416:10;3595:9;3606:6;3571:9;:42::i;19789:194::-;863:6;;-1:-1:-1;;;;;863:6:0;416:10;925:23;917:68;;;;-1:-1:-1;;;917:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19878:30:0;::::1;;::::0;;;:19:::1;:30;::::0;;;;;;;;:43;;-1:-1:-1;;19878:43:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19937:38;;2813:41:1;;;19937:38:0::1;::::0;2786:18:1;19937:38:0::1;;;;;;;19789:194:::0;;:::o;18350:267::-;863:6;;-1:-1:-1;;;;;863:6:0;416:10;925:23;917:68;;;;-1:-1:-1;;;917:68:0;;;;;;;:::i;:::-;18496:4:::1;18488;18467:13;3305:12:::0;;;3217:108;18467:13:::1;:17;::::0;18483:1:::1;18467:17;:::i;:::-;18466:26;;;;:::i;:::-;18465:35;;;;:::i;:::-;18452:9;:48;;18430:134;;;::::0;-1:-1:-1;;;18430:134:0;;9626:2:1;18430:134:0::1;::::0;::::1;9608:21:1::0;9665:2;9645:18;;;9638:30;9704:34;9684:18;;;9677:62;-1:-1:-1;;;9755:18:1;;;9748:34;9799:19;;18430:134:0::1;9424:400:1::0;18430:134:0::1;18589:20;:9:::0;18602:6:::1;18589:20;:::i;:::-;18577:9;:32:::0;-1:-1:-1;18350:267:0:o;17843:499::-;863:6;;17951:4;;-1:-1:-1;;;;;863:6:0;416:10;925:23;917:68;;;;-1:-1:-1;;;917:68:0;;;;;;;:::i;:::-;18030:6:::1;18009:13;3305:12:::0;;;3217:108;18009:13:::1;:17;::::0;18025:1:::1;18009:17;:::i;:::-;18008:28;;;;:::i;:::-;17995:9;:41;;17973:144;;;::::0;-1:-1:-1;;;17973:144:0;;10031:2:1;17973:144:0::1;::::0;::::1;10013:21:1::0;10070:2;10050:18;;;10043:30;10109:34;10089:18;;;10082:62;-1:-1:-1;;;10160:18:1;;;10153:51;10221:19;;17973:144:0::1;9829:417:1::0;17973:144:0::1;18185:4;18164:13;3305:12:::0;;;3217:108;18164:13:::1;:17;::::0;18180:1:::1;18164:17;:::i;:::-;18163:26;;;;:::i;:::-;18150:9;:39;;18128:141;;;::::0;-1:-1:-1;;;18128:141:0;;10453:2:1;18128:141:0::1;::::0;::::1;10435:21:1::0;10492:2;10472:18;;;10465:30;10531:34;10511:18;;;10504:62;-1:-1:-1;;;10582:18:1;;;10575:50;10642:19;;18128:141:0::1;10251:416:1::0;18128:141:0::1;-1:-1:-1::0;18282:18:0::1;:30:::0;;;18330:4:::1;996:1;17843:499:::0;;;:::o;1169:201::-;863:6;;-1:-1:-1;;;;;863:6:0;416:10;925:23;917:68;;;;-1:-1:-1;;;917:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1258:22:0;::::1;1250:73;;;::::0;-1:-1:-1;;;1250:73:0;;10874:2:1;1250:73:0::1;::::0;::::1;10856:21:1::0;10913:2;10893:18;;;10886:30;10952:34;10932:18;;;10925:62;-1:-1:-1;;;11003:18:1;;;10996:36;11049:19;;1250:73:0::1;10672:402:1::0;1250:73:0::1;1334:28;1353:8;1334:18;:28::i;:::-;1169:201:::0;:::o;6291:380::-;-1:-1:-1;;;;;6427:19:0;;6419:68;;;;-1:-1:-1;;;6419:68:0;;11281:2:1;6419:68:0;;;11263:21:1;11320:2;11300:18;;;11293:30;11359:34;11339:18;;;11332:62;-1:-1:-1;;;11410:18:1;;;11403:34;11454:19;;6419:68:0;11079:400:1;6419:68:0;-1:-1:-1;;;;;6506:21:0;;6498:68;;;;-1:-1:-1;;;6498:68:0;;11686:2:1;6498:68:0;;;11668:21:1;11725:2;11705:18;;;11698:30;11764:34;11744:18;;;11737:62;-1:-1:-1;;;11815:18:1;;;11808:32;11857:19;;6498:68:0;11484:398:1;6498:68:0;-1:-1:-1;;;;;6579:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6631:32;;3246:25:1;;;6631:32:0;;3219:18:1;6631:32:0;;;;;;;6291:380;;;:::o;20910:3419::-;-1:-1:-1;;;;;21042:18:0;;21034:68;;;;-1:-1:-1;;;21034:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21121:16:0;;21113:64;;;;-1:-1:-1;;;21113:64:0;;;;;;;:::i;:::-;21194:6;21204:1;21194:11;21190:93;;21222:28;21238:4;21244:2;21248:1;21222:15;:28::i;:::-;20910:3419;;;:::o;21190:93::-;863:6;;-1:-1:-1;;;;;21313:15:0;;;863:6;;21313:15;;;;:45;;-1:-1:-1;863:6:0;;-1:-1:-1;;;;;21345:13:0;;;863:6;;21345:13;;21313:45;:78;;;;-1:-1:-1;;;;;;21375:16:0;;;;21313:78;:116;;;;-1:-1:-1;;;;;;21408:21:0;;21422:6;21408:21;;21313:116;:142;;;;-1:-1:-1;21447:8:0;;-1:-1:-1;;;21447:8:0;;;;21446:9;21313:142;21295:1490;;;21487:13;;;;21482:203;;-1:-1:-1;;;;;21551:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;21580:23:0;;;;;;:19;:23;;;;;;;;21551:52;21521:148;;;;-1:-1:-1;;;21521:148:0;;12899:2:1;21521:148:0;;;12881:21:1;12938:2;12918:18;;;12911:30;-1:-1:-1;;;12957:18:1;;;12950:52;13019:18;;21521:148:0;12697:346:1;21521:148:0;-1:-1:-1;;;;;21722:10:0;;;;;;:4;:10;;;;;;;;21721:11;:24;;;;-1:-1:-1;;;;;;21737:8:0;;;;;;:4;:8;;;;;;;;21736:9;21721:24;21713:50;;;;-1:-1:-1;;;21713:50:0;;13250:2:1;21713:50:0;;;13232:21:1;13289:2;13269:18;;;13262:30;-1:-1:-1;;;13308:18:1;;;13301:43;13361:18;;21713:50:0;13048:337:1;21713:50:0;-1:-1:-1;;;;;21822:31:0;;;;;;:25;:31;;;;;;;;:88;;;;-1:-1:-1;;;;;;21875:35:0;;;;;;:31;:35;;;;;;;;21874:36;21822:88;21800:974;;;21985:20;;21975:6;:30;;21945:157;;;;-1:-1:-1;;;21945:157:0;;13592:2:1;21945:157:0;;;13574:21:1;13631:2;13611:18;;;13604:30;13670:34;13650:18;;;13643:62;-1:-1:-1;;;13721:18:1;;;13714:51;13782:19;;21945:157:0;13390:417:1;21945:157:0;22177:9;;-1:-1:-1;;;;;3434:18:0;;3407:7;3434:18;;;;;;;;;;;22151:22;;:6;:22;:::i;:::-;:35;;22121:128;;;;-1:-1:-1;;;22121:128:0;;14014:2:1;22121:128:0;;;13996:21:1;14053:2;14033:18;;;14026:30;-1:-1:-1;;;14072:18:1;;;14065:49;14131:18;;22121:128:0;13812:343:1;22121:128:0;21800:974;;;-1:-1:-1;;;;;22327:29:0;;;;;;:25;:29;;;;;;;;:88;;;;-1:-1:-1;;;;;;22378:37:0;;;;;;:31;:37;;;;;;;;22377:38;22327:88;22305:469;;;22490:20;;22480:6;:30;;22450:158;;;;-1:-1:-1;;;22450:158:0;;14362:2:1;22450:158:0;;;14344:21:1;14401:2;14381:18;;;14374:30;14440:34;14420:18;;;14413:62;-1:-1:-1;;;14491:18:1;;;14484:52;14553:19;;22450:158:0;14160:418:1;22305:469:0;-1:-1:-1;;;;;22635:35:0;;;;;;:31;:35;;;;;;;;22630:144;;22725:9;;-1:-1:-1;;;;;3434:18:0;;3407:7;3434:18;;;;;;;;;;;22699:22;;:6;:22;:::i;:::-;:35;;22691:67;;;;-1:-1:-1;;;22691:67:0;;14014:2:1;22691:67:0;;;13996:21:1;14053:2;14033:18;;;14026:30;-1:-1:-1;;;14072:18:1;;;14065:49;14131:18;;22691:67:0;13812:343:1;22691:67:0;22846:4;22797:28;3434:18;;;;;;;;;;;22904;;22880:42;;;;;;;22953:35;;-1:-1:-1;22977:11:0;;;;;;;22953:35;:61;;;;-1:-1:-1;23006:8:0;;-1:-1:-1;;;23006:8:0;;;;23005:9;22953:61;:110;;;;-1:-1:-1;;;;;;23032:31:0;;;;;;:25;:31;;;;;;;;23031:32;22953:110;:153;;;;-1:-1:-1;;;;;;23081:25:0;;;;;;:19;:25;;;;;;;;23080:26;22953:153;:194;;;;-1:-1:-1;;;;;;23124:23:0;;;;;;:19;:23;;;;;;;;23123:24;22953:194;22935:326;;;23174:8;:15;;-1:-1:-1;;;;23174:15:0;-1:-1:-1;;;23174:15:0;;;23206:10;:8;:10::i;:::-;23233:8;:16;;-1:-1:-1;;;;23233:16:0;;;22935:326;23289:8;;-1:-1:-1;;;;;23314:25:0;;23273:12;23314:25;;;:19;:25;;;;;;23289:8;-1:-1:-1;;;23289:8:0;;;;;23288:9;;23314:25;;:52;;-1:-1:-1;;;;;;23343:23:0;;;;;;:19;:23;;;;;;;;23314:52;23310:100;;;-1:-1:-1;23393:5:0;23310:100;23422:12;23455:7;23451:825;;;-1:-1:-1;;;;;23504:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;23553:1;23537:13;;:17;23504:50;23500:627;;;23582:34;23612:3;23582:25;23593:13;;23582:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;23575:41;;23685:13;;23665:16;;23658:4;:23;;;;:::i;:::-;23657:41;;;;:::i;:::-;23635:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;23767:13:0;;23747:16;;23740:23;;:4;:23;:::i;:::-;23739:41;;;;:::i;:::-;23717:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;23500:627:0;;-1:-1:-1;23500:627:0;;-1:-1:-1;;;;;23839:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;23889:1;23874:12;;:16;23839:51;23835:292;;;23918:33;23947:3;23918:24;23929:12;;23918:6;:10;;:24;;;;:::i;:33::-;23911:40;;24019:12;;24000:15;;23993:4;:22;;;;:::i;:::-;23992:39;;;;:::i;:::-;23970:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;24099:12:0;;24080:15;;24073:22;;:4;:22;:::i;:::-;24072:39;;;;:::i;:::-;24050:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;23835:292:0;24147:8;;24143:91;;24176:42;24192:4;24206;24213;24176:15;:42::i;:::-;24250:14;24260:4;24250:14;;:::i;:::-;;;23451:825;24288:33;24304:4;24310:2;24314:6;24288:15;:33::i;:::-;21023:3306;;;;20910:3419;;;:::o;20580:188::-;-1:-1:-1;;;;;20663:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;20663:39:0;;;;;;;;;;20720:40;;20663:39;;:31;20720:40;;;20580:188;;:::o;1378:153::-;1478:6;;1457:38;;-1:-1:-1;;;;;1457:38:0;;;;1478:6;;1457:38;;1478:6;;1457:38;1506:6;:17;;-1:-1:-1;;;;;;1506:17:0;-1:-1:-1;;;;;1506:17:0;;;;;;;;;;1378:153::o;5141:735::-;-1:-1:-1;;;;;5281:20:0;;5273:70;;;;-1:-1:-1;;;5273:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5362:23:0;;5354:71;;;;-1:-1:-1;;;5354:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5522:17:0;;5498:21;5522:17;;;;;;;;;;;5558:23;;;;5550:74;;;;-1:-1:-1;;;5550:74:0;;14918:2:1;5550:74:0;;;14900:21:1;14957:2;14937:18;;;14930:30;14996:34;14976:18;;;14969:62;-1:-1:-1;;;15047:18:1;;;15040:36;15093:19;;5550:74:0;14716:402:1;5550:74:0;-1:-1:-1;;;;;5662:17:0;;;:9;:17;;;;;;;;;;;5682:22;;;5662:42;;5728:20;;;;;;;;:30;;5698:6;;5662:9;5728:30;;5698:6;;5728:30;:::i;:::-;;;;;;;;5791:9;-1:-1:-1;;;;;5774:35:0;5783:6;-1:-1:-1;;;;;5774:35:0;;5802:6;5774:35;;;;3246:25:1;;3234:2;3219:18;;3100:177;5774:35:0;;;;;;;;5262:614;5141:735;;;:::o;25194:1488::-;25277:4;25233:23;3434:18;;;;;;;;;;;25233:50;;25294:25;25356:18;;25322;;:52;;;;:::i;:::-;25294:80;-1:-1:-1;25385:12:0;25414:20;;;:46;;-1:-1:-1;25438:22:0;;25414:46;25410:85;;;25477:7;;;25194:1488::o;25410:85::-;25529:18;;:23;;25550:2;25529:23;:::i;:::-;25511:15;:41;25507:115;;;25587:18;;:23;;25608:2;25587:23;:::i;:::-;25569:41;;25507:115;25634:23;25747:1;25714:17;25679:18;;25661:15;:36;;;;:::i;:::-;25660:71;;;;:::i;:::-;:88;;;;:::i;:::-;25634:114;-1:-1:-1;25759:26:0;25788:36;:15;25634:114;25788:19;:36::i;:::-;25759:65;-1:-1:-1;25865:21:0;25899:36;25759:65;25899:16;:36::i;:::-;25948:18;25969:44;:21;25995:17;25969:25;:44::i;:::-;25948:65;;26026:23;26052:81;26105:17;26052:34;26067:18;;26052:10;:14;;:34;;;;:::i;:81::-;26026:107;-1:-1:-1;26146:23:0;26172:28;26026:107;26172:10;:28;:::i;:::-;26234:1;26213:18;:22;;;26246:18;:22;26146:54;-1:-1:-1;26285:19:0;;;;;:42;;;26326:1;26308:15;:19;26285:42;26281:278;;;26344:46;26357:15;26374;26344:12;:46::i;:::-;26514:18;;26410:137;;;15325:25:1;;;15381:2;15366:18;;15359:34;;;15409:18;;;15402:34;;;;26410:137:0;;;;;;15313:2:1;26410:137:0;;;26281:278;26593:15;;26585:89;;-1:-1:-1;;;;;26593:15:0;;;;26648:21;;26585:89;;;;26648:21;26593:15;26585:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;25194:1488:0:o;8331:98::-;8389:7;8416:5;8420:1;8416;:5;:::i;:::-;8409:12;8331:98;-1:-1:-1;;;8331:98:0:o;8437:::-;8495:7;8522:5;8526:1;8522;:5;:::i;8225:98::-;8283:7;8310:5;8314:1;8310;:5;:::i;24337:475::-;24427:16;;;24441:1;24427:16;;;;;;;;24403:21;;24427:16;;;;;;;;;;-1:-1:-1;24427:16:0;24403:40;;24472:4;24454;24459:1;24454:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;24454:23:0;;;-1:-1:-1;;;;;24454:23:0;;;;;24498:15;-1:-1:-1;;;;;24498:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24488:4;24493:1;24488:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;24488:32:0;;;-1:-1:-1;;;;;24488:32:0;;;;;24533:62;24550:4;24565:15;24583:11;24533:8;:62::i;:::-;24608:196;;-1:-1:-1;;;24608:196:0;;-1:-1:-1;;;;;24608:15:0;:66;;;;:196;;24689:11;;24715:1;;24731:4;;24758;;24778:15;;24608:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24392:420;24337:475;:::o;24820:366::-;24901:62;24918:4;24933:15;24951:11;24901:8;:62::i;:::-;24976:202;;-1:-1:-1;;;24976:202:0;;25048:4;24976:202;;;17239:34:1;17289:18;;;17282:34;;;25094:1:0;17332:18:1;;;17325:34;;;17375:18;;;17368:34;14635:6:0;17418:19:1;;;17411:44;25152:15:0;17471:19:1;;;17464:35;24976:15:0;-1:-1:-1;;;;;24976:31:0;;;;25015:9;;17173:19:1;;24976:202:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24820:366;;:::o;14:127:1:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:131;-1:-1:-1;;;;;221:31:1;;211:42;;201:70;;267:1;264;257:12;282:134;350:20;;379:31;350:20;379:31;:::i;421:1121::-;505:6;536:2;579;567:9;558:7;554:23;550:32;547:52;;;595:1;592;585:12;547:52;635:9;622:23;664:18;705:2;697:6;694:14;691:34;;;721:1;718;711:12;691:34;759:6;748:9;744:22;734:32;;804:7;797:4;793:2;789:13;785:27;775:55;;826:1;823;816:12;775:55;862:2;849:16;884:2;880;877:10;874:36;;;890:18;;:::i;:::-;936:2;933:1;929:10;968:2;962:9;1031:2;1027:7;1022:2;1018;1014:11;1010:25;1002:6;998:38;1086:6;1074:10;1071:22;1066:2;1054:10;1051:18;1048:46;1045:72;;;1097:18;;:::i;:::-;1133:2;1126:22;1183:18;;;1217:15;;;;-1:-1:-1;1259:11:1;;;1255:20;;;1287:19;;;1284:39;;;1319:1;1316;1309:12;1284:39;1343:11;;;;1363:148;1379:6;1374:3;1371:15;1363:148;;;1445:23;1464:3;1445:23;:::i;:::-;1433:36;;1396:12;;;;1489;;;;1363:148;;;1530:6;421:1121;-1:-1:-1;;;;;;;;421:1121:1:o;1547:248::-;1615:6;1623;1676:2;1664:9;1655:7;1651:23;1647:32;1644:52;;;1692:1;1689;1682:12;1644:52;-1:-1:-1;;1715:23:1;;;1785:2;1770:18;;;1757:32;;-1:-1:-1;1547:248:1:o;1800:548::-;1912:4;1941:2;1970;1959:9;1952:21;2002:6;1996:13;2045:6;2040:2;2029:9;2025:18;2018:34;2070:1;2080:140;2094:6;2091:1;2088:13;2080:140;;;2189:14;;;2185:23;;2179:30;2155:17;;;2174:2;2151:26;2144:66;2109:10;;2080:140;;;2084:3;2269:1;2264:2;2255:6;2244:9;2240:22;2236:31;2229:42;2339:2;2332;2328:7;2323:2;2315:6;2311:15;2307:29;2296:9;2292:45;2288:54;2280:62;;;;1800:548;;;;:::o;2353:315::-;2421:6;2429;2482:2;2470:9;2461:7;2457:23;2453:32;2450:52;;;2498:1;2495;2488:12;2450:52;2537:9;2524:23;2556:31;2581:5;2556:31;:::i;:::-;2606:5;2658:2;2643:18;;;;2630:32;;-1:-1:-1;;;2353:315:1:o;3282:180::-;3341:6;3394:2;3382:9;3373:7;3369:23;3365:32;3362:52;;;3410:1;3407;3400:12;3362:52;-1:-1:-1;3433:23:1;;3282:180;-1:-1:-1;3282:180:1:o;3467:456::-;3544:6;3552;3560;3613:2;3601:9;3592:7;3588:23;3584:32;3581:52;;;3629:1;3626;3619:12;3581:52;3668:9;3655:23;3687:31;3712:5;3687:31;:::i;:::-;3737:5;-1:-1:-1;3794:2:1;3779:18;;3766:32;3807:33;3766:32;3807:33;:::i;:::-;3467:456;;3859:7;;-1:-1:-1;;;3913:2:1;3898:18;;;;3885:32;;3467:456::o;4325:247::-;4384:6;4437:2;4425:9;4416:7;4412:23;4408:32;4405:52;;;4453:1;4450;4443:12;4405:52;4492:9;4479:23;4511:31;4536:5;4511:31;:::i;4577:416::-;4642:6;4650;4703:2;4691:9;4682:7;4678:23;4674:32;4671:52;;;4719:1;4716;4709:12;4671:52;4758:9;4745:23;4777:31;4802:5;4777:31;:::i;:::-;4827:5;-1:-1:-1;4884:2:1;4869:18;;4856:32;4926:15;;4919:23;4907:36;;4897:64;;4957:1;4954;4947:12;4897:64;4980:7;4970:17;;;4577:416;;;;;:::o;4998:388::-;5066:6;5074;5127:2;5115:9;5106:7;5102:23;5098:32;5095:52;;;5143:1;5140;5133:12;5095:52;5182:9;5169:23;5201:31;5226:5;5201:31;:::i;:::-;5251:5;-1:-1:-1;5308:2:1;5293:18;;5280:32;5321:33;5280:32;5321:33;:::i;5391:356::-;5593:2;5575:21;;;5612:18;;;5605:30;5671:34;5666:2;5651:18;;5644:62;5738:2;5723:18;;5391:356::o;5752:127::-;5813:10;5808:3;5804:20;5801:1;5794:31;5844:4;5841:1;5834:15;5868:4;5865:1;5858:15;5884:127;5945:10;5940:3;5936:20;5933:1;5926:31;5976:4;5973:1;5966:15;6000:4;5997:1;5990:15;6016:135;6055:3;6076:17;;;6073:43;;6096:18;;:::i;:::-;-1:-1:-1;6143:1:1;6132:13;;6016:135::o;6156:125::-;6221:9;;;6242:10;;;6239:36;;;6255:18;;:::i;6644:380::-;6723:1;6719:12;;;;6766;;;6787:61;;6841:4;6833:6;6829:17;6819:27;;6787:61;6894:2;6886:6;6883:14;6863:18;6860:38;6857:161;;6940:10;6935:3;6931:20;6928:1;6921:31;6975:4;6972:1;6965:15;7003:4;7000:1;6993:15;6857:161;;6644:380;;;:::o;7029:168::-;7102:9;;;7133;;7150:15;;;7144:22;;7130:37;7120:71;;7171:18;;:::i;7202:217::-;7242:1;7268;7258:132;;7312:10;7307:3;7303:20;7300:1;7293:31;7347:4;7344:1;7337:15;7375:4;7372:1;7365:15;7258:132;-1:-1:-1;7404:9:1;;7202:217::o;11887:401::-;12089:2;12071:21;;;12128:2;12108:18;;;12101:30;12167:34;12162:2;12147:18;;12140:62;-1:-1:-1;;;12233:2:1;12218:18;;12211:35;12278:3;12263:19;;11887:401::o;12293:399::-;12495:2;12477:21;;;12534:2;12514:18;;;12507:30;12573:34;12568:2;12553:18;;12546:62;-1:-1:-1;;;12639:2:1;12624:18;;12617:33;12682:3;12667:19;;12293:399::o;14583:128::-;14650:9;;;14671:11;;;14668:37;;;14685:18;;:::i;15657:251::-;15727:6;15780:2;15768:9;15759:7;15755:23;15751:32;15748:52;;;15796:1;15793;15786:12;15748:52;15828:9;15822:16;15847:31;15872:5;15847:31;:::i;15913:980::-;16175:4;16223:3;16212:9;16208:19;16254:6;16243:9;16236:25;16280:2;16318:6;16313:2;16302:9;16298:18;16291:34;16361:3;16356:2;16345:9;16341:18;16334:31;16385:6;16420;16414:13;16451:6;16443;16436:22;16489:3;16478:9;16474:19;16467:26;;16528:2;16520:6;16516:15;16502:29;;16549:1;16559:195;16573:6;16570:1;16567:13;16559:195;;;16638:13;;-1:-1:-1;;;;;16634:39:1;16622:52;;16729:15;;;;16694:12;;;;16670:1;16588:9;16559:195;;;-1:-1:-1;;;;;;;16810:32:1;;;;16805:2;16790:18;;16783:60;-1:-1:-1;;;16874:3:1;16859:19;16852:35;16771:3;15913:980;-1:-1:-1;;;15913:980:1:o;17510:306::-;17598:6;17606;17614;17667:2;17655:9;17646:7;17642:23;17638:32;17635:52;;;17683:1;17680;17673:12;17635:52;17712:9;17706:16;17696:26;;17762:2;17751:9;17747:18;17741:25;17731:35;;17806:2;17795:9;17791:18;17785:25;17775:35;;17510:306;;;;;:::o

Swarm Source

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