ETH Price: $3,163.98 (+1.41%)
Gas: 1 Gwei

Token

EL CHAPEPE (BLOW)
 

Overview

Max Total Supply

1,000,000,000 BLOW

Holders

79

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,361,507.670285115141501064 BLOW

Value
$0.00
0x2E699E49dcfcBDEB9CE17c4530263e28497FEFd9
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:
BLOW

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-28
*/

/*
 Website  : https://elchapepe.com/
 Telegram : https://t.me/elchapepe
 Twitter  : https://twitter.com/ElChapepe
*/

//SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

     /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    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");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

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

        emit Transfer(sender, recipient, amount);
    }

    /** This function will be used to generate the total supply
    * while deploying the contract
    *
    * This function can never be called again after deploying contract
    */
    function _tokengeneration(address account, uint256 amount) internal virtual {
        _totalSupply = amount;
        _balances[account] = amount;
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
            // _balances[address(0xdead)] += amount;
        }

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

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    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);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

library Address {
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_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 {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

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

    function WETH() external pure returns (address);

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

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

/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        _spendAllowance(account, _msgSender(), amount);
        _burn(account, amount);
    }
}

contract BLOW is ERC20, ERC20Burnable, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;

    bool private _interlock = false;
    bool public providingLiquidity = false;
    bool public tradingEnabled = false;
    bool public renounce = false;

    uint256 public launchedAtBlock;

    uint256 public tokenLiquidityThreshold = 10_000_000 * 10**decimals();
    uint256 public maxBuyLimit = 10_000_000 * 10**decimals();
    uint256 public maxSellLimit = 10_000_000 * 10**decimals();
    uint256 public maxWalletLimit = 20_000_000 * 10**decimals();

    address public marketingWallet = 0x8f3d131e07545d77557bfE3129298f65eB582170;
	address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
        uint256 burn;
    }

    Taxes public taxes = Taxes(0, 0, 0);
    Taxes public sellTaxes = Taxes(0, 0, 0);
    Taxes public transferTaxes = Taxes(0, 0, 0);

    mapping(address => bool) public exemptFee;

    event LimitRemoved(uint256 maxBuy, uint256 maxSell, uint256 maxWallet);
    event BuyTaxesUpdated(uint256 marketing, uint256 liquidity, uint256 burn);
    event SellTaxesUpdated(uint256 marketing, uint256 liquidity, uint256 burn);
    event TransferTaxesUpdated(uint256 marketing, uint256 liquidity, uint256 burn);
    event TaxesRemoved(uint256 marketing, uint256 liquidity, uint256 burn);

    modifier lockTheSwap() {
        if (!_interlock) {
            _interlock = true;
            _;
            _interlock = false;
        }
    }

    constructor() ERC20("EL CHAPEPE", "BLOW") {
        _tokengeneration(marketingWallet, 1_000_000_000 * 10**decimals());

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // uniswap V2
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        exemptFee[address(this)] = true;
        exemptFee[deadWallet] = true;
        exemptFee[msg.sender] = true;
        exemptFee[marketingWallet] = true;

        transferOwnership(marketingWallet);
    }

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

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

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

        return true;
    }

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

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

        return true;
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");

        if (!exemptFee[sender] && !exemptFee[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }

        if (sender == pair && !exemptFee[recipient] && !_interlock) {
            require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit");
            require(
                balanceOf(recipient) + amount <= maxWalletLimit,
                "You are exceeding maxWalletLimit"
            );
        }

        if (
            sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_interlock
        ) {
            require(amount <= maxSellLimit, "You are exceeding maxSellLimit");
            if (recipient != pair) {
                require(
                    balanceOf(recipient) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
        }

        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        uint256 feeBurn;
        uint256 burnAmount;
        Taxes memory currentTaxes;

        //set fee to zero if fees in contract are handled or exempted
        if (_interlock || exemptFee[sender] || exemptFee[recipient])
            fee = 0;

            //calculate fee
        else if (recipient == pair) {
            feeswap =
                sellTaxes.liquidity +
                sellTaxes.marketing;
            feesum = feeswap;
            feeBurn = sellTaxes.burn;
            currentTaxes = sellTaxes;
        } else if (sender == pair) {
            feeswap =
                taxes.liquidity +
                taxes.marketing;
            feesum = feeswap;
            feeBurn = taxes.burn;
            currentTaxes = taxes;
        } else {
            feeswap =
                transferTaxes.liquidity +
                transferTaxes.marketing ;
            feesum = feeswap;
            feeBurn = transferTaxes.burn;
            currentTaxes = transferTaxes;
        }

        fee = (amount * feesum) / 100;
        burnAmount = (amount * feeBurn) / 100;

        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (providingLiquidity && sender != pair) Liquify(feeswap, currentTaxes);

        //rest to recipient
        super._transfer(sender, recipient, amount - (fee + burnAmount));
        // burn the tokens
        if(burnAmount > 0) {
            super._burn(sender, burnAmount);
        }
        if (fee > 0) {
            //send the fee to the contract
            if (feeswap > 0) {
                uint256 feeAmount = (amount * feeswap) / 100;
                super._transfer(sender, address(this), feeAmount);
            }

        }
    }

    function Liquify(uint256 feeswap, Taxes memory swapTaxes) private lockTheSwap {

        if(feeswap == 0){
            return;
        }

        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= tokenLiquidityThreshold) {
            if (tokenLiquidityThreshold > 1) {
                contractBalance = tokenLiquidityThreshold;
            }

            // Split the contract balance into halves
            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) /
                denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity;

            if (ethToAddLiquidityWith > 0) {
                // Add liquidity to pancake
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }

            uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing;
            if (marketingAmt > 0) {
                payable(marketingWallet).sendValue(marketingAmt);
            }

        }
    }

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

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{ value: ethAmount }(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deadWallet,
            block.timestamp
        );
    }

    function updateLiquidityProvide(bool state) external onlyOwner {
        //update liquidity providing state
        providingLiquidity = state;
    }

    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        require(new_amount <= 15_000_000 && new_amount > 0, "Swap threshold amount should be lower or euqal to 1.5% of tokens");
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }
    // Open trade can only be called once and never again
    function _openTrading() external onlyOwner {
        require(!tradingEnabled, "Cannot re-enable trading");
        tradingEnabled = true;
        providingLiquidity = true;
        launchedAtBlock = block.number;

        taxes = Taxes(30, 0, 0);
        sellTaxes = Taxes(60, 0, 0);
    }

    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner {
        router = IRouter(newRouter);
        pair = newPair;
    }

    function updateWallet(address _marketingWallet) external onlyOwner {
        require(_marketingWallet != address(0),"Fee Address cannot be zero address");
        marketingWallet = _marketingWallet;
    }

    function updateMaxTxLimit(uint256 maxBuy, uint256 maxSell, uint256 maxWallet) external onlyOwner {
        require(maxBuy >= 1_000_000, "Cannot set max buy amount lower than 0.1%");
        require(maxSell >= 1_000_000, "Cannot set max sell amount lower than 0.1%");
        require(maxWallet >= 5_000_000, "Cannot set max wallet amount lower than 0.5%");
        maxBuyLimit = maxBuy * 10**decimals();
        maxSellLimit = maxSell * 10**decimals();
        maxWalletLimit = maxWallet * 10**decimals(); 
    }

    function updateTax(uint256 _Buymarketing, uint256 _Sellmarketing) external onlyOwner {
        require (_Buymarketing <= 90);
        require (_Sellmarketing <= 90);
        taxes = Taxes(_Buymarketing, 0, 0);
        sellTaxes = Taxes(_Sellmarketing, 0, 0);
    }

    function LIFESENTENCE() external onlyOwner {
        require(tradingEnabled, "Enable trading first!");
        require(!renounce, "Already employed!");
        maxBuyLimit = totalSupply();
        maxSellLimit = totalSupply();
        maxWalletLimit = totalSupply();

        taxes = Taxes(0, 0, 0);
        sellTaxes = Taxes(0, 0, 0);

        renounceOwnership();

        renounce = true;

        emit LimitRemoved(maxBuyLimit, maxSellLimit, maxWalletLimit);
        emit TaxesRemoved(0, 0, 0);
    }

    function rescueETH(uint256 weiAmount) external onlyOwner{
        payable(owner()).transfer(weiAmount);
    }

    function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner {
        IERC20(tokenAdd).transfer(owner(), amount);
    }

    // fallbacks
    receive() external payable {}
}

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":false,"internalType":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"}],"name":"BuyTaxesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxSell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"LimitRemoved","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":false,"internalType":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"}],"name":"SellTaxesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"}],"name":"TaxesRemoved","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":false,"internalType":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"}],"name":"TransferTaxesUpdated","type":"event"},{"inputs":[],"name":"LIFESENTENCE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_openTrading","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","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":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAtBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"providingLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounce","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenLiquidityThreshold","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":"tradingEnabled","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":"transferTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Buymarketing","type":"uint256"},{"internalType":"uint256","name":"_Sellmarketing","type":"uint256"}],"name":"updateTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"updateWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526007805463ffffffff60a01b19169055620000226012600a6200069e565b620000319062989680620006b6565b600955620000426012600a6200069e565b620000519062989680620006b6565b600a5560126200006390600a6200069e565b620000729062989680620006b6565b600b55620000836012600a6200069e565b62000093906301312d00620006b6565b600c55600d80546001600160a01b031916738f3d131e07545d77557bfe3129298f65eb582170179055604080516060808201835260008083526020808401829052928401819052600e819055600f819055601081905583518083018552818152808401829052840181905260118190556012819055601381905583519182018452808252918101829052909101819052601481905560158190556016553480156200013d57600080fd5b506040518060400160405280600a815260200169454c204348415045504560b01b81525060405180604001604052806004815260200163424c4f5760e01b81525081600390816200018f919062000775565b5060046200019e828262000775565b505050620001bb620001b56200040a60201b60201c565b6200040e565b600d54620001f0906001600160a01b0316620001da6012600a6200069e565b620001ea90633b9aca00620006b6565b62000460565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000270919062000841565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e4919062000841565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000332573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000358919062000841565b600680546001600160a01b038086166001600160a01b03199283161790925560078054838516921691909117905530600090815260176020526040808220805460ff1990811660019081179092557f43fedf50e12e5c047fbe3576d03ab50250348e9a6030f531ab6d4ce10f5b030380548216831790553384528284208054821683179055600d8054861685529290932080549093161790915554919250620004029116620004b4565b50506200086c565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6005546001600160a01b03163314620005145760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b0381166200057b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016200050b565b62000586816200040e565b50565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005e0578160001904821115620005c457620005c462000589565b80851615620005d257918102915b93841c9390800290620005a4565b509250929050565b600082620005f95750600162000698565b81620006085750600062000698565b81600181146200062157600281146200062c576200064c565b600191505062000698565b60ff84111562000640576200064062000589565b50506001821b62000698565b5060208310610133831016604e8410600b841016171562000671575081810a62000698565b6200067d83836200059f565b806000190482111562000694576200069462000589565b0290505b92915050565b6000620006af60ff841683620005e8565b9392505050565b808202811582820484141762000698576200069862000589565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620006fb57607f821691505b6020821081036200071c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200077057600081815260208120601f850160051c810160208610156200074b5750805b601f850160051c820191505b818110156200076c5782815560010162000757565b5050505b505050565b81516001600160401b03811115620007915762000791620006d0565b620007a981620007a28454620006e6565b8462000722565b602080601f831160018114620007e15760008415620007c85750858301515b600019600386901b1c1916600185901b1785556200076c565b600085815260208120601f198616915b828110156200081257888601518255948401946001909101908401620007f1565b5085821015620008315787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200085457600080fd5b81516001600160a01b0381168114620006af57600080fd5b612742806200087c6000396000f3fe6080604052600436106102555760003560e01c8063744eaf1f11610139578063a457c2d7116100b6578063dd62ed3e1161007a578063dd62ed3e146106ec578063e1b450ad14610732578063f2fde38b14610752578063f66895a314610772578063f887ea4014610791578063fbe6324e146107b157600080fd5b8063a457c2d71461063b578063a8aa1b311461065b578063a9059cbb1461067b578063b15be2f51461069b578063c5d32bb2146106bc57600080fd5b80638cd4426d116100fd5780638cd4426d146105b25780638da5cb5b146105d25780638de890bd146105f057806395d89b41146106065780639e252f001461061b57600080fd5b8063744eaf1f1461050f57806375f0a8741461052457806379cc67901461055c578063848b86e31461057c57806385141a771461059c57600080fd5b806340b28c2f116101d2578063652e2f0411610196578063652e2f041461046357806366a88d96146104795780636aa5b37f1461048f57806370a08231146104a5578063715018a6146104db578063728f8eea146104f057600080fd5b806340b28c2f146103a857806342966c68146103c857806342b6fa11146103e85780634ada218b146104085780635331803c1461042957600080fd5b80631c1702f3116102195780631c1702f31461031757806323b872dd1461032c5780632f37aa6d1461034c578063313ce5671461036c578063395093511461038857600080fd5b806306fdde0314610261578063095ea7b31461028c5780631340538f146102bc5780631675d802146102de57806318160ddd1461030257600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b506102766107d2565b6040516102839190612287565b60405180910390f35b34801561029857600080fd5b506102ac6102a73660046122ea565b610864565b6040519015158152602001610283565b3480156102c857600080fd5b506102dc6102d7366004612324565b61087b565b005b3480156102ea57600080fd5b506102f460095481565b604051908152602001610283565b34801561030e57600080fd5b506002546102f4565b34801561032357600080fd5b506102dc6108cc565b34801561033857600080fd5b506102ac610347366004612348565b6109bd565b34801561035857600080fd5b506102dc610367366004612389565b610a6e565b34801561037857600080fd5b5060405160128152602001610283565b34801561039457600080fd5b506102ac6103a33660046122ea565b610b03565b3480156103b457600080fd5b506102dc6103c33660046123ab565b610b3a565b3480156103d457600080fd5b506102dc6103e33660046123e4565b610b92565b3480156103f457600080fd5b506102dc6104033660046123e4565b610b9f565b34801561041457600080fd5b506007546102ac90600160b01b900460ff1681565b34801561043557600080fd5b5060145460155460165461044892919083565b60408051938452602084019290925290820152606001610283565b34801561046f57600080fd5b506102f4600b5481565b34801561048557600080fd5b506102f4600c5481565b34801561049b57600080fd5b506102f4600a5481565b3480156104b157600080fd5b506102f46104c03660046123fd565b6001600160a01b031660009081526020819052604090205490565b3480156104e757600080fd5b506102dc610c6c565b3480156104fc57600080fd5b50600e54600f5460105461044892919083565b34801561051b57600080fd5b506102dc610ca2565b34801561053057600080fd5b50600d54610544906001600160a01b031681565b6040516001600160a01b039091168152602001610283565b34801561056857600080fd5b506102dc6105773660046122ea565b610e73565b34801561058857600080fd5b506102dc6105973660046123fd565b610e8c565b3480156105a857600080fd5b5061054461dead81565b3480156105be57600080fd5b506102dc6105cd3660046122ea565b610f39565b3480156105de57600080fd5b506005546001600160a01b0316610544565b3480156105fc57600080fd5b506102f460085481565b34801561061257600080fd5b50610276610ffa565b34801561062757600080fd5b506102dc6106363660046123e4565b611009565b34801561064757600080fd5b506102ac6106563660046122ea565b61106d565b34801561066757600080fd5b50600754610544906001600160a01b031681565b34801561068757600080fd5b506102ac6106963660046122ea565b611108565b3480156106a757600080fd5b506007546102ac90600160b81b900460ff1681565b3480156106c857600080fd5b506102ac6106d73660046123fd565b60176020526000908152604090205460ff1681565b3480156106f857600080fd5b506102f46107073660046123ab565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561073e57600080fd5b506102dc61074d36600461241a565b611115565b34801561075e57600080fd5b506102dc61076d3660046123fd565b6112c3565b34801561077e57600080fd5b5060115460125460135461044892919083565b34801561079d57600080fd5b50600654610544906001600160a01b031681565b3480156107bd57600080fd5b506007546102ac90600160a81b900460ff1681565b6060600380546107e190612446565b80601f016020809104026020016040519081016040528092919081815260200182805461080d90612446565b801561085a5780601f1061082f5761010080835404028352916020019161085a565b820191906000526020600020905b81548152906001019060200180831161083d57829003601f168201915b5050505050905090565b600061087133848461135b565b5060015b92915050565b6005546001600160a01b031633146108ae5760405162461bcd60e51b81526004016108a590612480565b60405180910390fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b031633146108f65760405162461bcd60e51b81526004016108a590612480565b600754600160b01b900460ff16156109505760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e67000000000000000060448201526064016108a5565b6007805461ffff60a81b191661010160a81b179055436008556040805160608082018352601e80835260006020808501829052938501819052600e91909155600f819055601081905583519182018452603c80835292820181905292018290526011556012819055601355565b60006109ca84848461147f565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a4f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108a5565b610a638533610a5e86856124cb565b61135b565b506001949350505050565b6005546001600160a01b03163314610a985760405162461bcd60e51b81526004016108a590612480565b605a821115610aa657600080fd5b605a811115610ab457600080fd5b604080516060808201835284825260006020808401829052928401819052600e95909555600f859055601085905582519081018352838152908101849052018290526011556012819055601355565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610871918590610a5e9086906124de565b6005546001600160a01b03163314610b645760405162461bcd60e51b81526004016108a590612480565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b610b9c3382611a33565b50565b6005546001600160a01b03163314610bc95760405162461bcd60e51b81526004016108a590612480565b62e4e1c08111158015610bdc5750600081115b610c50576040805162461bcd60e51b81526020600482015260248101919091527f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060448201527f6c6f776572206f7220657571616c20746f20312e3525206f6620746f6b656e7360648201526084016108a5565b610c5c6012600a6125d5565b610c6690826125e4565b60095550565b6005546001600160a01b03163314610c965760405162461bcd60e51b81526004016108a590612480565b610ca06000611b69565b565b6005546001600160a01b03163314610ccc5760405162461bcd60e51b81526004016108a590612480565b600754600160b01b900460ff16610d1d5760405162461bcd60e51b8152602060048201526015602482015274456e61626c652074726164696e672066697273742160581b60448201526064016108a5565b600754600160b81b900460ff1615610d6b5760405162461bcd60e51b8152602060048201526011602482015270416c726561647920656d706c6f7965642160781b60448201526064016108a5565b600254600a55600254600b55600254600c55604080516060808201835260008083526020808401829052928401819052600e819055600f81905560108190558351918201845280825291810182905290910181905260118190556012819055601355610dd5610c6c565b6007805460ff60b81b1916600160b81b179055600a54600b54600c54604080519384526020840192909252908201527f71e50fc869ff266df718ea6817d210f1b19d3d84b5d3dcfb72735630d5403d359060600160405180910390a1604080516000808252602082018190528183015290517f2862e186e6f0269fce86721e7c136c9a03d0672316fb9a878885a07f0a2b09289181900360600190a1565b610e7e823383611bbb565b610e888282611a33565b5050565b6005546001600160a01b03163314610eb65760405162461bcd60e51b81526004016108a590612480565b6001600160a01b038116610f175760405162461bcd60e51b815260206004820152602260248201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604482015261737360f01b60648201526084016108a5565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610f635760405162461bcd60e51b81526004016108a590612480565b816001600160a01b031663a9059cbb610f846005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610fd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff591906125fb565b505050565b6060600480546107e190612446565b6005546001600160a01b031633146110335760405162461bcd60e51b81526004016108a590612480565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610e88573d6000803e3d6000fd5b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110ef5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108a5565b6110fe3385610a5e86856124cb565b5060019392505050565b600061087133848461147f565b6005546001600160a01b0316331461113f5760405162461bcd60e51b81526004016108a590612480565b620f42408310156111a45760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b60648201526084016108a5565b620f424082101561120a5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b60648201526084016108a5565b624c4b408110156112725760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e352560a01b60648201526084016108a5565b61127e6012600a6125d5565b61128890846125e4565b600a55601261129890600a6125d5565b6112a290836125e4565b600b556112b16012600a6125d5565b6112bb90826125e4565b600c55505050565b6005546001600160a01b031633146112ed5760405162461bcd60e51b81526004016108a590612480565b6001600160a01b0381166113525760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a5565b610b9c81611b69565b6001600160a01b0383166113bd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a5565b6001600160a01b03821661141e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a5565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116114e15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108a5565b6001600160a01b03831660009081526017602052604090205460ff1615801561152357506001600160a01b03821660009081526017602052604090205460ff16155b1561157757600754600160b01b900460ff166115775760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016108a5565b6007546001600160a01b0384811691161480156115ad57506001600160a01b03821660009081526017602052604090205460ff16155b80156115c35750600754600160a01b900460ff16155b1561169557600a5481111561161a5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016108a5565b600c548161163d846001600160a01b031660009081526020819052604090205490565b61164791906124de565b11156116955760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108a5565b6007546001600160a01b038481169116148015906116cc57506001600160a01b03821660009081526017602052604090205460ff16155b80156116f157506001600160a01b03831660009081526017602052604090205460ff16155b80156117075750600754600160a01b900460ff16155b156117ee57600b5481111561175e5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016108a5565b6007546001600160a01b038381169116146117ee57600c5481611796846001600160a01b031660009081526020819052604090205490565b6117a091906124de565b11156117ee5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108a5565b600080600080600061181a60405180606001604052806000815260200160008152602001600081525090565b600754600160a01b900460ff168061184a57506001600160a01b03891660009081526017602052604090205460ff165b8061186d57506001600160a01b03881660009081526017602052604090205460ff165b1561187b5760009350611960565b6007546001600160a01b03908116908916036118d0576011546012546118a191906124de565b601354604080516060810182526011548152601254602082015290810182905291975087965093509050611960565b6007546001600160a01b03908116908a160361192557600e54600f546118f691906124de565b60105460408051606081018252600e548152600f54602082015290810182905291975087965093509050611960565b60145460155461193591906124de565b6016546040805160608101825260145481526015546020820152908101829052919750879650935090505b606461196c86896125e4565b6119769190612618565b9350606461198484896125e4565b61198e9190612618565b600754909250600160a81b900460ff1680156119b857506007546001600160a01b038a8116911614155b156119c7576119c78682611c4d565b6119e589896119d685886124de565b6119e0908b6124cb565b611d8a565b81156119f5576119f58983611a33565b8315611a28578515611a285760006064611a0f888a6125e4565b611a199190612618565b9050611a268a3083611d8a565b505b505050505050505050565b6001600160a01b038216611a935760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016108a5565b6001600160a01b03821660009081526020819052604090205481811015611b075760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016108a5565b6001600160a01b038316600081815260208181526040918290208585039055600280548690039055905184815261dead92917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114611c475781811015611c3a5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016108a5565b611c47848484840361135b565b50505050565b600754600160a01b900460ff16610e88576007805460ff60a01b1916600160a01b1790558115611d7957306000908152602081905260409020546009548110611d775760016009541115611ca057506009545b6000611cad8460026125e4565b9050600081846020015184611cc291906125e4565b611ccc9190612618565b90506000611cda82856124cb565b905047611ce682611f62565b6000611cf282476124cb565b90506000876020015186611d0691906124cb565b611d109083612618565b90506000886020015182611d2491906125e4565b90508015611d3657611d3686826120bc565b8851600090611d468460026125e4565b611d5091906125e4565b90508015611d6e57600d54611d6e906001600160a01b03168261216e565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b038316611dee5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108a5565b6001600160a01b038216611e505760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108a5565b6001600160a01b03831660009081526020819052604090205481811015611ec85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108a5565b611ed282826124cb565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611f089084906124de565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f5491815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f9757611f9761263a565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611ff0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120149190612650565b816001815181106120275761202761263a565b6001600160a01b03928316602091820292909201015260065461204d913091168461135b565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061208690859060009086903090429060040161266d565b600060405180830381600087803b1580156120a057600080fd5b505af11580156120b4573d6000803e3d6000fd5b505050505050565b6006546120d49030906001600160a01b03168461135b565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612142573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061216791906126de565b5050505050565b804710156121be5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108a5565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461220b576040519150601f19603f3d011682016040523d82523d6000602084013e612210565b606091505b5050905080610ff55760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108a5565b600060208083528351808285015260005b818110156122b457858101830151858201604001528201612298565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b9c57600080fd5b600080604083850312156122fd57600080fd5b8235612308816122d5565b946020939093013593505050565b8015158114610b9c57600080fd5b60006020828403121561233657600080fd5b813561234181612316565b9392505050565b60008060006060848603121561235d57600080fd5b8335612368816122d5565b92506020840135612378816122d5565b929592945050506040919091013590565b6000806040838503121561239c57600080fd5b50508035926020909101359150565b600080604083850312156123be57600080fd5b82356123c9816122d5565b915060208301356123d9816122d5565b809150509250929050565b6000602082840312156123f657600080fd5b5035919050565b60006020828403121561240f57600080fd5b8135612341816122d5565b60008060006060848603121561242f57600080fd5b505081359360208301359350604090920135919050565b600181811c9082168061245a57607f821691505b60208210810361247a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610875576108756124b5565b80820180821115610875576108756124b5565b600181815b8085111561252c578160001904821115612512576125126124b5565b8085161561251f57918102915b93841c93908002906124f6565b509250929050565b60008261254357506001610875565b8161255057506000610875565b816001811461256657600281146125705761258c565b6001915050610875565b60ff841115612581576125816124b5565b50506001821b610875565b5060208310610133831016604e8410600b84101617156125af575081810a610875565b6125b983836124f1565b80600019048211156125cd576125cd6124b5565b029392505050565b600061234160ff841683612534565b8082028115828204841417610875576108756124b5565b60006020828403121561260d57600080fd5b815161234181612316565b60008261263557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561266257600080fd5b8151612341816122d5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156126bd5784516001600160a01b031683529383019391830191600101612698565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156126f357600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220d472df9416b60094c557311ce0237087000b1e7c06baf0089e4424b7582c380664736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102555760003560e01c8063744eaf1f11610139578063a457c2d7116100b6578063dd62ed3e1161007a578063dd62ed3e146106ec578063e1b450ad14610732578063f2fde38b14610752578063f66895a314610772578063f887ea4014610791578063fbe6324e146107b157600080fd5b8063a457c2d71461063b578063a8aa1b311461065b578063a9059cbb1461067b578063b15be2f51461069b578063c5d32bb2146106bc57600080fd5b80638cd4426d116100fd5780638cd4426d146105b25780638da5cb5b146105d25780638de890bd146105f057806395d89b41146106065780639e252f001461061b57600080fd5b8063744eaf1f1461050f57806375f0a8741461052457806379cc67901461055c578063848b86e31461057c57806385141a771461059c57600080fd5b806340b28c2f116101d2578063652e2f0411610196578063652e2f041461046357806366a88d96146104795780636aa5b37f1461048f57806370a08231146104a5578063715018a6146104db578063728f8eea146104f057600080fd5b806340b28c2f146103a857806342966c68146103c857806342b6fa11146103e85780634ada218b146104085780635331803c1461042957600080fd5b80631c1702f3116102195780631c1702f31461031757806323b872dd1461032c5780632f37aa6d1461034c578063313ce5671461036c578063395093511461038857600080fd5b806306fdde0314610261578063095ea7b31461028c5780631340538f146102bc5780631675d802146102de57806318160ddd1461030257600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b506102766107d2565b6040516102839190612287565b60405180910390f35b34801561029857600080fd5b506102ac6102a73660046122ea565b610864565b6040519015158152602001610283565b3480156102c857600080fd5b506102dc6102d7366004612324565b61087b565b005b3480156102ea57600080fd5b506102f460095481565b604051908152602001610283565b34801561030e57600080fd5b506002546102f4565b34801561032357600080fd5b506102dc6108cc565b34801561033857600080fd5b506102ac610347366004612348565b6109bd565b34801561035857600080fd5b506102dc610367366004612389565b610a6e565b34801561037857600080fd5b5060405160128152602001610283565b34801561039457600080fd5b506102ac6103a33660046122ea565b610b03565b3480156103b457600080fd5b506102dc6103c33660046123ab565b610b3a565b3480156103d457600080fd5b506102dc6103e33660046123e4565b610b92565b3480156103f457600080fd5b506102dc6104033660046123e4565b610b9f565b34801561041457600080fd5b506007546102ac90600160b01b900460ff1681565b34801561043557600080fd5b5060145460155460165461044892919083565b60408051938452602084019290925290820152606001610283565b34801561046f57600080fd5b506102f4600b5481565b34801561048557600080fd5b506102f4600c5481565b34801561049b57600080fd5b506102f4600a5481565b3480156104b157600080fd5b506102f46104c03660046123fd565b6001600160a01b031660009081526020819052604090205490565b3480156104e757600080fd5b506102dc610c6c565b3480156104fc57600080fd5b50600e54600f5460105461044892919083565b34801561051b57600080fd5b506102dc610ca2565b34801561053057600080fd5b50600d54610544906001600160a01b031681565b6040516001600160a01b039091168152602001610283565b34801561056857600080fd5b506102dc6105773660046122ea565b610e73565b34801561058857600080fd5b506102dc6105973660046123fd565b610e8c565b3480156105a857600080fd5b5061054461dead81565b3480156105be57600080fd5b506102dc6105cd3660046122ea565b610f39565b3480156105de57600080fd5b506005546001600160a01b0316610544565b3480156105fc57600080fd5b506102f460085481565b34801561061257600080fd5b50610276610ffa565b34801561062757600080fd5b506102dc6106363660046123e4565b611009565b34801561064757600080fd5b506102ac6106563660046122ea565b61106d565b34801561066757600080fd5b50600754610544906001600160a01b031681565b34801561068757600080fd5b506102ac6106963660046122ea565b611108565b3480156106a757600080fd5b506007546102ac90600160b81b900460ff1681565b3480156106c857600080fd5b506102ac6106d73660046123fd565b60176020526000908152604090205460ff1681565b3480156106f857600080fd5b506102f46107073660046123ab565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561073e57600080fd5b506102dc61074d36600461241a565b611115565b34801561075e57600080fd5b506102dc61076d3660046123fd565b6112c3565b34801561077e57600080fd5b5060115460125460135461044892919083565b34801561079d57600080fd5b50600654610544906001600160a01b031681565b3480156107bd57600080fd5b506007546102ac90600160a81b900460ff1681565b6060600380546107e190612446565b80601f016020809104026020016040519081016040528092919081815260200182805461080d90612446565b801561085a5780601f1061082f5761010080835404028352916020019161085a565b820191906000526020600020905b81548152906001019060200180831161083d57829003601f168201915b5050505050905090565b600061087133848461135b565b5060015b92915050565b6005546001600160a01b031633146108ae5760405162461bcd60e51b81526004016108a590612480565b60405180910390fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b031633146108f65760405162461bcd60e51b81526004016108a590612480565b600754600160b01b900460ff16156109505760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e67000000000000000060448201526064016108a5565b6007805461ffff60a81b191661010160a81b179055436008556040805160608082018352601e80835260006020808501829052938501819052600e91909155600f819055601081905583519182018452603c80835292820181905292018290526011556012819055601355565b60006109ca84848461147f565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a4f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108a5565b610a638533610a5e86856124cb565b61135b565b506001949350505050565b6005546001600160a01b03163314610a985760405162461bcd60e51b81526004016108a590612480565b605a821115610aa657600080fd5b605a811115610ab457600080fd5b604080516060808201835284825260006020808401829052928401819052600e95909555600f859055601085905582519081018352838152908101849052018290526011556012819055601355565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610871918590610a5e9086906124de565b6005546001600160a01b03163314610b645760405162461bcd60e51b81526004016108a590612480565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b610b9c3382611a33565b50565b6005546001600160a01b03163314610bc95760405162461bcd60e51b81526004016108a590612480565b62e4e1c08111158015610bdc5750600081115b610c50576040805162461bcd60e51b81526020600482015260248101919091527f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060448201527f6c6f776572206f7220657571616c20746f20312e3525206f6620746f6b656e7360648201526084016108a5565b610c5c6012600a6125d5565b610c6690826125e4565b60095550565b6005546001600160a01b03163314610c965760405162461bcd60e51b81526004016108a590612480565b610ca06000611b69565b565b6005546001600160a01b03163314610ccc5760405162461bcd60e51b81526004016108a590612480565b600754600160b01b900460ff16610d1d5760405162461bcd60e51b8152602060048201526015602482015274456e61626c652074726164696e672066697273742160581b60448201526064016108a5565b600754600160b81b900460ff1615610d6b5760405162461bcd60e51b8152602060048201526011602482015270416c726561647920656d706c6f7965642160781b60448201526064016108a5565b600254600a55600254600b55600254600c55604080516060808201835260008083526020808401829052928401819052600e819055600f81905560108190558351918201845280825291810182905290910181905260118190556012819055601355610dd5610c6c565b6007805460ff60b81b1916600160b81b179055600a54600b54600c54604080519384526020840192909252908201527f71e50fc869ff266df718ea6817d210f1b19d3d84b5d3dcfb72735630d5403d359060600160405180910390a1604080516000808252602082018190528183015290517f2862e186e6f0269fce86721e7c136c9a03d0672316fb9a878885a07f0a2b09289181900360600190a1565b610e7e823383611bbb565b610e888282611a33565b5050565b6005546001600160a01b03163314610eb65760405162461bcd60e51b81526004016108a590612480565b6001600160a01b038116610f175760405162461bcd60e51b815260206004820152602260248201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604482015261737360f01b60648201526084016108a5565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610f635760405162461bcd60e51b81526004016108a590612480565b816001600160a01b031663a9059cbb610f846005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610fd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff591906125fb565b505050565b6060600480546107e190612446565b6005546001600160a01b031633146110335760405162461bcd60e51b81526004016108a590612480565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610e88573d6000803e3d6000fd5b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110ef5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108a5565b6110fe3385610a5e86856124cb565b5060019392505050565b600061087133848461147f565b6005546001600160a01b0316331461113f5760405162461bcd60e51b81526004016108a590612480565b620f42408310156111a45760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b60648201526084016108a5565b620f424082101561120a5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b60648201526084016108a5565b624c4b408110156112725760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e352560a01b60648201526084016108a5565b61127e6012600a6125d5565b61128890846125e4565b600a55601261129890600a6125d5565b6112a290836125e4565b600b556112b16012600a6125d5565b6112bb90826125e4565b600c55505050565b6005546001600160a01b031633146112ed5760405162461bcd60e51b81526004016108a590612480565b6001600160a01b0381166113525760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a5565b610b9c81611b69565b6001600160a01b0383166113bd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a5565b6001600160a01b03821661141e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a5565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116114e15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108a5565b6001600160a01b03831660009081526017602052604090205460ff1615801561152357506001600160a01b03821660009081526017602052604090205460ff16155b1561157757600754600160b01b900460ff166115775760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016108a5565b6007546001600160a01b0384811691161480156115ad57506001600160a01b03821660009081526017602052604090205460ff16155b80156115c35750600754600160a01b900460ff16155b1561169557600a5481111561161a5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016108a5565b600c548161163d846001600160a01b031660009081526020819052604090205490565b61164791906124de565b11156116955760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108a5565b6007546001600160a01b038481169116148015906116cc57506001600160a01b03821660009081526017602052604090205460ff16155b80156116f157506001600160a01b03831660009081526017602052604090205460ff16155b80156117075750600754600160a01b900460ff16155b156117ee57600b5481111561175e5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016108a5565b6007546001600160a01b038381169116146117ee57600c5481611796846001600160a01b031660009081526020819052604090205490565b6117a091906124de565b11156117ee5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108a5565b600080600080600061181a60405180606001604052806000815260200160008152602001600081525090565b600754600160a01b900460ff168061184a57506001600160a01b03891660009081526017602052604090205460ff165b8061186d57506001600160a01b03881660009081526017602052604090205460ff165b1561187b5760009350611960565b6007546001600160a01b03908116908916036118d0576011546012546118a191906124de565b601354604080516060810182526011548152601254602082015290810182905291975087965093509050611960565b6007546001600160a01b03908116908a160361192557600e54600f546118f691906124de565b60105460408051606081018252600e548152600f54602082015290810182905291975087965093509050611960565b60145460155461193591906124de565b6016546040805160608101825260145481526015546020820152908101829052919750879650935090505b606461196c86896125e4565b6119769190612618565b9350606461198484896125e4565b61198e9190612618565b600754909250600160a81b900460ff1680156119b857506007546001600160a01b038a8116911614155b156119c7576119c78682611c4d565b6119e589896119d685886124de565b6119e0908b6124cb565b611d8a565b81156119f5576119f58983611a33565b8315611a28578515611a285760006064611a0f888a6125e4565b611a199190612618565b9050611a268a3083611d8a565b505b505050505050505050565b6001600160a01b038216611a935760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016108a5565b6001600160a01b03821660009081526020819052604090205481811015611b075760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016108a5565b6001600160a01b038316600081815260208181526040918290208585039055600280548690039055905184815261dead92917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114611c475781811015611c3a5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016108a5565b611c47848484840361135b565b50505050565b600754600160a01b900460ff16610e88576007805460ff60a01b1916600160a01b1790558115611d7957306000908152602081905260409020546009548110611d775760016009541115611ca057506009545b6000611cad8460026125e4565b9050600081846020015184611cc291906125e4565b611ccc9190612618565b90506000611cda82856124cb565b905047611ce682611f62565b6000611cf282476124cb565b90506000876020015186611d0691906124cb565b611d109083612618565b90506000886020015182611d2491906125e4565b90508015611d3657611d3686826120bc565b8851600090611d468460026125e4565b611d5091906125e4565b90508015611d6e57600d54611d6e906001600160a01b03168261216e565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b038316611dee5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108a5565b6001600160a01b038216611e505760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108a5565b6001600160a01b03831660009081526020819052604090205481811015611ec85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108a5565b611ed282826124cb565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611f089084906124de565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f5491815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f9757611f9761263a565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611ff0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120149190612650565b816001815181106120275761202761263a565b6001600160a01b03928316602091820292909201015260065461204d913091168461135b565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061208690859060009086903090429060040161266d565b600060405180830381600087803b1580156120a057600080fd5b505af11580156120b4573d6000803e3d6000fd5b505050505050565b6006546120d49030906001600160a01b03168461135b565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612142573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061216791906126de565b5050505050565b804710156121be5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108a5565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461220b576040519150601f19603f3d011682016040523d82523d6000602084013e612210565b606091505b5050905080610ff55760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108a5565b600060208083528351808285015260005b818110156122b457858101830151858201604001528201612298565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b9c57600080fd5b600080604083850312156122fd57600080fd5b8235612308816122d5565b946020939093013593505050565b8015158114610b9c57600080fd5b60006020828403121561233657600080fd5b813561234181612316565b9392505050565b60008060006060848603121561235d57600080fd5b8335612368816122d5565b92506020840135612378816122d5565b929592945050506040919091013590565b6000806040838503121561239c57600080fd5b50508035926020909101359150565b600080604083850312156123be57600080fd5b82356123c9816122d5565b915060208301356123d9816122d5565b809150509250929050565b6000602082840312156123f657600080fd5b5035919050565b60006020828403121561240f57600080fd5b8135612341816122d5565b60008060006060848603121561242f57600080fd5b505081359360208301359350604090920135919050565b600181811c9082168061245a57607f821691505b60208210810361247a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610875576108756124b5565b80820180821115610875576108756124b5565b600181815b8085111561252c578160001904821115612512576125126124b5565b8085161561251f57918102915b93841c93908002906124f6565b509250929050565b60008261254357506001610875565b8161255057506000610875565b816001811461256657600281146125705761258c565b6001915050610875565b60ff841115612581576125816124b5565b50506001821b610875565b5060208310610133831016604e8410600b84101617156125af575081810a610875565b6125b983836124f1565b80600019048211156125cd576125cd6124b5565b029392505050565b600061234160ff841683612534565b8082028115828204841417610875576108756124b5565b60006020828403121561260d57600080fd5b815161234181612316565b60008261263557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561266257600080fd5b8151612341816122d5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156126bd5784516001600160a01b031683529383019391830191600101612698565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156126f357600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220d472df9416b60094c557311ce0237087000b1e7c06baf0089e4424b7582c380664736f6c63430008130033

Deployed Bytecode Sourcemap

16000:12009:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2498:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18237:161;;;;;;;;;;-1:-1:-1;18237:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;18237:161:0;1023:187:1;25151:152:0;;;;;;;;;;-1:-1:-1;25151:152:0;;;;;:::i;:::-;;:::i;:::-;;16352:68;;;;;;;;;;;;;;;;;;;1730:25:1;;;1718:2;1703:18;16352:68:0;1584:177:1;3618:108:0;;;;;;;;;;-1:-1:-1;3706:12:0;;3618:108;;25683:297;;;;;;;;;;;;;:::i;18406:448::-;;;;;;;;;;-1:-1:-1;18406:448:0;;;;;:::i;:::-;;:::i;26892:269::-;;;;;;;;;;-1:-1:-1;26892:269:0;;;;;:::i;:::-;;:::i;3460:93::-;;;;;;;;;;-1:-1:-1;3460:93:0;;3543:2;2622:36:1;;2610:2;2595:18;3460:93:0;2480:184:1;18862:248:0;;;;;;;;;;-1:-1:-1;18862:248:0;;;;;:::i;:::-;;:::i;25988:155::-;;;;;;;;;;-1:-1:-1;25988:155:0;;;;;:::i;:::-;;:::i;15419:91::-;;;;;;;;;;-1:-1:-1;15419:91:0;;;;;:::i;:::-;;:::i;25311:307::-;;;;;;;;;;-1:-1:-1;25311:307:0;;;;;:::i;:::-;;:::i;16235:34::-;;;;;;;;;;-1:-1:-1;16235:34:0;;;;-1:-1:-1;;;16235:34:0;;;;;;16985:43;;;;;;;;;;-1:-1:-1;16985:43:0;;;;;;;;;;;;;;;;3449:25:1;;;3505:2;3490:18;;3483:34;;;;3533:18;;;3526:34;3437:2;3422:18;16985:43:0;3247:319:1;16490:57:0;;;;;;;;;;;;;;;;16554:59;;;;;;;;;;;;;;;;16427:56;;;;;;;;;;;;;;;;3789:127;;;;;;;;;;-1:-1:-1;3789:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3890:18:0;3863:7;3890:18;;;;;;;;;;;;3789:127;13703:94;;;;;;;;;;;;;:::i;16897:35::-;;;;;;;;;;-1:-1:-1;16897:35:0;;;;;;;;;;;;27169:520;;;;;;;;;;;;;:::i;16622:75::-;;;;;;;;;;-1:-1:-1;16622:75:0;;;;-1:-1:-1;;;;;16622:75:0;;;;;;-1:-1:-1;;;;;3987:32:1;;;3969:51;;3957:2;3942:18;16622:75:0;3823:203:1;15829:164:0;;;;;;;;;;-1:-1:-1;15829:164:0;;;;;:::i;:::-;;:::i;26151:207::-;;;;;;;;;;-1:-1:-1;26151:207:0;;;;;:::i;:::-;;:::i;16701:79::-;;;;;;;;;;;;16738:42;16701:79;;27816:135;;;;;;;;;;-1:-1:-1;27816:135:0;;;;;:::i;:::-;;:::i;13480:87::-;;;;;;;;;;-1:-1:-1;13553:6:0;;-1:-1:-1;;;;;13553:6:0;13480:87;;16313:30;;;;;;;;;;;;;;;;2717:104;;;;;;;;;;;;;:::i;27697:111::-;;;;;;;;;;-1:-1:-1;27697:111:0;;;;;:::i;:::-;;:::i;19118:410::-;;;;;;;;;;-1:-1:-1;19118:410:0;;;;;:::i;:::-;;:::i;16124:19::-;;;;;;;;;;-1:-1:-1;16124:19:0;;;;-1:-1:-1;;;;;16124:19:0;;;19536:165;;;;;;;;;;-1:-1:-1;19536:165:0;;;;;:::i;:::-;;:::i;16276:28::-;;;;;;;;;;-1:-1:-1;16276:28:0;;;;-1:-1:-1;;;16276:28:0;;;;;;17037:41;;;;;;;;;;-1:-1:-1;17037:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4408:201;;;;;;;;;;-1:-1:-1;4408:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;4574:18:0;;;4542:7;4574:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4408:201;26366:518;;;;;;;;;;-1:-1:-1;26366:518:0;;;;;:::i;:::-;;:::i;13805:192::-;;;;;;;;;;-1:-1:-1;13805:192:0;;;;;:::i;:::-;;:::i;16939:39::-;;;;;;;;;;-1:-1:-1;16939:39:0;;;;;;;;;;;;16096:21;;;;;;;;;;-1:-1:-1;16096:21:0;;;;-1:-1:-1;;;;;16096:21:0;;;16190:38;;;;;;;;;;-1:-1:-1;16190:38:0;;;;-1:-1:-1;;;16190:38:0;;;;;;2498:100;2552:13;2585:5;2578:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2498:100;:::o;18237:161::-;18312:4;18329:39;300:10;18352:7;18361:6;18329:8;:39::i;:::-;-1:-1:-1;18386:4:0;18237:161;;;;;:::o;25151:152::-;13553:6;;-1:-1:-1;;;;;13553:6:0;300:10;13615:23;13607:68;;;;-1:-1:-1;;;13607:68:0;;;;;;;:::i;:::-;;;;;;;;;25269:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;25269:26:0::1;-1:-1:-1::0;;;;25269:26:0;;::::1;::::0;;;::::1;::::0;;25151:152::o;25683:297::-;13553:6;;-1:-1:-1;;;;;13553:6:0;300:10;13615:23;13607:68;;;;-1:-1:-1;;;13607:68:0;;;;;;;:::i;:::-;25746:14:::1;::::0;-1:-1:-1;;;25746:14:0;::::1;;;25745:15;25737:52;;;::::0;-1:-1:-1;;;25737:52:0;;5523:2:1;25737:52:0::1;::::0;::::1;5505:21:1::0;5562:2;5542:18;;;5535:30;5601:26;5581:18;;;5574:54;5645:18;;25737:52:0::1;5321:348:1::0;25737:52:0::1;25800:14;:21:::0;;-1:-1:-1;;;;25832:25:0;-1:-1:-1;;;25832:25:0;;;25886:12:::1;25868:15;:30:::0;25919:15:::1;::::0;;::::1;::::0;;::::1;::::0;;25925:2:::1;25919:15:::0;;;-1:-1:-1;25919:15:0::1;::::0;;::::1;::::0;;;;;;;;;25911:5:::1;:23:::0;;;;;;;;;;;;25957:15;;;;::::1;::::0;;25963:2:::1;25957:15:::0;;;;;::::1;::::0;;;;;;;;25945:9:::1;:27:::0;;;;;;;25683:297::o;18406:448::-;18538:4;18555:36;18565:6;18573:9;18584:6;18555:9;:36::i;:::-;-1:-1:-1;;;;;18631:19:0;;18604:24;18631:19;;;:11;:19;;;;;;;;300:10;18631:33;;;;;;;;18683:26;;;;18675:79;;;;-1:-1:-1;;;18675:79:0;;5876:2:1;18675:79:0;;;5858:21:1;5915:2;5895:18;;;5888:30;5954:34;5934:18;;;5927:62;-1:-1:-1;;;6005:18:1;;;5998:38;6053:19;;18675:79:0;5674:404:1;18675:79:0;18765:57;18774:6;300:10;18796:25;18815:6;18796:16;:25;:::i;:::-;18765:8;:57::i;:::-;-1:-1:-1;18842:4:0;;18406:448;-1:-1:-1;;;;18406:448:0:o;26892:269::-;13553:6;;-1:-1:-1;;;;;13553:6:0;300:10;13615:23;13607:68;;;;-1:-1:-1;;;13607:68:0;;;;;;;:::i;:::-;27014:2:::1;26997:13;:19;;26988:29;;;::::0;::::1;;27055:2;27037:14;:20;;27028:30;;;::::0;::::1;;27077:26;::::0;;::::1;::::0;;::::1;::::0;;;;;-1:-1:-1;27077:26:0::1;::::0;;::::1;::::0;;;;;;;;;27069:5:::1;:34:::0;;;;;;;;;;;;27126:27;;;;::::1;::::0;;;;;;;::::1;::::0;;;;;;;27114:9:::1;:39:::0;;;;;;;26892:269::o;18862:248::-;300:10;18978:4;19032:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19032:34:0;;;;;;;;;;18978:4;;19000:80;;19023:7;;19032:47;;19069:10;;19032:47;:::i;25988:155::-;13553:6;;-1:-1:-1;;;;;13553:6:0;300:10;13615:23;13607:68;;;;-1:-1:-1;;;13607:68:0;;;;;;;:::i;:::-;26083:6:::1;:27:::0;;-1:-1:-1;;;;;26083:27:0;;::::1;-1:-1:-1::0;;;;;;26083:27:0;;::::1;;::::0;;;26121:4:::1;:14:::0;;;;;::::1;::::0;::::1;;::::0;;25988:155::o;15419:91::-;15475:27;300:10;15495:6;15475:5;:27::i;:::-;15419:91;:::o;25311:307::-;13553:6;;-1:-1:-1;;;;;13553:6:0;300:10;13615:23;13607:68;;;;-1:-1:-1;;;13607:68:0;;;;;;;:::i;:::-;25449:10:::1;25435;:24;;:42;;;;;25476:1;25463:10;:14;25435:42;25427:119;;;::::0;;-1:-1:-1;;;25427:119:0;;6680:2:1;25427:119:0::1;::::0;::::1;6662:21:1::0;6699:18;;;6692:30;;;;6758:34;6738:18;;;6731:62;6829:34;6809:18;;;6802:62;6881:19;;25427:119:0::1;6478:428:1::0;25427:119:0::1;25596:14;3543:2:::0;25596::::1;:14;:::i;:::-;25583:27;::::0;:10;:27:::1;:::i;:::-;25557:23;:53:::0;-1:-1:-1;25311:307:0:o;13703:94::-;13553:6;;-1:-1:-1;;;;;13553:6:0;300:10;13615:23;13607:68;;;;-1:-1:-1;;;13607:68:0;;;;;;;:::i;:::-;13768:21:::1;13786:1;13768:9;:21::i;:::-;13703:94::o:0;27169:520::-;13553:6;;-1:-1:-1;;;;;13553:6:0;300:10;13615:23;13607:68;;;;-1:-1:-1;;;13607:68:0;;;;;;;:::i;:::-;27231:14:::1;::::0;-1:-1:-1;;;27231:14:0;::::1;;;27223:48;;;::::0;-1:-1:-1;;;27223:48:0;;8669:2:1;27223:48:0::1;::::0;::::1;8651:21:1::0;8708:2;8688:18;;;8681:30;-1:-1:-1;;;8727:18:1;;;8720:51;8788:18;;27223:48:0::1;8467:345:1::0;27223:48:0::1;27291:8;::::0;-1:-1:-1;;;27291:8:0;::::1;;;27290:9;27282:39;;;::::0;-1:-1:-1;;;27282:39:0;;9019:2:1;27282:39:0::1;::::0;::::1;9001:21:1::0;9058:2;9038:18;;;9031:30;-1:-1:-1;;;9077:18:1;;;9070:47;9134:18;;27282:39:0::1;8817:341:1::0;27282:39:0::1;3706:12:::0;;27332:11:::1;:27:::0;3706:12;;27370::::1;:28:::0;3706:12;;27409:14:::1;:30:::0;27460:14:::1;::::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;27460:14:0;;;::::1;::::0;;::::1;::::0;;;;;;;;;27452:5:::1;:22:::0;;;;;;;;;;;27497:14;;;;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;27485:9:::1;:26:::0;;;;;;;;;27524:19:::1;:17;:19::i;:::-;27556:8;:15:::0;;-1:-1:-1;;;;27556:15:0::1;-1:-1:-1::0;;;27556:15:0::1;::::0;;27602:11:::1;::::0;27615:12:::1;::::0;27629:14:::1;::::0;27589:55:::1;::::0;;3449:25:1;;;3505:2;3490:18;;3483:34;;;;3533:18;;;3526:34;27589:55:0::1;::::0;3437:2:1;3422:18;27589:55:0::1;;;;;;;27660:21;::::0;;27673:1:::1;3449:25:1::0;;;3505:2;3490:18;;3483:34;;;3533:18;;;3526:34;27660:21:0;;::::1;::::0;;;;3437:2:1;27660:21:0;;::::1;27169:520::o:0;15829:164::-;15906:46;15922:7;300:10;15945:6;15906:15;:46::i;:::-;15963:22;15969:7;15978:6;15963:5;:22::i;:::-;15829:164;;:::o;26151:207::-;13553:6;;-1:-1:-1;;;;;13553:6:0;300:10;13615:23;13607:68;;;;-1:-1:-1;;;13607:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26237:30:0;::::1;26229:76;;;::::0;-1:-1:-1;;;26229:76:0;;9713:2:1;26229:76:0::1;::::0;::::1;9695:21:1::0;9752:2;9732:18;;;9725:30;9791:34;9771:18;;;9764:62;-1:-1:-1;;;9842:18:1;;;9835:32;9884:19;;26229:76:0::1;9511:398:1::0;26229:76:0::1;26316:15;:34:::0;;-1:-1:-1;;;;;;26316:34:0::1;-1:-1:-1::0;;;;;26316:34:0;;;::::1;::::0;;;::::1;::::0;;26151:207::o;27816:135::-;13553:6;;-1:-1:-1;;;;;13553:6:0;300:10;13615:23;13607:68;;;;-1:-1:-1;;;13607:68:0;;;;;;;:::i;:::-;27908:8:::1;-1:-1:-1::0;;;;;27901:25:0::1;;27927:7;13553:6:::0;;-1:-1:-1;;;;;13553:6:0;;13480:87;27927:7:::1;27901:42;::::0;-1:-1:-1;;;;;;27901:42:0::1;::::0;;;;;;-1:-1:-1;;;;;10106:32:1;;;27901:42:0::1;::::0;::::1;10088:51:1::0;10155:18;;;10148:34;;;10061:18;;27901:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27816:135:::0;;:::o;2717:104::-;2773:13;2806:7;2799:14;;;;;:::i;27697:111::-;13553:6;;-1:-1:-1;;;;;13553:6:0;300:10;13615:23;13607:68;;;;-1:-1:-1;;;13607:68:0;;;;;;;:::i;:::-;13553:6;;27764:36:::1;::::0;-1:-1:-1;;;;;13553:6:0;;;;27764:36;::::1;;;::::0;27790:9;;27764:36:::1;::::0;;;27790:9;13553:6;27764:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;19118:410:::0;300:10;19239:4;19288:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19288:34:0;;;;;;;;;;19341:35;;;;19333:85;;;;-1:-1:-1;;;19333:85:0;;10645:2:1;19333:85:0;;;10627:21:1;10684:2;10664:18;;;10657:30;10723:34;10703:18;;;10696:62;-1:-1:-1;;;10774:18:1;;;10767:35;10819:19;;19333:85:0;10443:401:1;19333:85:0;19429:67;300:10;19452:7;19461:34;19480:15;19461:16;:34;:::i;19429:67::-;-1:-1:-1;19516:4:0;;19118:410;-1:-1:-1;;;19118:410:0:o;19536:165::-;19614:4;19631:40;19641:10;19653:9;19664:6;19631:9;:40::i;26366:518::-;13553:6;;-1:-1:-1;;;;;13553:6:0;300:10;13615:23;13607:68;;;;-1:-1:-1;;;13607:68:0;;;;;;;:::i;:::-;26492:9:::1;26482:6;:19;;26474:73;;;::::0;-1:-1:-1;;;26474:73:0;;11051:2:1;26474:73:0::1;::::0;::::1;11033:21:1::0;11090:2;11070:18;;;11063:30;11129:34;11109:18;;;11102:62;-1:-1:-1;;;11180:18:1;;;11173:39;11229:19;;26474:73:0::1;10849:405:1::0;26474:73:0::1;26577:9;26566:7;:20;;26558:75;;;::::0;-1:-1:-1;;;26558:75:0;;11461:2:1;26558:75:0::1;::::0;::::1;11443:21:1::0;11500:2;11480:18;;;11473:30;11539:34;11519:18;;;11512:62;-1:-1:-1;;;11590:18:1;;;11583:40;11640:19;;26558:75:0::1;11259:406:1::0;26558:75:0::1;26665:9;26652;:22;;26644:79;;;::::0;-1:-1:-1;;;26644:79:0;;11872:2:1;26644:79:0::1;::::0;::::1;11854:21:1::0;11911:2;11891:18;;;11884:30;11950:34;11930:18;;;11923:62;-1:-1:-1;;;12001:18:1;;;11994:42;12053:19;;26644:79:0::1;11670:408:1::0;26644:79:0::1;26757:14;3543:2:::0;26757::::1;:14;:::i;:::-;26748:23;::::0;:6;:23:::1;:::i;:::-;26734:11;:37:::0;3543:2;26807:14:::1;::::0;:2:::1;:14;:::i;:::-;26797:24;::::0;:7;:24:::1;:::i;:::-;26782:12;:39:::0;26861:14:::1;3543:2:::0;26861::::1;:14;:::i;:::-;26849:26;::::0;:9;:26:::1;:::i;:::-;26832:14;:43:::0;-1:-1:-1;;;26366:518:0:o;13805:192::-;13553:6;;-1:-1:-1;;;;;13553:6:0;300:10;13615:23;13607:68;;;;-1:-1:-1;;;13607:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13894:22:0;::::1;13886:73;;;::::0;-1:-1:-1;;;13886:73:0;;12285:2:1;13886:73:0::1;::::0;::::1;12267:21:1::0;12324:2;12304:18;;;12297:30;12363:34;12343:18;;;12336:62;-1:-1:-1;;;12414:18:1;;;12407:36;12460:19;;13886:73:0::1;12083:402:1::0;13886:73:0::1;13970:19;13980:8;13970:9;:19::i;11128:380::-:0;-1:-1:-1;;;;;11264:19:0;;11256:68;;;;-1:-1:-1;;;11256:68:0;;12692:2:1;11256:68:0;;;12674:21:1;12731:2;12711:18;;;12704:30;12770:34;12750:18;;;12743:62;-1:-1:-1;;;12821:18:1;;;12814:34;12865:19;;11256:68:0;12490:400:1;11256:68:0;-1:-1:-1;;;;;11343:21:0;;11335:68;;;;-1:-1:-1;;;11335:68:0;;13097:2:1;11335:68:0;;;13079:21:1;13136:2;13116:18;;;13109:30;13175:34;13155:18;;;13148:62;-1:-1:-1;;;13226:18:1;;;13219:32;13268:19;;11335:68:0;12895:398:1;11335:68:0;-1:-1:-1;;;;;11416:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11468:32;;1730:25:1;;;11468:32:0;;1703:18:1;11468:32:0;;;;;;;11128:380;;;:::o;19709:2939::-;19859:1;19850:6;:10;19842:64;;;;-1:-1:-1;;;19842:64:0;;13500:2:1;19842:64:0;;;13482:21:1;13539:2;13519:18;;;13512:30;13578:34;13558:18;;;13551:62;-1:-1:-1;;;13629:18:1;;;13622:39;13678:19;;19842:64:0;13298:405:1;19842:64:0;-1:-1:-1;;;;;19924:17:0;;;;;;:9;:17;;;;;;;;19923:18;:43;;;;-1:-1:-1;;;;;;19946:20:0;;;;;;:9;:20;;;;;;;;19945:21;19923:43;19919:122;;;19991:14;;-1:-1:-1;;;19991:14:0;;;;19983:46;;;;-1:-1:-1;;;19983:46:0;;13910:2:1;19983:46:0;;;13892:21:1;13949:2;13929:18;;;13922:30;-1:-1:-1;;;13968:18:1;;;13961:49;14027:18;;19983:46:0;13708:343:1;19983:46:0;20067:4;;-1:-1:-1;;;;;20057:14:0;;;20067:4;;20057:14;:39;;;;-1:-1:-1;;;;;;20076:20:0;;;;;;:9;:20;;;;;;;;20075:21;20057:39;:54;;;;-1:-1:-1;20101:10:0;;-1:-1:-1;;;20101:10:0;;;;20100:11;20057:54;20053:306;;;20146:11;;20136:6;:21;;20128:63;;;;-1:-1:-1;;;20128:63:0;;14258:2:1;20128:63:0;;;14240:21:1;14297:2;14277:18;;;14270:30;14336:31;14316:18;;;14309:59;14385:18;;20128:63:0;14056:353:1;20128:63:0;20265:14;;20255:6;20232:20;20242:9;-1:-1:-1;;;;;3890:18:0;3863:7;3890:18;;;;;;;;;;;;3789:127;20232:20;:29;;;;:::i;:::-;:47;;20206:141;;;;-1:-1:-1;;;20206:141:0;;14616:2:1;20206:141:0;;;14598:21:1;;;14635:18;;;14628:30;14694:34;14674:18;;;14667:62;14746:18;;20206:141:0;14414:356:1;20206:141:0;20399:4;;-1:-1:-1;;;;;20389:14:0;;;20399:4;;20389:14;;;;:39;;-1:-1:-1;;;;;;20408:20:0;;;;;;:9;:20;;;;;;;;20407:21;20389:39;:61;;;;-1:-1:-1;;;;;;20433:17:0;;;;;;:9;:17;;;;;;;;20432:18;20389:61;:76;;;;-1:-1:-1;20455:10:0;;-1:-1:-1;;;20455:10:0;;;;20454:11;20389:76;20371:423;;;20510:12;;20500:6;:22;;20492:65;;;;-1:-1:-1;;;20492:65:0;;14977:2:1;20492:65:0;;;14959:21:1;15016:2;14996:18;;;14989:30;15055:32;15035:18;;;15028:60;15105:18;;20492:65:0;14775:354:1;20492:65:0;20589:4;;-1:-1:-1;;;;;20576:17:0;;;20589:4;;20576:17;20572:211;;20677:14;;20667:6;20644:20;20654:9;-1:-1:-1;;;;;3890:18:0;3863:7;3890:18;;;;;;;;;;;;3789:127;20644:20;:29;;;;:::i;:::-;:47;;20614:153;;;;-1:-1:-1;;;20614:153:0;;14616:2:1;20614:153:0;;;14598:21:1;;;14635:18;;;14628:30;14694:34;14674:18;;;14667:62;14746:18;;20614:153:0;14414:356:1;20614:153:0;20806:15;20832:14;20857:11;20879:15;20905:18;20934:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;20934:25:0;21047:10;;-1:-1:-1;;;21047:10:0;;;;;:31;;-1:-1:-1;;;;;;21061:17:0;;;;;;:9;:17;;;;;;;;21047:31;:55;;;-1:-1:-1;;;;;;21082:20:0;;;;;;:9;:20;;;;;;;;21047:55;21043:847;;;21123:1;21117:7;;21043:847;;;21188:4;;-1:-1:-1;;;;;21188:4:0;;;21175:17;;;;21171:719;;21275:9;:19;21236;;:58;;21275:19;21236:58;:::i;:::-;21350:14;;21379:24;;;;;;;;21350:9;21379:24;;;;;;;;;;;;;;;21209:85;;-1:-1:-1;21209:85:0;;-1:-1:-1;21350:14:0;-1:-1:-1;21379:24:0;-1:-1:-1;21171:719:0;;;21435:4;;-1:-1:-1;;;;;21435:4:0;;;21425:14;;;;21421:469;;21518:5;:15;21483;;:50;;21518:15;21483:50;:::i;:::-;21589:10;;21614:20;;;;;;;;21589:5;21614:20;;;;;;;;;;;;;;;21456:77;;-1:-1:-1;21456:77:0;;-1:-1:-1;21589:10:0;-1:-1:-1;21614:20:0;-1:-1:-1;21421:469:0;;;21737:13;:23;21694;;:66;;21737:23;21694:66;:::i;:::-;21817:18;;21850:28;;;;;;;;21817:13;21850:28;;;;;;;;;;;;;;;21667:93;;-1:-1:-1;21667:93:0;;-1:-1:-1;21817:18:0;-1:-1:-1;21850:28:0;-1:-1:-1;21421:469:0;21928:3;21909:15;21918:6;21909;:15;:::i;:::-;21908:23;;;;:::i;:::-;21902:29;-1:-1:-1;21976:3:0;21956:16;21965:7;21956:6;:16;:::i;:::-;21955:24;;;;:::i;:::-;22093:18;;21942:37;;-1:-1:-1;;;;22093:18:0;;;;:36;;;;-1:-1:-1;22125:4:0;;-1:-1:-1;;;;;22115:14:0;;;22125:4;;22115:14;;22093:36;22089:72;;;22131:30;22139:7;22148:12;22131:7;:30::i;:::-;22203:63;22219:6;22227:9;22248:16;22254:10;22248:3;:16;:::i;:::-;22238:27;;:6;:27;:::i;:::-;22203:15;:63::i;:::-;22308:14;;22305:77;;22339:31;22351:6;22359:10;22339:11;:31::i;:::-;22396:7;;22392:249;;22468:11;;22464:164;;22500:17;22541:3;22521:16;22530:7;22521:6;:16;:::i;:::-;22520:24;;;;:::i;:::-;22500:44;;22563:49;22579:6;22595:4;22602:9;22563:15;:49::i;:::-;22481:147;22464:164;19831:2817;;;;;;19709:2939;;;:::o;9946:744::-;-1:-1:-1;;;;;10030:21:0;;10022:67;;;;-1:-1:-1;;;10022:67:0;;15558:2:1;10022:67:0;;;15540:21:1;15597:2;15577:18;;;15570:30;15636:34;15616:18;;;15609:62;-1:-1:-1;;;15687:18:1;;;15680:31;15728:19;;10022:67:0;15356:397:1;10022:67:0;-1:-1:-1;;;;;10194:18:0;;10169:22;10194:18;;;;;;;;;;;10231:24;;;;10223:71;;;;-1:-1:-1;;;10223:71:0;;15960:2:1;10223:71:0;;;15942:21:1;15999:2;15979:18;;;15972:30;16038:34;16018:18;;;16011:62;-1:-1:-1;;;16089:18:1;;;16082:32;16131:19;;10223:71:0;15758:398:1;10223:71:0;-1:-1:-1;;;;;10330:18:0;;:9;:18;;;;;;;;;;;;10351:23;;;10330:44;;10469:12;:22;;;;;;;10574:42;;1730:25:1;;;10600:6:0;;10330:18;10574:42;;1703:18:1;10574:42:0;;;;;;;27901::::1;27816:135:::0;;:::o;14005:173::-;14080:6;;;-1:-1:-1;;;;;14097:17:0;;;-1:-1:-1;;;;;;14097:17:0;;;;;;;14130:40;;14080:6;;;14097:17;14080:6;;14130:40;;14061:16;;14130:40;14050:128;14005:173;:::o;5217:419::-;-1:-1:-1;;;;;4574:18:0;;;5318:24;4574:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;5385:37:0;;5381:248;;5467:6;5447:16;:26;;5439:68;;;;-1:-1:-1;;;5439:68:0;;16363:2:1;5439:68:0;;;16345:21:1;16402:2;16382:18;;;16375:30;16441:31;16421:18;;;16414:59;16490:18;;5439:68:0;16161:353:1;5439:68:0;5551:51;5560:5;5567:7;5595:6;5576:16;:25;5551:8;:51::i;:::-;5307:329;5217:419;;;:::o;22656:1437::-;17528:10;;-1:-1:-1;;;17528:10:0;;;;17523:110;;17555:10;:17;;-1:-1:-1;;;;17555:17:0;-1:-1:-1;;;17555:17:0;;;22747:49;;22778:7:::1;22747:49;22852:4;22808:23;3890:18:::0;;;;;;;;;;;22892:23:::1;::::0;22873:42;::::1;22869:1217;;22962:1;22936:23;;:27;22932:109;;;-1:-1:-1::0;23002:23:0::1;::::0;22932:109:::1;23112:19;23134:11;:7:::0;23144:1:::1;23134:11;:::i;:::-;23112:33;;23160:32;23254:11;23214:9;:19;;;23196:15;:37;;;;:::i;:::-;23195:70;;;;:::i;:::-;23160:105:::0;-1:-1:-1;23280:14:0::1;23297:42;23160:105:::0;23297:15;:42:::1;:::i;:::-;23280:59:::0;-1:-1:-1;23381:21:0::1;23419:24;23280:59:::0;23419:16:::1;:24::i;:::-;23460:20;23483:38;23507:14:::0;23483:21:::1;:38;:::i;:::-;23460:61;;23536:19;23588:9;:19;;;23574:11;:33;;;;:::i;:::-;23558:50;::::0;:12;:50:::1;:::i;:::-;23536:72;;23623:29;23669:9;:19;;;23655:11;:33;;;;:::i;:::-;23623:65:::0;-1:-1:-1;23709:25:0;;23705:172:::1;;23800:61;23813:24;23839:21;23800:12;:61::i;:::-;23934:19:::0;;23893:20:::1;::::0;23916:15:::1;:11:::0;23930:1:::1;23916:15;:::i;:::-;:37;;;;:::i;:::-;23893:60:::0;-1:-1:-1;23972:16:0;;23968:105:::1;;24017:15;::::0;24009:48:::1;::::0;-1:-1:-1;;;;;24017:15:0::1;24044:12:::0;24009:34:::1;:48::i;:::-;22917:1169;;;;;;;;22869:1217;22734:1359;17587:1;17603:10:::0;:18;;-1:-1:-1;;;;17603:18:0;;;22656:1437;;:::o;8632:578::-;-1:-1:-1;;;;;8772:20:0;;8764:70;;;;-1:-1:-1;;;8764:70:0;;16721:2:1;8764:70:0;;;16703:21:1;16760:2;16740:18;;;16733:30;16799:34;16779:18;;;16772:62;-1:-1:-1;;;16850:18:1;;;16843:35;16895:19;;8764:70:0;16519:401:1;8764:70:0;-1:-1:-1;;;;;8853:23:0;;8845:71;;;;-1:-1:-1;;;8845:71:0;;17127:2:1;8845:71:0;;;17109:21:1;17166:2;17146:18;;;17139:30;17205:34;17185:18;;;17178:62;-1:-1:-1;;;17256:18:1;;;17249:33;17299:19;;8845:71:0;16925:399:1;8845:71:0;-1:-1:-1;;;;;8953:17:0;;8929:21;8953:17;;;;;;;;;;;8989:23;;;;8981:74;;;;-1:-1:-1;;;8981:74:0;;17531:2:1;8981:74:0;;;17513:21:1;17570:2;17550:18;;;17543:30;17609:34;17589:18;;;17582:62;-1:-1:-1;;;17660:18:1;;;17653:36;17706:19;;8981:74:0;17329:402:1;8981:74:0;9086:22;9102:6;9086:13;:22;:::i;:::-;-1:-1:-1;;;;;9066:17:0;;;:9;:17;;;;;;;;;;;:42;;;;9119:20;;;;;;;;:30;;9143:6;;9066:9;9119:30;;9143:6;;9119:30;:::i;:::-;;;;;;;;9184:9;-1:-1:-1;;;;;9167:35:0;9176:6;-1:-1:-1;;;;;9167:35:0;;9195:6;9167:35;;;;1730:25:1;;1718:2;1703:18;;1584:177;9167:35:0;;;;;;;;8753:457;8632:578;;;:::o;24101:534::-;24251:16;;;24265:1;24251:16;;;;;;;;24227:21;;24251:16;;;;;;;;;;-1:-1:-1;24251:16:0;24227:40;;24296:4;24278;24283:1;24278:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24278:23:0;;;:7;;;;;;;;;;:23;;;;24322:6;;:13;;;-1:-1:-1;;;24322:13:0;;;;:6;;;;;:11;;:13;;;;;24278:7;;24322:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24312:4;24317:1;24312:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24312:23:0;;;:7;;;;;;;;;:23;24380:6;;24348:53;;24365:4;;24380:6;24389:11;24348:8;:53::i;:::-;24440:6;;:187;;-1:-1:-1;;;24440:187:0;;-1:-1:-1;;;;;24440:6:0;;;;:57;;:187;;24512:11;;24440:6;;24554:4;;24581;;24601:15;;24440:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24156:479;24101:534;:::o;24643:500::-;24823:6;;24791:53;;24808:4;;-1:-1:-1;;;;;24823:6:0;24832:11;24791:8;:53::i;:::-;24887:6;;:248;;-1:-1:-1;;;24887:248:0;;24952:4;24887:248;;;19582:34:1;19632:18;;;19625:34;;;24887:6:0;19675:18:1;;;19668:34;;;19718:18;;;19711:34;16738:42:0;19761:19:1;;;19754:44;25109:15:0;19814:19:1;;;19807:35;-1:-1:-1;;;;;24887:6:0;;;;:22;;24918:9;;19516:19:1;;24887:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24643:500;;:::o;12923:319::-;13038:6;13013:21;:31;;13005:73;;;;-1:-1:-1;;;13005:73:0;;20366:2:1;13005:73:0;;;20348:21:1;20405:2;20385:18;;;20378:30;20444:31;20424:18;;;20417:59;20493:18;;13005:73:0;20164:353:1;13005:73:0;13092:12;13110:9;-1:-1:-1;;;;;13110:14:0;13133:6;13110:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13091:54;;;13164:7;13156:78;;;;-1:-1:-1;;;13156:78:0;;20934:2:1;13156:78:0;;;20916:21:1;20973:2;20953:18;;;20946:30;21012:34;20992:18;;;20985:62;21083:28;21063:18;;;21056:56;21129:19;;13156:78:0;20732:422:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:118::-;1301:5;1294:13;1287:21;1280:5;1277:32;1267:60;;1323:1;1320;1313:12;1338:241;1394:6;1447:2;1435:9;1426:7;1422:23;1418:32;1415:52;;;1463:1;1460;1453:12;1415:52;1502:9;1489:23;1521:28;1543:5;1521:28;:::i;:::-;1568:5;1338:241;-1:-1:-1;;;1338:241:1:o;1766:456::-;1843:6;1851;1859;1912:2;1900:9;1891:7;1887:23;1883:32;1880:52;;;1928:1;1925;1918:12;1880:52;1967:9;1954:23;1986:31;2011:5;1986:31;:::i;:::-;2036:5;-1:-1:-1;2093:2:1;2078:18;;2065:32;2106:33;2065:32;2106:33;:::i;:::-;1766:456;;2158:7;;-1:-1:-1;;;2212:2:1;2197:18;;;;2184:32;;1766:456::o;2227:248::-;2295:6;2303;2356:2;2344:9;2335:7;2331:23;2327:32;2324:52;;;2372:1;2369;2362:12;2324:52;-1:-1:-1;;2395:23:1;;;2465:2;2450:18;;;2437:32;;-1:-1:-1;2227:248:1:o;2669:388::-;2737:6;2745;2798:2;2786:9;2777:7;2773:23;2769:32;2766:52;;;2814:1;2811;2804:12;2766:52;2853:9;2840:23;2872:31;2897:5;2872:31;:::i;:::-;2922:5;-1:-1:-1;2979:2:1;2964:18;;2951:32;2992:33;2951:32;2992:33;:::i;:::-;3044:7;3034:17;;;2669:388;;;;;:::o;3062:180::-;3121:6;3174:2;3162:9;3153:7;3149:23;3145:32;3142:52;;;3190:1;3187;3180:12;3142:52;-1:-1:-1;3213:23:1;;3062:180;-1:-1:-1;3062:180:1:o;3571:247::-;3630:6;3683:2;3671:9;3662:7;3658:23;3654:32;3651:52;;;3699:1;3696;3689:12;3651:52;3738:9;3725:23;3757:31;3782:5;3757:31;:::i;4031:316::-;4108:6;4116;4124;4177:2;4165:9;4156:7;4152:23;4148:32;4145:52;;;4193:1;4190;4183:12;4145:52;-1:-1:-1;;4216:23:1;;;4286:2;4271:18;;4258:32;;-1:-1:-1;4337:2:1;4322:18;;;4309:32;;4031:316;-1:-1:-1;4031:316:1:o;4575:380::-;4654:1;4650:12;;;;4697;;;4718:61;;4772:4;4764:6;4760:17;4750:27;;4718:61;4825:2;4817:6;4814:14;4794:18;4791:38;4788:161;;4871:10;4866:3;4862:20;4859:1;4852:31;4906:4;4903:1;4896:15;4934:4;4931:1;4924:15;4788:161;;4575:380;;;:::o;4960:356::-;5162:2;5144:21;;;5181:18;;;5174:30;5240:34;5235:2;5220:18;;5213:62;5307:2;5292:18;;4960:356::o;6083:127::-;6144:10;6139:3;6135:20;6132:1;6125:31;6175:4;6172:1;6165:15;6199:4;6196:1;6189:15;6215:128;6282:9;;;6303:11;;;6300:37;;;6317:18;;:::i;6348:125::-;6413:9;;;6434:10;;;6431:36;;;6447:18;;:::i;6911:422::-;7000:1;7043:5;7000:1;7057:270;7078:7;7068:8;7065:21;7057:270;;;7137:4;7133:1;7129:6;7125:17;7119:4;7116:27;7113:53;;;7146:18;;:::i;:::-;7196:7;7186:8;7182:22;7179:55;;;7216:16;;;;7179:55;7295:22;;;;7255:15;;;;7057:270;;;7061:3;6911:422;;;;;:::o;7338:806::-;7387:5;7417:8;7407:80;;-1:-1:-1;7458:1:1;7472:5;;7407:80;7506:4;7496:76;;-1:-1:-1;7543:1:1;7557:5;;7496:76;7588:4;7606:1;7601:59;;;;7674:1;7669:130;;;;7581:218;;7601:59;7631:1;7622:10;;7645:5;;;7669:130;7706:3;7696:8;7693:17;7690:43;;;7713:18;;:::i;:::-;-1:-1:-1;;7769:1:1;7755:16;;7784:5;;7581:218;;7883:2;7873:8;7870:16;7864:3;7858:4;7855:13;7851:36;7845:2;7835:8;7832:16;7827:2;7821:4;7818:12;7814:35;7811:77;7808:159;;;-1:-1:-1;7920:19:1;;;7952:5;;7808:159;7999:34;8024:8;8018:4;7999:34;:::i;:::-;8069:6;8065:1;8061:6;8057:19;8048:7;8045:32;8042:58;;;8080:18;;:::i;:::-;8118:20;;7338:806;-1:-1:-1;;;7338:806:1:o;8149:140::-;8207:5;8236:47;8277:4;8267:8;8263:19;8257:4;8236:47;:::i;8294:168::-;8367:9;;;8398;;8415:15;;;8409:22;;8395:37;8385:71;;8436:18;;:::i;10193:245::-;10260:6;10313:2;10301:9;10292:7;10288:23;10284:32;10281:52;;;10329:1;10326;10319:12;10281:52;10361:9;10355:16;10380:28;10402:5;10380:28;:::i;15134:217::-;15174:1;15200;15190:132;;15244:10;15239:3;15235:20;15232:1;15225:31;15279:4;15276:1;15269:15;15307:4;15304:1;15297:15;15190:132;-1:-1:-1;15336:9:1;;15134:217::o;17868:127::-;17929:10;17924:3;17920:20;17917:1;17910:31;17960:4;17957:1;17950:15;17984:4;17981:1;17974:15;18000:251;18070:6;18123:2;18111:9;18102:7;18098:23;18094:32;18091:52;;;18139:1;18136;18129:12;18091:52;18171:9;18165:16;18190:31;18215:5;18190:31;:::i;18256:980::-;18518:4;18566:3;18555:9;18551:19;18597:6;18586:9;18579:25;18623:2;18661:6;18656:2;18645:9;18641:18;18634:34;18704:3;18699:2;18688:9;18684:18;18677:31;18728:6;18763;18757:13;18794:6;18786;18779:22;18832:3;18821:9;18817:19;18810:26;;18871:2;18863:6;18859:15;18845:29;;18892:1;18902:195;18916:6;18913:1;18910:13;18902:195;;;18981:13;;-1:-1:-1;;;;;18977:39:1;18965:52;;19072:15;;;;19037:12;;;;19013:1;18931:9;18902:195;;;-1:-1:-1;;;;;;;19153:32:1;;;;19148:2;19133:18;;19126:60;-1:-1:-1;;;19217:3:1;19202:19;19195:35;19114:3;18256:980;-1:-1:-1;;;18256:980:1:o;19853:306::-;19941:6;19949;19957;20010:2;19998:9;19989:7;19985:23;19981:32;19978:52;;;20026:1;20023;20016:12;19978:52;20055:9;20049:16;20039:26;;20105:2;20094:9;20090:18;20084:25;20074:35;;20149:2;20138:9;20134:18;20128:25;20118:35;;19853:306;;;;;:::o

Swarm Source

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