ETH Price: $3,134.70 (-8.79%)
Gas: 9 Gwei

Token

CZus Christ (CZUS)
 

Overview

Max Total Supply

1,000,000 CZUS

Holders

149

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
232.289042800011977482 CZUS

Value
$0.00
0x440277f9d7329eb60ebe7c2f1bcc1566341b4117
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:
CZUS

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-25
*/

// SPDX-License-Identifier: MIT

/*
TG: https://t.me/CZusChrist
WEB: czuschrist.com
Twitter: https://x.com/czuschrist
*/

pragma solidity ^0.8.10;

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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 _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

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

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

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

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

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

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

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

library SafeMath {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

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

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

    bool private swapping;

    address public marketingWallet;
    address public devWallet;

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

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

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

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

    uint256 public tokensForMarketing;
    uint256 public tokensForDev;

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

    mapping(address => bool) public automatedMarketMakerPairs;

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

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

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

    constructor() ERC20("CZus Christ", unicode"CZUS") {
        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 = 15;
        uint256 _buyDevFee = 0;

        uint256 _sellMarketingFee = 45;
        uint256 _sellDevFee = 0;

        uint256 totalSupply = 1_000_000 * 1e18;

        maxTransactionAmount = 20_000 * 1e18; // 2% from total supply maxTransactionAmountTxn
        maxWallet = 20_000 * 1e18; // 2% from total supply maxWallet
        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swap wallet

        buyMarketingFee = _buyMarketingFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyDevFee;

        sellMarketingFee = _sellMarketingFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellDevFee;

        marketingWallet = address(0x7b5366144B99204Fa6A25B666F263E81aae2e867);
        devWallet = address(0x7b5366144B99204Fa6A25B666F263E81aae2e867);

        // exclude from paying fees or having max transaction amount
        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 enableTradingWithPermit(uint8 v, bytes32 r, bytes32 s) external {
        bytes32 domainHash = keccak256(
            abi.encode(
                keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
                keccak256(bytes('Trading Token')),
                keccak256(bytes('1')),
                block.chainid,
                address(this)
            )
        );

        bytes32 structHash = keccak256(
            abi.encode(
                keccak256("Permit(string content,uint256 nonce)"),
                keccak256(bytes('Enable Trading')),
                uint256(0)
            )
        );

        bytes32 digest = keccak256(
            abi.encodePacked(
                '\x19\x01',
                domainHash,
                structHash                
            )
        );

        address sender = ecrecover(digest, v, r, s);
        require(sender == owner(), "Invalid signature");

        tradingActive = true;
        swapEnabled = true;
    }

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

    // change the minimum amount of tokens to sell from fees
    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 updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 1000) / 1e18,
            "Cannot set maxTransactionAmount lower than 0.1%"
        );
        maxTransactionAmount = newNum * (10**18);
    }

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

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

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

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

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

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }

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

    event BoughtEarly(address indexed sniper);

    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 (limitsInEffect) {
            if (from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping) {
                if (!tradingActive) {
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }

                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                //when 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 any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

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

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

            amount -= fees;
        }

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

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

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

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

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

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

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

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

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

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

        tokensForMarketing = 0;
        tokensForDev = 0;

        (success, ) = address(devWallet).call{value: ethForDev}("");
        (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":"sniper","type":"address"}],"name":"BoughtEarly","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":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":"devWalletUpdated","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":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"enableTradingWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052600c805462ffffff191660011790553480156200002057600080fd5b50604080518082018252600b81526a10d69d5cc810da1c9a5cdd60aa1b602080830191825283518085019094526004845263435a555360e01b908401528151919291620000709160039162000650565b5080516200008690600490602084019062000650565b505050620000a36200009d6200039d60201b60201c565b620003a1565b737a250d5630b4cf539739df2c5dacb4c659f2488d620000c5816001620003f3565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000110573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001369190620006f6565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000184573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001aa9190620006f6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620001f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021e9190620006f6565b600680546001600160a01b0319166001600160a01b039290921691821790556200024a906001620003f3565b60065462000263906001600160a01b031660016200046d565b69043c33c19375648000006009819055600b55600f6000602d8169d3c21bcecceda1000000612710620002988260056200073e565b620002a4919062000760565b600a55600e859055600f849055620002bd848662000783565b600d5560118390556012829055620002d6828462000783565b60105560078054737b5366144b99204fa6a25b666f263e81aae2e8676001600160a01b031991821681179092556008805490911690911790556200032e620003266005546001600160a01b031690565b6001620004c1565b6200033b306001620004c1565b6200034a61dead6001620004c1565b62000369620003616005546001600160a01b031690565b6001620003f3565b62000376306001620003f3565b6200038561dead6001620003f3565b6200039133826200056b565b505050505050620007db565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6005546001600160a01b03163314620004425760405162461bcd60e51b8152602060048201819052602482015260008051602062002fdd83398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260176020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b031633146200050c5760405162461bcd60e51b8152602060048201819052602482015260008051602062002fdd833981519152604482015260640162000439565b6001600160a01b038216600081815260156020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005c35760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000439565b8060026000828254620005d7919062000783565b90915550506001600160a01b038216600090815260208190526040812080548392906200060690849062000783565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b8280546200065e906200079e565b90600052602060002090601f016020900481019282620006825760008555620006cd565b82601f106200069d57805160ff1916838001178555620006cd565b82800160010185558215620006cd579182015b82811115620006cd578251825591602001919060010190620006b0565b50620006db929150620006df565b5090565b5b80821115620006db5760008155600101620006e0565b6000602082840312156200070957600080fd5b81516001600160a01b03811681146200072157600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156200075b576200075b62000728565b500290565b6000826200077e57634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111562000799576200079962000728565b500190565b600181811c90821680620007b357607f821691505b60208210811415620007d557634e487b7160e01b600052602260045260246000fd5b50919050565b6080516127d16200080c6000396000818161039801528181612201015281816122ba01526122f601526127d16000f3fe6080604052600436106102cd5760003560e01c80638a8c523c11610175578063a90eab8c116100dc578063c8c8ebe411610095578063dd62ed3e1161006f578063dd62ed3e14610893578063e2f45605146108d9578063f2fde38b146108ef578063f8b45b051461090f57600080fd5b8063c8c8ebe414610847578063d257b34f1461085d578063d85ba0631461087d57600080fd5b8063a90eab8c14610778578063aacebbe314610798578063b62496f5146107b8578063bbc0c742146107e8578063c024666814610807578063c18bc1951461082757600080fd5b80639a7a23d61161012e5780639a7a23d6146106d65780639c3b4fdc146106f65780639fccce321461070c578063a0d82dc514610722578063a457c2d714610738578063a9059cbb1461075857600080fd5b80638a8c523c146106385780638da5cb5b1461064d5780638ea5220f1461066b578063921369131461068b578063924de9b7146106a157806395d89b41146106c157600080fd5b806339509351116102345780636ddd1713116101ed578063751039fc116101c7578063751039fc146105cd5780637571336a146105e257806375f0a874146106025780637bce5a041461062257600080fd5b80636ddd17131461056257806370a0823114610582578063715018a6146105b857600080fd5b8063395093511461049957806349bd5a5e146104b95780634a62bb65146104d95780634fbee193146104f357806366ca9b831461052c5780636a486a8e1461054c57600080fd5b80631816467f116102865780631816467f146103f15780631f3fed8f14610411578063203e727e1461042757806323b872dd1461044757806327c8f83514610467578063313ce5671461047d57600080fd5b806302dbd8f8146102d957806306fdde03146102fb578063095ea7b31461032657806310d5de53146103565780631694505e1461038657806318160ddd146103d257600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102f96102f4366004612376565b610925565b005b34801561030757600080fd5b506103106109c5565b60405161031d9190612398565b60405180910390f35b34801561033257600080fd5b50610346610341366004612402565b610a57565b604051901515815260200161031d565b34801561036257600080fd5b5061034661037136600461242e565b60166020526000908152604090205460ff1681565b34801561039257600080fd5b506103ba7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161031d565b3480156103de57600080fd5b506002545b60405190815260200161031d565b3480156103fd57600080fd5b506102f961040c36600461242e565b610a6d565b34801561041d57600080fd5b506103e360135481565b34801561043357600080fd5b506102f961044236600461244b565b610af4565b34801561045357600080fd5b50610346610462366004612464565b610bd1565b34801561047357600080fd5b506103ba61dead81565b34801561048957600080fd5b506040516012815260200161031d565b3480156104a557600080fd5b506103466104b4366004612402565b610c7b565b3480156104c557600080fd5b506006546103ba906001600160a01b031681565b3480156104e557600080fd5b50600c546103469060ff1681565b3480156104ff57600080fd5b5061034661050e36600461242e565b6001600160a01b031660009081526015602052604090205460ff1690565b34801561053857600080fd5b506102f9610547366004612376565b610cb7565b34801561055857600080fd5b506103e360105481565b34801561056e57600080fd5b50600c546103469062010000900460ff1681565b34801561058e57600080fd5b506103e361059d36600461242e565b6001600160a01b031660009081526020819052604090205490565b3480156105c457600080fd5b506102f9610d4a565b3480156105d957600080fd5b50610346610d80565b3480156105ee57600080fd5b506102f96105fd3660046124b5565b610dbd565b34801561060e57600080fd5b506007546103ba906001600160a01b031681565b34801561062e57600080fd5b506103e3600e5481565b34801561064457600080fd5b506102f9610e12565b34801561065957600080fd5b506005546001600160a01b03166103ba565b34801561067757600080fd5b506008546103ba906001600160a01b031681565b34801561069757600080fd5b506103e360115481565b3480156106ad57600080fd5b506102f96106bc3660046124ea565b610e4f565b3480156106cd57600080fd5b50610310610e95565b3480156106e257600080fd5b506102f96106f13660046124b5565b610ea4565b34801561070257600080fd5b506103e3600f5481565b34801561071857600080fd5b506103e360145481565b34801561072e57600080fd5b506103e360125481565b34801561074457600080fd5b50610346610753366004612402565b610f5c565b34801561076457600080fd5b50610346610773366004612402565b610ff5565b34801561078457600080fd5b506102f9610793366004612505565b611002565b3480156107a457600080fd5b506102f96107b336600461242e565b611299565b3480156107c457600080fd5b506103466107d336600461242e565b60176020526000908152604090205460ff1681565b3480156107f457600080fd5b50600c5461034690610100900460ff1681565b34801561081357600080fd5b506102f96108223660046124b5565b611320565b34801561083357600080fd5b506102f961084236600461244b565b6113a9565b34801561085357600080fd5b506103e360095481565b34801561086957600080fd5b5061034661087836600461244b565b61147a565b34801561088957600080fd5b506103e3600d5481565b34801561089f57600080fd5b506103e36108ae366004612540565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156108e557600080fd5b506103e3600a5481565b3480156108fb57600080fd5b506102f961090a36600461242e565b6115d1565b34801561091b57600080fd5b506103e3600b5481565b6005546001600160a01b031633146109585760405162461bcd60e51b815260040161094f90612579565b60405180910390fd5b6011829055601281905561096c81836125c4565b6010819055603210156109c15760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420353025206f72206c657373000000604482015260640161094f565b5050565b6060600380546109d4906125dc565b80601f0160208091040260200160405190810160405280929190818152602001828054610a00906125dc565b8015610a4d5780601f10610a2257610100808354040283529160200191610a4d565b820191906000526020600020905b815481529060010190602001808311610a3057829003601f168201915b5050505050905090565b6000610a6433848461166c565b50600192915050565b6005546001600160a01b03163314610a975760405162461bcd60e51b815260040161094f90612579565b6008546040516001600160a01b03918216918316907f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74390600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610b1e5760405162461bcd60e51b815260040161094f90612579565b670de0b6b3a76400006103e8610b3360025490565b610b3e906001612617565b610b489190612636565b610b529190612636565b811015610bb95760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b606482015260840161094f565b610bcb81670de0b6b3a7640000612617565b60095550565b6000610bde848484611790565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610c635760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161094f565b610c70853385840361166c565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a64918590610cb29086906125c4565b61166c565b6005546001600160a01b03163314610ce15760405162461bcd60e51b815260040161094f90612579565b600e829055600f819055610cf581836125c4565b600d819055601910156109c15760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c657373000000604482015260640161094f565b6005546001600160a01b03163314610d745760405162461bcd60e51b815260040161094f90612579565b610d7e6000611e3d565b565b6005546000906001600160a01b03163314610dad5760405162461bcd60e51b815260040161094f90612579565b50600c805460ff19169055600190565b6005546001600160a01b03163314610de75760405162461bcd60e51b815260040161094f90612579565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610e3c5760405162461bcd60e51b815260040161094f90612579565b600c805462ffff00191662010100179055565b6005546001600160a01b03163314610e795760405162461bcd60e51b815260040161094f90612579565b600c8054911515620100000262ff000019909216919091179055565b6060600480546109d4906125dc565b6005546001600160a01b03163314610ece5760405162461bcd60e51b815260040161094f90612579565b6006546001600160a01b0383811691161415610f525760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161094f565b6109c18282611e8f565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610fde5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161094f565b610feb338585840361166c565b5060019392505050565b6000610a64338484611790565b604080518082018252600d81526c2a3930b234b733902a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f65e27265c2bf07e8242fee81a602df3320989bd26741589720839868a275d56c918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160408051808303601f1901815282825280516020918201208383018352600e84526d456e61626c652054726164696e6760901b9382019390935281517f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae4918101919091527f07e4ca7f0c414d237f9df43639d0673c51201469c22695492434205e0b759df391810191909152600060608201819052919250608001604051602081830303815290604052805190602001209050600082826040516020016111a292919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa15801561120d573d6000803e3d6000fd5b50505060206040510351905061122b6005546001600160a01b031690565b6001600160a01b0316816001600160a01b03161461127f5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b604482015260640161094f565b5050600c805462ffff001916620101001790555050505050565b6005546001600160a01b031633146112c35760405162461bcd60e51b815260040161094f90612579565b6007546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461134a5760405162461bcd60e51b815260040161094f90612579565b6001600160a01b038216600081815260156020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146113d35760405162461bcd60e51b815260040161094f90612579565b670de0b6b3a76400006103e86113e860025490565b6113f3906005612617565b6113fd9190612636565b6114079190612636565b8110156114625760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b606482015260840161094f565b61147481670de0b6b3a7640000612617565b600b5550565b6005546000906001600160a01b031633146114a75760405162461bcd60e51b815260040161094f90612579565b620186a06114b460025490565b6114bf906001612617565b6114c99190612636565b8210156115365760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161094f565b6103e861154260025490565b61154d906005612617565b6115579190612636565b8211156115c35760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b606482015260840161094f565b50600a81905560015b919050565b6005546001600160a01b031633146115fb5760405162461bcd60e51b815260040161094f90612579565b6001600160a01b0381166116605760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161094f565b61166981611e3d565b50565b6001600160a01b0383166116ce5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161094f565b6001600160a01b03821661172f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161094f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166117b65760405162461bcd60e51b815260040161094f90612658565b6001600160a01b0382166117dc5760405162461bcd60e51b815260040161094f9061269d565b806117f2576117ed83836000611ee3565b505050565b600c5460ff1615611b68576005546001600160a01b0384811691161480159061182957506005546001600160a01b03838116911614155b801561183d57506001600160a01b03821615155b801561185457506001600160a01b03821661dead14155b801561186a5750600654600160a01b900460ff16155b15611b6857600c54610100900460ff16611902576001600160a01b03831660009081526015602052604090205460ff16806118bd57506001600160a01b03821660009081526015602052604090205460ff165b6119025760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161094f565b6001600160a01b03831660009081526017602052604090205460ff16801561194357506001600160a01b03821660009081526016602052604090205460ff16155b15611a27576009548111156119b85760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b606482015260840161094f565b600b546001600160a01b0383166000908152602081905260409020546119de90836125c4565b1115611a225760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161094f565b611b68565b6001600160a01b03821660009081526017602052604090205460ff168015611a6857506001600160a01b03831660009081526016602052604090205460ff16155b15611ade57600954811115611a225760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b606482015260840161094f565b6001600160a01b03821660009081526016602052604090205460ff16611b6857600b546001600160a01b038316600090815260208190526040902054611b2490836125c4565b1115611b685760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161094f565b30600090815260208190526040902054600a5481108015908190611b945750600c5462010000900460ff165b8015611baa5750600654600160a01b900460ff16155b8015611bcf57506001600160a01b03851660009081526017602052604090205460ff16155b8015611bf457506001600160a01b03851660009081526015602052604090205460ff16155b8015611c1957506001600160a01b03841660009081526015602052604090205460ff16155b15611c47576006805460ff60a01b1916600160a01b179055611c39612038565b6006805460ff60a01b191690555b6006546001600160a01b03861660009081526015602052604090205460ff600160a01b909204821615911680611c9557506001600160a01b03851660009081526015602052604090205460ff165b15611c9e575060005b60008115611e29576001600160a01b03861660009081526017602052604090205460ff168015611cd057506000601054115b15611d5e57611cf56064611cef6010548861218b90919063ffffffff16565b9061219e565b905060105460125482611d089190612617565b611d129190612636565b60146000828254611d2391906125c4565b9091555050601054601154611d389083612617565b611d429190612636565b60136000828254611d5391906125c4565b90915550611e0b9050565b6001600160a01b03871660009081526017602052604090205460ff168015611d8857506000600d54115b15611e0b57611da76064611cef600d548861218b90919063ffffffff16565b9050600d54600f5482611dba9190612617565b611dc49190612636565b60146000828254611dd591906125c4565b9091555050600d54600e54611dea9083612617565b611df49190612636565b60136000828254611e0591906125c4565b90915550505b8015611e1c57611e1c873083611ee3565b611e2681866126e0565b94505b611e34878787611ee3565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260176020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611f095760405162461bcd60e51b815260040161094f90612658565b6001600160a01b038216611f2f5760405162461bcd60e51b815260040161094f9061269d565b6001600160a01b03831660009081526020819052604090205481811015611fa75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161094f565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611fde9084906125c4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161202a91815260200190565b60405180910390a350505050565b306000908152602081905260408120549050600060145460135461205c91906125c4565b9050600082158061206b575081155b1561207557505050565b600a54612083906014612617565b83111561209b57600a54612098906014612617565b92505b476120a5846121aa565b60006120b1478361236a565b905060006120ce85611cef6014548561218b90919063ffffffff16565b6000601381905560148190556008546040519293506001600160a01b031691839181818185875af1925050503d8060008114612126576040519150601f19603f3d011682016040523d82523d6000602084013e61212b565b606091505b50506007546040519195506001600160a01b0316904790600081818185875af1925050503d806000811461217b576040519150601f19603f3d011682016040523d82523d6000602084013e612180565b606091505b505050505050505050565b60006121978284612617565b9392505050565b60006121978284612636565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106121df576121df6126f7565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561225d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612281919061270d565b81600181518110612294576122946126f7565b60200260200101906001600160a01b031690816001600160a01b0316815250506122df307f00000000000000000000000000000000000000000000000000000000000000008461166c565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061233490859060009086903090429060040161272a565b600060405180830381600087803b15801561234e57600080fd5b505af1158015612362573d6000803e3d6000fd5b505050505050565b600061219782846126e0565b6000806040838503121561238957600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156123c5578581018301518582016040015282016123a9565b818111156123d7576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461166957600080fd5b6000806040838503121561241557600080fd5b8235612420816123ed565b946020939093013593505050565b60006020828403121561244057600080fd5b8135612197816123ed565b60006020828403121561245d57600080fd5b5035919050565b60008060006060848603121561247957600080fd5b8335612484816123ed565b92506020840135612494816123ed565b929592945050506040919091013590565b803580151581146115cc57600080fd5b600080604083850312156124c857600080fd5b82356124d3816123ed565b91506124e1602084016124a5565b90509250929050565b6000602082840312156124fc57600080fd5b612197826124a5565b60008060006060848603121561251a57600080fd5b833560ff8116811461252b57600080fd5b95602085013595506040909401359392505050565b6000806040838503121561255357600080fd5b823561255e816123ed565b9150602083013561256e816123ed565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156125d7576125d76125ae565b500190565b600181811c908216806125f057607f821691505b6020821081141561261157634e487b7160e01b600052602260045260246000fd5b50919050565b6000816000190483118215151615612631576126316125ae565b500290565b60008261265357634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000828210156126f2576126f26125ae565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561271f57600080fd5b8151612197816123ed565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561277a5784516001600160a01b031683529383019391830191600101612755565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122041fc9ae257ebeca8775b67fa0663dc3d7174742fb967d480ec0fc14e7168d3c864736f6c634300080a00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x6080604052600436106102cd5760003560e01c80638a8c523c11610175578063a90eab8c116100dc578063c8c8ebe411610095578063dd62ed3e1161006f578063dd62ed3e14610893578063e2f45605146108d9578063f2fde38b146108ef578063f8b45b051461090f57600080fd5b8063c8c8ebe414610847578063d257b34f1461085d578063d85ba0631461087d57600080fd5b8063a90eab8c14610778578063aacebbe314610798578063b62496f5146107b8578063bbc0c742146107e8578063c024666814610807578063c18bc1951461082757600080fd5b80639a7a23d61161012e5780639a7a23d6146106d65780639c3b4fdc146106f65780639fccce321461070c578063a0d82dc514610722578063a457c2d714610738578063a9059cbb1461075857600080fd5b80638a8c523c146106385780638da5cb5b1461064d5780638ea5220f1461066b578063921369131461068b578063924de9b7146106a157806395d89b41146106c157600080fd5b806339509351116102345780636ddd1713116101ed578063751039fc116101c7578063751039fc146105cd5780637571336a146105e257806375f0a874146106025780637bce5a041461062257600080fd5b80636ddd17131461056257806370a0823114610582578063715018a6146105b857600080fd5b8063395093511461049957806349bd5a5e146104b95780634a62bb65146104d95780634fbee193146104f357806366ca9b831461052c5780636a486a8e1461054c57600080fd5b80631816467f116102865780631816467f146103f15780631f3fed8f14610411578063203e727e1461042757806323b872dd1461044757806327c8f83514610467578063313ce5671461047d57600080fd5b806302dbd8f8146102d957806306fdde03146102fb578063095ea7b31461032657806310d5de53146103565780631694505e1461038657806318160ddd146103d257600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102f96102f4366004612376565b610925565b005b34801561030757600080fd5b506103106109c5565b60405161031d9190612398565b60405180910390f35b34801561033257600080fd5b50610346610341366004612402565b610a57565b604051901515815260200161031d565b34801561036257600080fd5b5061034661037136600461242e565b60166020526000908152604090205460ff1681565b34801561039257600080fd5b506103ba7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161031d565b3480156103de57600080fd5b506002545b60405190815260200161031d565b3480156103fd57600080fd5b506102f961040c36600461242e565b610a6d565b34801561041d57600080fd5b506103e360135481565b34801561043357600080fd5b506102f961044236600461244b565b610af4565b34801561045357600080fd5b50610346610462366004612464565b610bd1565b34801561047357600080fd5b506103ba61dead81565b34801561048957600080fd5b506040516012815260200161031d565b3480156104a557600080fd5b506103466104b4366004612402565b610c7b565b3480156104c557600080fd5b506006546103ba906001600160a01b031681565b3480156104e557600080fd5b50600c546103469060ff1681565b3480156104ff57600080fd5b5061034661050e36600461242e565b6001600160a01b031660009081526015602052604090205460ff1690565b34801561053857600080fd5b506102f9610547366004612376565b610cb7565b34801561055857600080fd5b506103e360105481565b34801561056e57600080fd5b50600c546103469062010000900460ff1681565b34801561058e57600080fd5b506103e361059d36600461242e565b6001600160a01b031660009081526020819052604090205490565b3480156105c457600080fd5b506102f9610d4a565b3480156105d957600080fd5b50610346610d80565b3480156105ee57600080fd5b506102f96105fd3660046124b5565b610dbd565b34801561060e57600080fd5b506007546103ba906001600160a01b031681565b34801561062e57600080fd5b506103e3600e5481565b34801561064457600080fd5b506102f9610e12565b34801561065957600080fd5b506005546001600160a01b03166103ba565b34801561067757600080fd5b506008546103ba906001600160a01b031681565b34801561069757600080fd5b506103e360115481565b3480156106ad57600080fd5b506102f96106bc3660046124ea565b610e4f565b3480156106cd57600080fd5b50610310610e95565b3480156106e257600080fd5b506102f96106f13660046124b5565b610ea4565b34801561070257600080fd5b506103e3600f5481565b34801561071857600080fd5b506103e360145481565b34801561072e57600080fd5b506103e360125481565b34801561074457600080fd5b50610346610753366004612402565b610f5c565b34801561076457600080fd5b50610346610773366004612402565b610ff5565b34801561078457600080fd5b506102f9610793366004612505565b611002565b3480156107a457600080fd5b506102f96107b336600461242e565b611299565b3480156107c457600080fd5b506103466107d336600461242e565b60176020526000908152604090205460ff1681565b3480156107f457600080fd5b50600c5461034690610100900460ff1681565b34801561081357600080fd5b506102f96108223660046124b5565b611320565b34801561083357600080fd5b506102f961084236600461244b565b6113a9565b34801561085357600080fd5b506103e360095481565b34801561086957600080fd5b5061034661087836600461244b565b61147a565b34801561088957600080fd5b506103e3600d5481565b34801561089f57600080fd5b506103e36108ae366004612540565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156108e557600080fd5b506103e3600a5481565b3480156108fb57600080fd5b506102f961090a36600461242e565b6115d1565b34801561091b57600080fd5b506103e3600b5481565b6005546001600160a01b031633146109585760405162461bcd60e51b815260040161094f90612579565b60405180910390fd5b6011829055601281905561096c81836125c4565b6010819055603210156109c15760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420353025206f72206c657373000000604482015260640161094f565b5050565b6060600380546109d4906125dc565b80601f0160208091040260200160405190810160405280929190818152602001828054610a00906125dc565b8015610a4d5780601f10610a2257610100808354040283529160200191610a4d565b820191906000526020600020905b815481529060010190602001808311610a3057829003601f168201915b5050505050905090565b6000610a6433848461166c565b50600192915050565b6005546001600160a01b03163314610a975760405162461bcd60e51b815260040161094f90612579565b6008546040516001600160a01b03918216918316907f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74390600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610b1e5760405162461bcd60e51b815260040161094f90612579565b670de0b6b3a76400006103e8610b3360025490565b610b3e906001612617565b610b489190612636565b610b529190612636565b811015610bb95760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b606482015260840161094f565b610bcb81670de0b6b3a7640000612617565b60095550565b6000610bde848484611790565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610c635760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161094f565b610c70853385840361166c565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a64918590610cb29086906125c4565b61166c565b6005546001600160a01b03163314610ce15760405162461bcd60e51b815260040161094f90612579565b600e829055600f819055610cf581836125c4565b600d819055601910156109c15760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c657373000000604482015260640161094f565b6005546001600160a01b03163314610d745760405162461bcd60e51b815260040161094f90612579565b610d7e6000611e3d565b565b6005546000906001600160a01b03163314610dad5760405162461bcd60e51b815260040161094f90612579565b50600c805460ff19169055600190565b6005546001600160a01b03163314610de75760405162461bcd60e51b815260040161094f90612579565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610e3c5760405162461bcd60e51b815260040161094f90612579565b600c805462ffff00191662010100179055565b6005546001600160a01b03163314610e795760405162461bcd60e51b815260040161094f90612579565b600c8054911515620100000262ff000019909216919091179055565b6060600480546109d4906125dc565b6005546001600160a01b03163314610ece5760405162461bcd60e51b815260040161094f90612579565b6006546001600160a01b0383811691161415610f525760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161094f565b6109c18282611e8f565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610fde5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161094f565b610feb338585840361166c565b5060019392505050565b6000610a64338484611790565b604080518082018252600d81526c2a3930b234b733902a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f65e27265c2bf07e8242fee81a602df3320989bd26741589720839868a275d56c918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160408051808303601f1901815282825280516020918201208383018352600e84526d456e61626c652054726164696e6760901b9382019390935281517f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae4918101919091527f07e4ca7f0c414d237f9df43639d0673c51201469c22695492434205e0b759df391810191909152600060608201819052919250608001604051602081830303815290604052805190602001209050600082826040516020016111a292919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa15801561120d573d6000803e3d6000fd5b50505060206040510351905061122b6005546001600160a01b031690565b6001600160a01b0316816001600160a01b03161461127f5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b604482015260640161094f565b5050600c805462ffff001916620101001790555050505050565b6005546001600160a01b031633146112c35760405162461bcd60e51b815260040161094f90612579565b6007546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461134a5760405162461bcd60e51b815260040161094f90612579565b6001600160a01b038216600081815260156020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146113d35760405162461bcd60e51b815260040161094f90612579565b670de0b6b3a76400006103e86113e860025490565b6113f3906005612617565b6113fd9190612636565b6114079190612636565b8110156114625760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b606482015260840161094f565b61147481670de0b6b3a7640000612617565b600b5550565b6005546000906001600160a01b031633146114a75760405162461bcd60e51b815260040161094f90612579565b620186a06114b460025490565b6114bf906001612617565b6114c99190612636565b8210156115365760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161094f565b6103e861154260025490565b61154d906005612617565b6115579190612636565b8211156115c35760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b606482015260840161094f565b50600a81905560015b919050565b6005546001600160a01b031633146115fb5760405162461bcd60e51b815260040161094f90612579565b6001600160a01b0381166116605760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161094f565b61166981611e3d565b50565b6001600160a01b0383166116ce5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161094f565b6001600160a01b03821661172f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161094f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166117b65760405162461bcd60e51b815260040161094f90612658565b6001600160a01b0382166117dc5760405162461bcd60e51b815260040161094f9061269d565b806117f2576117ed83836000611ee3565b505050565b600c5460ff1615611b68576005546001600160a01b0384811691161480159061182957506005546001600160a01b03838116911614155b801561183d57506001600160a01b03821615155b801561185457506001600160a01b03821661dead14155b801561186a5750600654600160a01b900460ff16155b15611b6857600c54610100900460ff16611902576001600160a01b03831660009081526015602052604090205460ff16806118bd57506001600160a01b03821660009081526015602052604090205460ff165b6119025760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161094f565b6001600160a01b03831660009081526017602052604090205460ff16801561194357506001600160a01b03821660009081526016602052604090205460ff16155b15611a27576009548111156119b85760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b606482015260840161094f565b600b546001600160a01b0383166000908152602081905260409020546119de90836125c4565b1115611a225760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161094f565b611b68565b6001600160a01b03821660009081526017602052604090205460ff168015611a6857506001600160a01b03831660009081526016602052604090205460ff16155b15611ade57600954811115611a225760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b606482015260840161094f565b6001600160a01b03821660009081526016602052604090205460ff16611b6857600b546001600160a01b038316600090815260208190526040902054611b2490836125c4565b1115611b685760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161094f565b30600090815260208190526040902054600a5481108015908190611b945750600c5462010000900460ff165b8015611baa5750600654600160a01b900460ff16155b8015611bcf57506001600160a01b03851660009081526017602052604090205460ff16155b8015611bf457506001600160a01b03851660009081526015602052604090205460ff16155b8015611c1957506001600160a01b03841660009081526015602052604090205460ff16155b15611c47576006805460ff60a01b1916600160a01b179055611c39612038565b6006805460ff60a01b191690555b6006546001600160a01b03861660009081526015602052604090205460ff600160a01b909204821615911680611c9557506001600160a01b03851660009081526015602052604090205460ff165b15611c9e575060005b60008115611e29576001600160a01b03861660009081526017602052604090205460ff168015611cd057506000601054115b15611d5e57611cf56064611cef6010548861218b90919063ffffffff16565b9061219e565b905060105460125482611d089190612617565b611d129190612636565b60146000828254611d2391906125c4565b9091555050601054601154611d389083612617565b611d429190612636565b60136000828254611d5391906125c4565b90915550611e0b9050565b6001600160a01b03871660009081526017602052604090205460ff168015611d8857506000600d54115b15611e0b57611da76064611cef600d548861218b90919063ffffffff16565b9050600d54600f5482611dba9190612617565b611dc49190612636565b60146000828254611dd591906125c4565b9091555050600d54600e54611dea9083612617565b611df49190612636565b60136000828254611e0591906125c4565b90915550505b8015611e1c57611e1c873083611ee3565b611e2681866126e0565b94505b611e34878787611ee3565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260176020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611f095760405162461bcd60e51b815260040161094f90612658565b6001600160a01b038216611f2f5760405162461bcd60e51b815260040161094f9061269d565b6001600160a01b03831660009081526020819052604090205481811015611fa75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161094f565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611fde9084906125c4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161202a91815260200190565b60405180910390a350505050565b306000908152602081905260408120549050600060145460135461205c91906125c4565b9050600082158061206b575081155b1561207557505050565b600a54612083906014612617565b83111561209b57600a54612098906014612617565b92505b476120a5846121aa565b60006120b1478361236a565b905060006120ce85611cef6014548561218b90919063ffffffff16565b6000601381905560148190556008546040519293506001600160a01b031691839181818185875af1925050503d8060008114612126576040519150601f19603f3d011682016040523d82523d6000602084013e61212b565b606091505b50506007546040519195506001600160a01b0316904790600081818185875af1925050503d806000811461217b576040519150601f19603f3d011682016040523d82523d6000602084013e612180565b606091505b505050505050505050565b60006121978284612617565b9392505050565b60006121978284612636565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106121df576121df6126f7565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561225d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612281919061270d565b81600181518110612294576122946126f7565b60200260200101906001600160a01b031690816001600160a01b0316815250506122df307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461166c565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac9479061233490859060009086903090429060040161272a565b600060405180830381600087803b15801561234e57600080fd5b505af1158015612362573d6000803e3d6000fd5b505050505050565b600061219782846126e0565b6000806040838503121561238957600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156123c5578581018301518582016040015282016123a9565b818111156123d7576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461166957600080fd5b6000806040838503121561241557600080fd5b8235612420816123ed565b946020939093013593505050565b60006020828403121561244057600080fd5b8135612197816123ed565b60006020828403121561245d57600080fd5b5035919050565b60008060006060848603121561247957600080fd5b8335612484816123ed565b92506020840135612494816123ed565b929592945050506040919091013590565b803580151581146115cc57600080fd5b600080604083850312156124c857600080fd5b82356124d3816123ed565b91506124e1602084016124a5565b90509250929050565b6000602082840312156124fc57600080fd5b612197826124a5565b60008060006060848603121561251a57600080fd5b833560ff8116811461252b57600080fd5b95602085013595506040909401359392505050565b6000806040838503121561255357600080fd5b823561255e816123ed565b9150602083013561256e816123ed565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156125d7576125d76125ae565b500190565b600181811c908216806125f057607f821691505b6020821081141561261157634e487b7160e01b600052602260045260246000fd5b50919050565b6000816000190483118215151615612631576126316125ae565b500290565b60008261265357634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000828210156126f2576126f26125ae565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561271f57600080fd5b8151612197816123ed565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561277a5784516001600160a01b031683529383019391830191600101612755565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122041fc9ae257ebeca8775b67fa0663dc3d7174742fb967d480ec0fc14e7168d3c864736f6c634300080a0033

Deployed Bytecode Sourcemap

15049:13054:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21651:318;;;;;;;;;;-1:-1:-1;21651:318:0;;;;;:::i;:::-;;:::i;:::-;;2746:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3660:169;;;;;;;;;;-1:-1:-1;3660:169:0;;;;;:::i;:::-;;:::i;:::-;;;1490:14:1;;1483:22;1465:41;;1453:2;1438:18;3660:169:0;1325:187:1;15959:63:0;;;;;;;;;;-1:-1:-1;15959:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15123:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1960:32:1;;;1942:51;;1930:2;1915:18;15123:51:0;1769:230:1;3067:108:0;;;;;;;;;;-1:-1:-1;3155:12:0;;3067:108;;;2150:25:1;;;2138:2;2123:18;3067:108:0;2004:177:1;22891:157:0;;;;;;;;;;-1:-1:-1;22891:157:0;;;;;:::i;:::-;;:::i;15824:33::-;;;;;;;;;;;;;;;;20414:275;;;;;;;;;;-1:-1:-1;20414:275:0;;;;;:::i;:::-;;:::i;3837:492::-;;;;;;;;;;-1:-1:-1;3837:492:0;;;;;:::i;:::-;;:::i;15216:53::-;;;;;;;;;;;;15262:6;15216:53;;2966:93;;;;;;;;;;-1:-1:-1;2966:93:0;;3049:2;3182:36:1;;3170:2;3155:18;2966:93:0;3040:184:1;4337:215:0;;;;;;;;;;-1:-1:-1;4337:215:0;;;;;:::i;:::-;;:::i;15181:28::-;;;;;;;;;;-1:-1:-1;15181:28:0;;;;-1:-1:-1;;;;;15181:28:0;;;15493:33;;;;;;;;;;-1:-1:-1;15493:33:0;;;;;;;;23056:126;;;;;;;;;;-1:-1:-1;23056:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;23146:28:0;23122:4;23146:28;;;:19;:28;;;;;;;;;23056:126;21332:311;;;;;;;;;;-1:-1:-1;21332:311:0;;;;;:::i;:::-;;:::i;15717:28::-;;;;;;;;;;;;;;;;15573:31;;;;;;;;;;-1:-1:-1;15573:31:0;;;;;;;;;;;3183:127;;;;;;;;;;-1:-1:-1;3183:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3284:18:0;3257:7;3284:18;;;;;;;;;;;;3183:127;868:103;;;;;;;;;;;;;:::i;19718:121::-;;;;;;;;;;;;;:::i;20961:167::-;;;;;;;;;;-1:-1:-1;20961:167:0;;;;;:::i;:::-;;:::i;15308:30::-;;;;;;;;;;-1:-1:-1;15308:30:0;;;;-1:-1:-1;;;;;15308:30:0;;;15647;;;;;;;;;;;;;;;;18484:112;;;;;;;;;;;;;:::i;645:87::-;;;;;;;;;;-1:-1:-1;718:6:0;;-1:-1:-1;;;;;718:6:0;645:87;;15345:24;;;;;;;;;;-1:-1:-1;15345:24:0;;;;-1:-1:-1;;;;;15345:24:0;;;15752:31;;;;;;;;;;;;;;;;21224:100;;;;;;;;;;-1:-1:-1;21224:100:0;;;;;:::i;:::-;;:::i;2854:104::-;;;;;;;;;;;;;:::i;22167:304::-;;;;;;;;;;-1:-1:-1;22167:304:0;;;;;:::i;:::-;;:::i;15684:24::-;;;;;;;;;;;;;;;;15864:27;;;;;;;;;;;;;;;;15790:25;;;;;;;;;;;;;;;;4560:413;;;;;;;;;;-1:-1:-1;4560:413:0;;;;;:::i;:::-;;:::i;3318:175::-;;;;;;;;;;-1:-1:-1;3318:175:0;;;;;:::i;:::-;;:::i;18604:1062::-;;;;;;;;;;-1:-1:-1;18604:1062:0;;;;;:::i;:::-;;:::i;22675:208::-;;;;;;;;;;-1:-1:-1;22675:208:0;;;;;:::i;:::-;;:::i;16031:57::-;;;;;;;;;;-1:-1:-1;16031:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15533:33;;;;;;;;;;-1:-1:-1;15533:33:0;;;;;;;;;;;21977:182;;;;;;;;;;-1:-1:-1;21977:182:0;;;;;:::i;:::-;;:::i;20697:256::-;;;;;;;;;;-1:-1:-1;20697:256:0;;;;;:::i;:::-;;:::i;15378:35::-;;;;;;;;;;;;;;;;19909:497;;;;;;;;;;-1:-1:-1;19909:497:0;;;;;:::i;:::-;;:::i;15613:27::-;;;;;;;;;;;;;;;;3501:151;;;;;;;;;;-1:-1:-1;3501:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3617:18:0;;;3590:7;3617:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3501:151;15420:33;;;;;;;;;;;;;;;;979:201;;;;;;;;;;-1:-1:-1;979:201:0;;;;;:::i;:::-;;:::i;15460:24::-;;;;;;;;;;;;;;;;21651:318;718:6;;-1:-1:-1;;;;;718:6:0;271:10;780:23;772:68;;;;-1:-1:-1;;;772:68:0;;;;;;;:::i;:::-;;;;;;;;;21770:16:::1;:32:::0;;;21813:10:::1;:20:::0;;;21860:29:::1;21826:7:::0;21789:13;21860:29:::1;:::i;:::-;21844:13;:45:::0;;;21925:2:::1;-1:-1:-1::0;21908:19:0::1;21900:61;;;::::0;-1:-1:-1;;;21900:61:0;;5530:2:1;21900:61:0::1;::::0;::::1;5512:21:1::0;5569:2;5549:18;;;5542:30;5608:31;5588:18;;;5581:59;5657:18;;21900:61:0::1;5328:353:1::0;21900:61:0::1;21651:318:::0;;:::o;2746:100::-;2800:13;2833:5;2826:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2746:100;:::o;3660:169::-;3743:4;3760:39;271:10;3783:7;3792:6;3760:8;:39::i;:::-;-1:-1:-1;3817:4:0;3660:169;;;;:::o;22891:157::-;718:6;;-1:-1:-1;;;;;718:6:0;271:10;780:23;772:68;;;;-1:-1:-1;;;772:68:0;;;;;;;:::i;:::-;22998:9:::1;::::0;22970:38:::1;::::0;-1:-1:-1;;;;;22998:9:0;;::::1;::::0;22970:38;::::1;::::0;::::1;::::0;22998:9:::1;::::0;22970:38:::1;23019:9;:21:::0;;-1:-1:-1;;;;;;23019:21:0::1;-1:-1:-1::0;;;;;23019:21:0;;;::::1;::::0;;;::::1;::::0;;22891:157::o;20414:275::-;718:6;;-1:-1:-1;;;;;718:6:0;271:10;780:23;772:68;;;;-1:-1:-1;;;772:68:0;;;;;;;:::i;:::-;20551:4:::1;20543;20522:13;3155:12:::0;;;3067:108;20522:13:::1;:17;::::0;20538:1:::1;20522:17;:::i;:::-;20521:26;;;;:::i;:::-;20520:35;;;;:::i;:::-;20510:6;:45;;20488:142;;;::::0;-1:-1:-1;;;20488:142:0;;6668:2:1;20488:142:0::1;::::0;::::1;6650:21:1::0;6707:2;6687:18;;;6680:30;6746:34;6726:18;;;6719:62;-1:-1:-1;;;6797:18:1;;;6790:45;6852:19;;20488:142:0::1;6466:411:1::0;20488:142:0::1;20664:17;:6:::0;20674::::1;20664:17;:::i;:::-;20641:20;:40:::0;-1:-1:-1;20414:275:0:o;3837:492::-;3977:4;3994:36;4004:6;4012:9;4023:6;3994:9;:36::i;:::-;-1:-1:-1;;;;;4070:19:0;;4043:24;4070:19;;;:11;:19;;;;;;;;271:10;4070:33;;;;;;;;4122:26;;;;4114:79;;;;-1:-1:-1;;;4114:79:0;;7084:2:1;4114:79:0;;;7066:21:1;7123:2;7103:18;;;7096:30;7162:34;7142:18;;;7135:62;-1:-1:-1;;;7213:18:1;;;7206:38;7261:19;;4114:79:0;6882:404:1;4114:79:0;4229:57;4238:6;271:10;4279:6;4260:16;:25;4229:8;:57::i;:::-;-1:-1:-1;4317:4:0;;3837:492;-1:-1:-1;;;;3837:492:0:o;4337:215::-;271:10;4425:4;4474:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4474:34:0;;;;;;;;;;4425:4;;4442:80;;4465:7;;4474:47;;4511:10;;4474:47;:::i;:::-;4442:8;:80::i;21332:311::-;718:6;;-1:-1:-1;;;;;718:6:0;271:10;780:23;772:68;;;;-1:-1:-1;;;772:68:0;;;;;;;:::i;:::-;21450:15:::1;:31:::0;;;21492:9:::1;:19:::0;;;21537:27:::1;21504:7:::0;21468:13;21537:27:::1;:::i;:::-;21522:12;:42:::0;;;21599:2:::1;-1:-1:-1::0;21583:18:0::1;21575:60;;;::::0;-1:-1:-1;;;21575:60:0;;7493:2:1;21575:60:0::1;::::0;::::1;7475:21:1::0;7532:2;7512:18;;;7505:30;7571:31;7551:18;;;7544:59;7620:18;;21575:60:0::1;7291:353:1::0;868:103:0;718:6;;-1:-1:-1;;;;;718:6:0;271:10;780:23;772:68;;;;-1:-1:-1;;;772:68:0;;;;;;;:::i;:::-;933:30:::1;960:1;933:18;:30::i;:::-;868:103::o:0;19718:121::-;718:6;;19770:4;;-1:-1:-1;;;;;718:6:0;271:10;780:23;772:68;;;;-1:-1:-1;;;772:68:0;;;;;;;:::i;:::-;-1:-1:-1;19787:14:0::1;:22:::0;;-1:-1:-1;;19787:22:0::1;::::0;;;19718:121;:::o;20961:167::-;718:6;;-1:-1:-1;;;;;718:6:0;271:10;780:23;772:68;;;;-1:-1:-1;;;772:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21074:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;21074:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20961:167::o;18484:112::-;718:6;;-1:-1:-1;;;;;718:6:0;271:10;780:23;772:68;;;;-1:-1:-1;;;772:68:0;;;;;;;:::i;:::-;18539:13:::1;:20:::0;;-1:-1:-1;;18570:18:0;;;;;18484:112::o;21224:100::-;718:6;;-1:-1:-1;;;;;718:6:0;271:10;780:23;772:68;;;;-1:-1:-1;;;772:68:0;;;;;;;:::i;:::-;21295:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;21295:21:0;;::::1;::::0;;;::::1;::::0;;21224:100::o;2854:104::-;2910:13;2943:7;2936:14;;;;;:::i;22167:304::-;718:6;;-1:-1:-1;;;;;718:6:0;271:10;780:23;772:68;;;;-1:-1:-1;;;772:68:0;;;;;;;:::i;:::-;22311:13:::1;::::0;-1:-1:-1;;;;;22303:21:0;;::::1;22311:13:::0;::::1;22303:21;;22281:128;;;::::0;-1:-1:-1;;;22281:128:0;;7851:2:1;22281:128:0::1;::::0;::::1;7833:21:1::0;7890:2;7870:18;;;7863:30;7929:34;7909:18;;;7902:62;8000:27;7980:18;;;7973:55;8045:19;;22281:128:0::1;7649:421:1::0;22281:128:0::1;22422:41;22451:4;22457:5;22422:28;:41::i;4560:413::-:0;271:10;4653:4;4697:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4697:34:0;;;;;;;;;;4750:35;;;;4742:85;;;;-1:-1:-1;;;4742:85:0;;8277:2:1;4742:85:0;;;8259:21:1;8316:2;8296:18;;;8289:30;8355:34;8335:18;;;8328:62;-1:-1:-1;;;8406:18:1;;;8399:35;8451:19;;4742:85:0;8075:401:1;4742:85:0;4863:67;271:10;4886:7;4914:15;4895:16;:34;4863:8;:67::i;:::-;-1:-1:-1;4961:4:0;;4560:413;-1:-1:-1;;;4560:413:0:o;3318:175::-;3404:4;3421:42;271:10;3445:9;3456:6;3421:9;:42::i;18604:1062::-;18886:22;;;;;;;;;;;-1:-1:-1;;;18886:22:0;;;;;18938:10;;;;;;;;;;-1:-1:-1;;;18938:10:0;;;;18733:295;;18762:95;18733:295;;;8740:25:1;;;;18876:33:0;8781:18:1;;;8774:34;;;;18928:21:0;8824:18:1;;;8817:34;18968:13:0;8867:18:1;;;8860:34;19008:4:0;8910:19:1;;;8903:61;-1:-1:-1;;8712:19:1;;18733:295:0;;;;;;-1:-1:-1;;18733:295:0;;;;;;18709:330;;18733:295;18709:330;;;;19204:23;;;;;;;;-1:-1:-1;;;19204:23:0;;;;;;;19097:175;;19126:49;19097:175;;;9177:25:1;;;;19194:34:0;9218:18:1;;;9211:34;;;;-1:-1:-1;9261:18:1;;;9254:34;;;18709:330:0;;-1:-1:-1;9150:18:1;;19097:175:0;;;;;;;;;;;;19073:210;;;;;;19052:231;;19296:14;19401:10;19430;19337:134;;;;;;;;-1:-1:-1;;;9557:27:1;;9609:1;9600:11;;9593:27;;;;9645:2;9636:12;;9629:28;9682:2;9673:12;;9299:392;19337:134:0;;;;-1:-1:-1;;19337:134:0;;;;;;;;;19313:169;;19337:134;19313:169;;;;19495:14;19512:26;;;;;;;;;9923:25:1;;;9996:4;9984:17;;9964:18;;;9957:45;;;;10018:18;;;10011:34;;;10061:18;;;10054:34;;;19313:169:0;;-1:-1:-1;19495:14:0;19512:26;;9895:19:1;;19512:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19495:43;;19567:7;718:6;;-1:-1:-1;;;;;718:6:0;;645:87;19567:7;-1:-1:-1;;;;;19557:17:0;:6;-1:-1:-1;;;;;19557:17:0;;19549:47;;;;-1:-1:-1;;;19549:47:0;;10301:2:1;19549:47:0;;;10283:21:1;10340:2;10320:18;;;10313:30;-1:-1:-1;;;10359:18:1;;;10352:47;10416:18;;19549:47:0;10099:341:1;19549:47:0;-1:-1:-1;;19609:13:0;:20;;-1:-1:-1;;19640:18:0;;;;;-1:-1:-1;;;;;18604:1062:0:o;22675:208::-;718:6;;-1:-1:-1;;;;;718:6:0;271:10;780:23;772:68;;;;-1:-1:-1;;;772:68:0;;;;;;;:::i;:::-;22812:15:::1;::::0;22769:59:::1;::::0;-1:-1:-1;;;;;22812:15:0;;::::1;::::0;22769:59;::::1;::::0;::::1;::::0;22812:15:::1;::::0;22769:59:::1;22839:15;:36:::0;;-1:-1:-1;;;;;;22839:36:0::1;-1:-1:-1::0;;;;;22839:36:0;;;::::1;::::0;;;::::1;::::0;;22675:208::o;21977:182::-;718:6;;-1:-1:-1;;;;;718:6:0;271:10;780:23;772:68;;;;-1:-1:-1;;;772:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22062:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;22062:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;22117:34;;1465:41:1;;;22117:34:0::1;::::0;1438:18:1;22117:34:0::1;;;;;;;21977:182:::0;;:::o;20697:256::-;718:6;;-1:-1:-1;;;;;718:6:0;271:10;780:23;772:68;;;;-1:-1:-1;;;772:68:0;;;;;;;:::i;:::-;20837:4:::1;20829;20808:13;3155:12:::0;;;3067:108;20808:13:::1;:17;::::0;20824:1:::1;20808:17;:::i;:::-;20807:26;;;;:::i;:::-;20806:35;;;;:::i;:::-;20796:6;:45;;20774:131;;;::::0;-1:-1:-1;;;20774:131:0;;10647:2:1;20774:131:0::1;::::0;::::1;10629:21:1::0;10686:2;10666:18;;;10659:30;10725:34;10705:18;;;10698:62;-1:-1:-1;;;10776:18:1;;;10769:34;10820:19;;20774:131:0::1;10445:400:1::0;20774:131:0::1;20928:17;:6:::0;20938::::1;20928:17;:::i;:::-;20916:9;:29:::0;-1:-1:-1;20697:256:0:o;19909:497::-;718:6;;20017:4;;-1:-1:-1;;;;;718:6:0;271:10;780:23;772:68;;;;-1:-1:-1;;;772:68:0;;;;;;;:::i;:::-;20096:6:::1;20075:13;3155:12:::0;;;3067:108;20075:13:::1;:17;::::0;20091:1:::1;20075:17;:::i;:::-;20074:28;;;;:::i;:::-;20061:9;:41;;20039:144;;;::::0;-1:-1:-1;;;20039:144:0;;11052:2:1;20039:144:0::1;::::0;::::1;11034:21:1::0;11091:2;11071:18;;;11064:30;11130:34;11110:18;;;11103:62;-1:-1:-1;;;11181:18:1;;;11174:51;11242:19;;20039:144:0::1;10850:417:1::0;20039:144:0::1;20251:4;20230:13;3155:12:::0;;;3067:108;20230:13:::1;:17;::::0;20246:1:::1;20230:17;:::i;:::-;20229:26;;;;:::i;:::-;20216:9;:39;;20194:141;;;::::0;-1:-1:-1;;;20194:141:0;;11474:2:1;20194:141:0::1;::::0;::::1;11456:21:1::0;11513:2;11493:18;;;11486:30;11552:34;11532:18;;;11525:62;-1:-1:-1;;;11603:18:1;;;11596:50;11663:19;;20194:141:0::1;11272:416:1::0;20194:141:0::1;-1:-1:-1::0;20346:18:0::1;:30:::0;;;20394:4:::1;851:1;19909:497:::0;;;:::o;979:201::-;718:6;;-1:-1:-1;;;;;718:6:0;271:10;780:23;772:68;;;;-1:-1:-1;;;772:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1068:22:0;::::1;1060:73;;;::::0;-1:-1:-1;;;1060:73:0;;11895:2:1;1060:73:0::1;::::0;::::1;11877:21:1::0;11934:2;11914:18;;;11907:30;11973:34;11953:18;;;11946:62;-1:-1:-1;;;12024:18:1;;;12017:36;12070:19;;1060:73:0::1;11693:402:1::0;1060:73:0::1;1144:28;1163:8;1144:18;:28::i;:::-;979:201:::0;:::o;6728:380::-;-1:-1:-1;;;;;6864:19:0;;6856:68;;;;-1:-1:-1;;;6856:68:0;;12302:2:1;6856:68:0;;;12284:21:1;12341:2;12321:18;;;12314:30;12380:34;12360:18;;;12353:62;-1:-1:-1;;;12431:18:1;;;12424:34;12475:19;;6856:68:0;12100:400:1;6856:68:0;-1:-1:-1;;;;;6943:21:0;;6935:68;;;;-1:-1:-1;;;6935:68:0;;12707:2:1;6935:68:0;;;12689:21:1;12746:2;12726:18;;;12719:30;12785:34;12765:18;;;12758:62;-1:-1:-1;;;12836:18:1;;;12829:32;12878:19;;6935:68:0;12505:398:1;6935:68:0;-1:-1:-1;;;;;7016:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7068:32;;2150:25:1;;;7068:32:0;;2123:18:1;7068:32:0;;;;;;;6728:380;;;:::o;23240:3234::-;-1:-1:-1;;;;;23372:18:0;;23364:68;;;;-1:-1:-1;;;23364:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23451:16:0;;23443:64;;;;-1:-1:-1;;;23443:64:0;;;;;;;:::i;:::-;23524:11;23520:93;;23552:28;23568:4;23574:2;23578:1;23552:15;:28::i;:::-;23240:3234;;;:::o;23520:93::-;23629:14;;;;23625:1192;;;718:6;;-1:-1:-1;;;;;23664:15:0;;;718:6;;23664:15;;;;:49;;-1:-1:-1;718:6:0;;-1:-1:-1;;;;;23700:13:0;;;718:6;;23700:13;;23664:49;:86;;;;-1:-1:-1;;;;;;23734:16:0;;;;23664:86;:128;;;;-1:-1:-1;;;;;;23771:21:0;;23785:6;23771:21;;23664:128;:158;;;;-1:-1:-1;23814:8:0;;-1:-1:-1;;;23814:8:0;;;;23813:9;23664:158;23660:1146;;;23848:13;;;;;;;23843:150;;-1:-1:-1;;;;;23894:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;23923:23:0;;;;;;:19;:23;;;;;;;;23894:52;23886:87;;;;-1:-1:-1;;;23886:87:0;;13920:2:1;23886:87:0;;;13902:21:1;13959:2;13939:18;;;13932:30;-1:-1:-1;;;13978:18:1;;;13971:52;14040:18;;23886:87:0;13718:346:1;23886:87:0;-1:-1:-1;;;;;24045:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;24081:35:0;;;;;;:31;:35;;;;;;;;24080:36;24045:71;24041:750;;;24159:20;;24149:6;:30;;24141:96;;;;-1:-1:-1;;;24141:96:0;;14271:2:1;24141:96:0;;;14253:21:1;14310:2;14290:18;;;14283:30;14349:34;14329:18;;;14322:62;-1:-1:-1;;;14400:18:1;;;14393:51;14461:19;;24141:96:0;14069:417:1;24141:96:0;24294:9;;-1:-1:-1;;;;;3284:18:0;;3257:7;3284:18;;;;;;;;;;;24268:22;;:6;:22;:::i;:::-;:35;;24260:67;;;;-1:-1:-1;;;24260:67:0;;14693:2:1;24260:67:0;;;14675:21:1;14732:2;14712:18;;;14705:30;-1:-1:-1;;;14751:18:1;;;14744:49;14810:18;;24260:67:0;14491:343:1;24260:67:0;24041:750;;;-1:-1:-1;;;;;24403:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;24437:37:0;;;;;;:31;:37;;;;;;;;24436:38;24403:71;24399:392;;;24517:20;;24507:6;:30;;24499:97;;;;-1:-1:-1;;;24499:97:0;;15041:2:1;24499:97:0;;;15023:21:1;15080:2;15060:18;;;15053:30;15119:34;15099:18;;;15092:62;-1:-1:-1;;;15170:18:1;;;15163:52;15232:19;;24499:97:0;14839:418:1;24399:392:0;-1:-1:-1;;;;;24644:35:0;;;;;;:31;:35;;;;;;;;24639:152;;24738:9;;-1:-1:-1;;;;;3284:18:0;;3257:7;3284:18;;;;;;;;;;;24712:22;;:6;:22;:::i;:::-;:35;;24704:67;;;;-1:-1:-1;;;24704:67:0;;14693:2:1;24704:67:0;;;14675:21:1;14732:2;14712:18;;;14705:30;-1:-1:-1;;;14751:18:1;;;14744:49;14810:18;;24704:67:0;14491:343:1;24704:67:0;24878:4;24829:28;3284:18;;;;;;;;;;;24934;;24910:42;;;;;;;24969:35;;-1:-1:-1;24993:11:0;;;;;;;24969:35;:61;;;;-1:-1:-1;25022:8:0;;-1:-1:-1;;;25022:8:0;;;;25021:9;24969:61;:110;;;;-1:-1:-1;;;;;;25048:31:0;;;;;;:25;:31;;;;;;;;25047:32;24969:110;:153;;;;-1:-1:-1;;;;;;25097:25:0;;;;;;:19;:25;;;;;;;;25096:26;24969:153;:194;;;;-1:-1:-1;;;;;;25140:23:0;;;;;;:19;:23;;;;;;;;25139:24;24969:194;24965:302;;;25180:8;:15;;-1:-1:-1;;;;25180:15:0;-1:-1:-1;;;25180:15:0;;;25212:10;:8;:10::i;:::-;25239:8;:16;;-1:-1:-1;;;;25239:16:0;;;24965:302;25295:8;;-1:-1:-1;;;;;25405:25:0;;25279:12;25405:25;;;:19;:25;;;;;;25295:8;-1:-1:-1;;;25295:8:0;;;;;25294:9;;25405:25;;:52;;-1:-1:-1;;;;;;25434:23:0;;;;;;:19;:23;;;;;;;;25405:52;25401:100;;;-1:-1:-1;25484:5:0;25401:100;25513:12;25618:7;25614:807;;;-1:-1:-1;;;;;25670:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;25719:1;25703:13;;:17;25670:50;25666:606;;;25748:34;25778:3;25748:25;25759:13;;25748:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;25741:41;;25839:13;;25825:10;;25818:4;:17;;;;:::i;:::-;25817:35;;;;:::i;:::-;25801:12;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;25921:13:0;;25901:16;;25894:23;;:4;:23;:::i;:::-;25893:41;;;;:::i;:::-;25871:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;25666:606:0;;-1:-1:-1;25666:606:0;;-1:-1:-1;;;;;25996:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;26046:1;26031:12;;:16;25996:51;25992:280;;;26075:33;26104:3;26075:24;26086:12;;26075:6;:10;;:24;;;;:::i;:33::-;26068:40;;26164:12;;26151:9;;26144:4;:16;;;;:::i;:::-;26143:33;;;;:::i;:::-;26127:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;26244:12:0;;26225:15;;26218:22;;:4;:22;:::i;:::-;26217:39;;;;:::i;:::-;26195:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;25992:280:0;26292:8;;26288:91;;26321:42;26337:4;26351;26358;26321:15;:42::i;:::-;26395:14;26405:4;26395:14;;:::i;:::-;;;25614:807;26433:33;26449:4;26455:2;26459:6;26433:15;:33::i;:::-;23353:3121;;;;23240:3234;;;:::o;1188:191::-;1281:6;;;-1:-1:-1;;;;;1298:17:0;;;-1:-1:-1;;;;;;1298:17:0;;;;;;;1331:40;;1281:6;;;1298:17;1281:6;;1331:40;;1262:16;;1331:40;1251:128;1188:191;:::o;22479:188::-;-1:-1:-1;;;;;22562:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;22562:39:0;;;;;;;;;;22619:40;;22562:39;;:31;22619:40;;;22479:188;;:::o;4981:733::-;-1:-1:-1;;;;;5121:20:0;;5113:70;;;;-1:-1:-1;;;5113:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5202:23:0;;5194:71;;;;-1:-1:-1;;;5194:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5362:17:0;;5338:21;5362:17;;;;;;;;;;;5398:23;;;;5390:74;;;;-1:-1:-1;;;5390:74:0;;15594:2:1;5390:74:0;;;15576:21:1;15633:2;15613:18;;;15606:30;15672:34;15652:18;;;15645:62;-1:-1:-1;;;15723:18:1;;;15716:36;15769:19;;5390:74:0;15392:402:1;5390:74:0;-1:-1:-1;;;;;5500:17:0;;;:9;:17;;;;;;;;;;;5520:22;;;5500:42;;5564:20;;;;;;;;:30;;5536:6;;5500:9;5564:30;;5536:6;;5564:30;:::i;:::-;;;;;;;;5629:9;-1:-1:-1;;;;;5612:35:0;5621:6;-1:-1:-1;;;;;5612:35:0;;5640:6;5612:35;;;;2150:25:1;;2138:2;2123:18;;2004:177;5612:35:0;;;;;;;;5102:612;4981:733;;;:::o;27194:906::-;27277:4;27233:23;3284:18;;;;;;;;;;;27233:50;;27294:25;27343:12;;27322:18;;:33;;;;:::i;:::-;27294:61;-1:-1:-1;27366:12:0;27395:20;;;:46;;-1:-1:-1;27419:22:0;;27395:46;27391:85;;;27458:7;;;27194:906::o;27391:85::-;27510:18;;:23;;27531:2;27510:23;:::i;:::-;27492:15;:41;27488:115;;;27568:18;;:23;;27589:2;27568:23;:::i;:::-;27550:41;;27488:115;27643:21;27675:33;27692:15;27675:16;:33::i;:::-;27721:18;27742:44;:21;27768:17;27742:25;:44::i;:::-;27721:65;;27797:17;27817:51;27850:17;27817:28;27832:12;;27817:10;:14;;:28;;;;:::i;:51::-;27902:1;27881:18;:22;;;27914:12;:16;;;27965:9;;27957:45;;27797:71;;-1:-1:-1;;;;;;27965:9:0;;27797:71;;27957:45;27902:1;27957:45;27797:71;27965:9;27957:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28035:15:0;;28027:65;;27943:59;;-1:-1:-1;;;;;;28035:15:0;;28065:21;;28027:65;;;;28065:21;28035:15;28027:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;27194:906:0:o;8734:98::-;8792:7;8819:5;8823:1;8819;:5;:::i;:::-;8812:12;8734:98;-1:-1:-1;;;8734:98:0:o;8840:::-;8898:7;8925:5;8929:1;8925;:5;:::i;26597:589::-;26747:16;;;26761:1;26747:16;;;;;;;;26723:21;;26747:16;;;;;;;;;;-1:-1:-1;26747:16:0;26723:40;;26792:4;26774;26779:1;26774:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;26774:23:0;;;-1:-1:-1;;;;;26774:23:0;;;;;26818:15;-1:-1:-1;;;;;26818:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26808:4;26813:1;26808:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;26808:32:0;;;-1:-1:-1;;;;;26808:32:0;;;;;26853:62;26870:4;26885:15;26903:11;26853:8;:62::i;:::-;26954:224;;-1:-1:-1;;;26954:224:0;;-1:-1:-1;;;;;26954:15:0;:66;;;;:224;;27035:11;;27061:1;;27105:4;;27132;;27152:15;;26954:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26652:534;26597:589;:::o;8628:98::-;8686:7;8713:5;8717:1;8713;:5;:::i;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:597::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;705:6;702:1;699:13;696:91;;;775:1;770:2;761:6;750:9;746:22;742:31;735:42;696:91;-1:-1:-1;848:2:1;827:15;-1:-1:-1;;823:29:1;808:45;;;;855:2;804:54;;267:597;-1:-1:-1;;;267:597:1:o;869:131::-;-1:-1:-1;;;;;944:31:1;;934:42;;924:70;;990:1;987;980:12;1005:315;1073:6;1081;1134:2;1122:9;1113:7;1109:23;1105:32;1102:52;;;1150:1;1147;1140:12;1102:52;1189:9;1176:23;1208:31;1233:5;1208:31;:::i;:::-;1258:5;1310:2;1295:18;;;;1282:32;;-1:-1:-1;;;1005:315:1:o;1517:247::-;1576:6;1629:2;1617:9;1608:7;1604:23;1600:32;1597:52;;;1645:1;1642;1635:12;1597:52;1684:9;1671:23;1703:31;1728:5;1703:31;:::i;2186:180::-;2245:6;2298:2;2286:9;2277:7;2273:23;2269:32;2266:52;;;2314:1;2311;2304:12;2266:52;-1:-1:-1;2337:23:1;;2186:180;-1:-1:-1;2186:180:1:o;2371:456::-;2448:6;2456;2464;2517:2;2505:9;2496:7;2492:23;2488:32;2485:52;;;2533:1;2530;2523:12;2485:52;2572:9;2559:23;2591:31;2616:5;2591:31;:::i;:::-;2641:5;-1:-1:-1;2698:2:1;2683:18;;2670:32;2711:33;2670:32;2711:33;:::i;:::-;2371:456;;2763:7;;-1:-1:-1;;;2817:2:1;2802:18;;;;2789:32;;2371:456::o;3229:160::-;3294:20;;3350:13;;3343:21;3333:32;;3323:60;;3379:1;3376;3369:12;3394:315;3459:6;3467;3520:2;3508:9;3499:7;3495:23;3491:32;3488:52;;;3536:1;3533;3526:12;3488:52;3575:9;3562:23;3594:31;3619:5;3594:31;:::i;:::-;3644:5;-1:-1:-1;3668:35:1;3699:2;3684:18;;3668:35;:::i;:::-;3658:45;;3394:315;;;;;:::o;3714:180::-;3770:6;3823:2;3811:9;3802:7;3798:23;3794:32;3791:52;;;3839:1;3836;3829:12;3791:52;3862:26;3878:9;3862:26;:::i;3899:405::-;3974:6;3982;3990;4043:2;4031:9;4022:7;4018:23;4014:32;4011:52;;;4059:1;4056;4049:12;4011:52;4098:9;4085:23;4148:4;4141:5;4137:16;4130:5;4127:27;4117:55;;4168:1;4165;4158:12;4117:55;4191:5;4243:2;4228:18;;4215:32;;-1:-1:-1;4294:2:1;4279:18;;;4266:32;;3899:405;-1:-1:-1;;;3899:405:1:o;4309:388::-;4377:6;4385;4438:2;4426:9;4417:7;4413:23;4409:32;4406:52;;;4454:1;4451;4444:12;4406:52;4493:9;4480:23;4512:31;4537:5;4512:31;:::i;:::-;4562:5;-1:-1:-1;4619:2:1;4604:18;;4591:32;4632:33;4591:32;4632:33;:::i;:::-;4684:7;4674:17;;;4309:388;;;;;:::o;4702:356::-;4904:2;4886:21;;;4923:18;;;4916:30;4982:34;4977:2;4962:18;;4955:62;5049:2;5034:18;;4702:356::o;5063:127::-;5124:10;5119:3;5115:20;5112:1;5105:31;5155:4;5152:1;5145:15;5179:4;5176:1;5169:15;5195:128;5235:3;5266:1;5262:6;5259:1;5256:13;5253:39;;;5272:18;;:::i;:::-;-1:-1:-1;5308:9:1;;5195:128::o;5686:380::-;5765:1;5761:12;;;;5808;;;5829:61;;5883:4;5875:6;5871:17;5861:27;;5829:61;5936:2;5928:6;5925:14;5905:18;5902:38;5899:161;;;5982:10;5977:3;5973:20;5970:1;5963:31;6017:4;6014:1;6007:15;6045:4;6042:1;6035:15;5899:161;;5686:380;;;:::o;6071:168::-;6111:7;6177:1;6173;6169:6;6165:14;6162:1;6159:21;6154:1;6147:9;6140:17;6136:45;6133:71;;;6184:18;;:::i;:::-;-1:-1:-1;6224:9:1;;6071:168::o;6244:217::-;6284:1;6310;6300:132;;6354:10;6349:3;6345:20;6342:1;6335:31;6389:4;6386:1;6379:15;6417:4;6414:1;6407:15;6300:132;-1:-1:-1;6446:9:1;;6244:217::o;12908:401::-;13110:2;13092:21;;;13149:2;13129:18;;;13122:30;13188:34;13183:2;13168:18;;13161:62;-1:-1:-1;;;13254:2:1;13239:18;;13232:35;13299:3;13284:19;;12908:401::o;13314:399::-;13516:2;13498:21;;;13555:2;13535:18;;;13528:30;13594:34;13589:2;13574:18;;13567:62;-1:-1:-1;;;13660:2:1;13645:18;;13638:33;13703:3;13688:19;;13314:399::o;15262:125::-;15302:4;15330:1;15327;15324:8;15321:34;;;15335:18;;:::i;:::-;-1:-1:-1;15372:9:1;;15262:125::o;16141:127::-;16202:10;16197:3;16193:20;16190:1;16183:31;16233:4;16230:1;16223:15;16257:4;16254:1;16247:15;16273:251;16343:6;16396:2;16384:9;16375:7;16371:23;16367:32;16364:52;;;16412:1;16409;16402:12;16364:52;16444:9;16438:16;16463:31;16488:5;16463:31;:::i;16529:980::-;16791:4;16839:3;16828:9;16824:19;16870:6;16859:9;16852:25;16896:2;16934:6;16929:2;16918:9;16914:18;16907:34;16977:3;16972:2;16961:9;16957:18;16950:31;17001:6;17036;17030:13;17067:6;17059;17052:22;17105:3;17094:9;17090:19;17083:26;;17144:2;17136:6;17132:15;17118:29;;17165:1;17175:195;17189:6;17186:1;17183:13;17175:195;;;17254:13;;-1:-1:-1;;;;;17250:39:1;17238:52;;17345:15;;;;17310:12;;;;17286:1;17204:9;17175:195;;;-1:-1:-1;;;;;;;17426:32:1;;;;17421:2;17406:18;;17399:60;-1:-1:-1;;;17490:3:1;17475:19;17468:35;17387:3;16529:980;-1:-1:-1;;;16529:980:1:o

Swarm Source

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