ETH Price: $3,917.42 (+7.22%)

Token

ERC-20: DegenDAO (DDAO)
 

Overview

Max Total Supply

888,000,000 DDAO

Holders

147

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
295,089 DDAO

Value
$0.00
0x47ba8b449407451345e4866bf4d019207f1eb1a2
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:
DegenDAO

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-21
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

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

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

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    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) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if(currentAllowance != type(uint256).max) { 
            require(
                currentAllowance >= amount,
                "ERC20: transfer amount exceeds allowance"
            );
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }
        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

contract Ownable is Context {
    address private _owner;

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

interface ILpPair {
    function sync() external;
}

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

    function WETH() external pure returns (address);

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

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

    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

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

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

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

contract DegenDAO is ERC20, Ownable {
    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address public operationsAddress;
    address public treasuryAddress;
    address public teamAddress;

    bool public swapEnabled = false;

    uint256 public buyTotalFees;
    uint256 public buyOperationsFee;
    uint256 public buyTreasuryFee;
    uint256 public buyTeamFee;

    uint256 public sellTotalFees;
    uint256 public sellOperationsFee;
    uint256 public sellTreasuryFee;
    uint256 public sellTeamFee;

    uint256 public tokensForOperations;
    uint256 public tokensForTreasury;
    uint256 public tokensForTeam;

    uint256 public tradingActiveBlock;

    /******************/

    // exlcude from fees
    mapping(address => bool) private _isExcludedFromFees;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public automatedMarketMakerPairs;

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

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedOperationsAddress(address indexed newWallet);

    event UpdatedTreasuryAddress(address indexed newWallet);

    event UpdatedTeamAddress(address indexed newWallet);

    event OwnerForcedSwapBack(uint256 timestamp);

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("DegenDAO", "DDAO") {
        address newOwner = msg.sender; // can leave alone if owner is deployer.

        // initialize router
        address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        dexRouter = IDexRouter(routerAddress);

        _approve(msg.sender, routerAddress, type(uint256).max);
        _approve(address(this), routerAddress, type(uint256).max);

        uint256 totalSupply = 888 * 1e6 * 1e18; // 888 million

        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05 %

        buyOperationsFee = 3;
        buyTreasuryFee = 3;
        buyTeamFee = 1;
        buyTotalFees =
            buyOperationsFee +
            buyTreasuryFee +
            buyTeamFee;

        sellOperationsFee = 3;
        sellTreasuryFee = 3;
        sellTeamFee = 1;
        sellTotalFees =
            sellOperationsFee +
            sellTreasuryFee +
            sellTeamFee;

        operationsAddress = 0xaECeAd12509D2c966dDdeD53fBB198DedB4124A5;
        treasuryAddress = 0x639C4Fe68Cc9DD9dA3990b78d5BAa0F5E4e00E14;
        teamAddress = 0x012683b865ED2c8dB3F4569a11BF962C40B926B0;

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(operationsAddress, true);
        excludeFromFees(treasuryAddress, true);
        excludeFromFees(teamAddress, true);
        excludeFromFees(0xd0012d64Fc164d014d973e855152DB75Cb8f5Fb2, true); // Reserves

        _createInitialSupply(address(0xdead), (totalSupply * 10) / 100); // Burn
        _createInitialSupply(newOwner, (totalSupply * 60) / 100); // LP
        _createInitialSupply(0xd0012d64Fc164d014d973e855152DB75Cb8f5Fb2, (totalSupply * 30) / 100); // Reserves

        transferOwnership(newOwner);
    }

    receive() external payable {}

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 1) / 1000,
            "Swap amount cannot be higher than 0.1% total supply."
        );
        swapTokensAtAmount = newAmount;
    }

    function toggleSwap() external onlyOwner {
        swapEnabled = !swapEnabled;
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        external
        onlyOwner
    {
        require(
            pair != lpPair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );
        _setAutomatedMarketMakerPair(pair, value);
    }

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

    function disableBuyFees() external onlyOwner {
        buyOperationsFee = 0;
        buyTreasuryFee = 0;
        buyTeamFee = 0;
        buyTotalFees = 0;
    }

    function enableBuyFees() external onlyOwner {
        buyOperationsFee = 3;
        buyTreasuryFee = 3;
        buyTeamFee = 1;
        buyTotalFees = 7;
    }

    function disableSellFees() external onlyOwner {
        sellOperationsFee = 0;
        sellTreasuryFee = 0;
        sellTeamFee = 0;
        sellTotalFees = 0;
    }

    function enableSellFees() external onlyOwner {
        sellOperationsFee = 3;
        sellTreasuryFee = 3;
        sellTeamFee = 1;
        sellTotalFees = 7;
    }

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

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

        if(tradingActiveBlock == 0) {
            super._transfer(from, to, amount);
        }
        else {
            uint256 contractTokenBalance = balanceOf(address(this));

            bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            if (
                takeFee && canSwap && swapEnabled && !swapping && automatedMarketMakerPairs[to]
            ) {
                swapping = true;
                swapBack();
                swapping = false;
            }

            uint256 fees = 0;
            // only take fees on buys/sells, do not take on wallet transfers
            if (takeFee) {
                if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                    fees = (amount * sellTotalFees) / 100;
                    tokensForOperations += (fees * sellOperationsFee) / sellTotalFees;
                    tokensForTreasury += (fees * sellTreasuryFee) / sellTotalFees;
                    tokensForTeam += (fees * sellTeamFee) / sellTotalFees;
                }
                // on buy
                else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                    fees = (amount * buyTotalFees) / 100;
                    tokensForOperations += (fees * buyOperationsFee) / buyTotalFees;
                    tokensForTreasury += (fees * buyTreasuryFee) / buyTotalFees;
                    tokensForTeam += (fees * buyTeamFee) / buyTotalFees;
                }

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

                amount -= fees;
            }

            super._transfer(from, to, amount);

        }
    }

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForOperations +
            tokensForTreasury +
            tokensForTeam;

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

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

        bool success;

        swapTokensForEth(contractBalance);

        uint256 ethBalance = address(this).balance;

        uint256 ethForTreasury = (ethBalance * tokensForTreasury) / totalTokensToSwap;
        uint256 ethForTeam = (ethBalance * tokensForTeam) / totalTokensToSwap;

        tokensForOperations = 0;
        tokensForTreasury = 0;
        tokensForTeam = 0;

        (success, ) = treasuryAddress.call{value: ethForTreasury}("");
        (success, ) = teamAddress.call{value: ethForTeam}("");
        (success, ) = operationsAddress.call{value: address(this).balance}("");
    }

    function transferForeignToken(address _token, address _to)
        external
        onlyOwner
        returns (bool _sent)
    {
        require(_token != address(0), "_token address cannot be 0");
        require(
            _token != address(this),
            "Can't withdraw native tokens while trading is active"
        );
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success, ) = address(msg.sender).call{value: address(this).balance}(
            ""
        );
    }

    function setOperationsAddress(address _operationsAddress)
        external
        onlyOwner
    {
        require(
            _operationsAddress != address(0),
            "_operationsAddress address cannot be 0"
        );
        operationsAddress = _operationsAddress;
        emit UpdatedOperationsAddress(_operationsAddress);
    }

    function setTreasuryAddress(address _treasuryAddress) external onlyOwner {
        require(
            _treasuryAddress != address(0),
            "_operationsAddress address cannot be 0"
        );
        treasuryAddress = _treasuryAddress;
        emit UpdatedTreasuryAddress(_treasuryAddress);
    }

    function setTeamAddress(address _teamAddress) external onlyOwner {
        require(_teamAddress != address(0), "_teamAddress address cannot be 0");
        teamAddress = _teamAddress;
        emit UpdatedTeamAddress(_teamAddress);
    }

    // force Swap back if slippage issues.
    function forceSwapBack() external onlyOwner {
        require(
            balanceOf(address(this)) >= swapTokensAtAmount,
            "Can only swap when token amount is at or higher than restriction"
        );
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }

    function launch(uint256 tokens, uint256 toLP, address[] calldata _wallets, uint256[] calldata _tokens) external payable onlyOwner {
        require(tradingActiveBlock == 0);
        require(msg.value >= toLP, "Insufficient funds");
        require(tokens > 0, "No LP tokens specified");
        bool purchasing = _wallets.length > 0;

        address ETH = dexRouter.WETH();

        lpPair = IDexFactory(dexRouter.factory()).createPair(ETH, address(this));

        _setAutomatedMarketMakerPair(lpPair, true);

        super._transfer(msg.sender, address(this), tokens * 1e18);

        dexRouter.addLiquidityETH{value: toLP}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp);

        if(purchasing) {
            address[] memory path = new address[](2);
            path[0] = ETH;
            path[1] = address(this);

            if(_wallets.length > 0) {
                for(uint256 i = 0; i < _wallets.length; i++) {
                    dexRouter.swapETHForExactTokens{value: address(this).balance} (
                        _tokens[i] * 1e18,
                        path,
                        _wallets[i],
                        block.timestamp
                    );
                }
            }

            dexRouter.swapExactETHForTokens{value: address(this).balance}(
            0,
            path,
            msg.sender,
            block.timestamp
            );

        }

        tradingActiveBlock = block.number;
        swapEnabled = true;
    }

    function airdropToWallets(
        address[] memory wallets,
        uint256[] memory amountsInTokens
    ) external onlyOwner {
        require(
            wallets.length == amountsInTokens.length,
            "arrays must be the same length"
        );
        require(
            wallets.length < 200,
            "Can only airdrop 200 wallets per txn due to gas limits"
        ); // allows for airdrop + launch at the same exact time, reducing delays and reducing sniper input.
        for (uint256 i = 0; i < wallets.length; i++) {
            address wallet = wallets[i];
            uint256 amount = amountsInTokens[i];
            super._transfer(msg.sender, wallet, amount);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedOperationsAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedTeamAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedTreasuryAddress","type":"event"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInTokens","type":"uint256[]"}],"name":"airdropToWallets","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"uint256","name":"toLP","type":"uint256"},{"internalType":"address[]","name":"_wallets","type":"address[]"},{"internalType":"uint256[]","name":"_tokens","type":"uint256[]"}],"name":"launch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"setOperationsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_teamAddress","type":"address"}],"name":"setTeamAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasuryAddress","type":"address"}],"name":"setTreasuryAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTeam","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTreasury","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":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","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":"treasuryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600b805460ff60a01b191690553480156200001e57600080fd5b5060405180604001604052806008815260200167446567656e44414f60c01b815250604051806040016040528060048152602001634444414f60e01b81525081600390816200006e919062000776565b5060046200007d828262000776565b5050506000620000926200031560201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062003691833981519152908290a350600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155339062000109828260001962000319565b62000118308260001962000319565b6b02de89507556d846780000006127106200013582600562000858565b62000141919062000878565b6008556003600d819055600e8190556001600f819055906200016490806200089b565b6200017091906200089b565b600c5560036011819055601281905560016013819055906200019390806200089b565b6200019f91906200089b565b601055600980546001600160a01b031990811673aecead12509d2c966ddded53fbb198dedb4124a517909155600a8054821673639c4fe68cc9dd9da3990b78d5baa0f5e4e00e14179055600b805490911673012683b865ed2c8db3f4569a11bf962c40b926b01790556200021583600162000445565b6200022230600162000445565b6200023161dead600162000445565b6009546200024a906001600160a01b0316600162000445565b600a5462000263906001600160a01b0316600162000445565b600b546200027c906001600160a01b0316600162000445565b6200029d73d0012d64fc164d014d973e855152db75cb8f5fb2600162000445565b620002c561dead6064620002b384600a62000858565b620002bf919062000878565b620004ef565b620002d9836064620002b384603c62000858565b6200030173d0012d64fc164d014d973e855152db75cb8f5fb26064620002b384601e62000858565b6200030c83620005d4565b505050620008b1565b3390565b6001600160a01b038316620003815760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620003e45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000378565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b03163314620004905760405162461bcd60e51b8152602060048201819052602482015260008051602062003671833981519152604482015260640162000378565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005475760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000378565b80600260008282546200055b91906200089b565b90915550506001600160a01b038216600090815260208190526040812080548392906200058a9084906200089b565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b031633146200061f5760405162461bcd60e51b8152602060048201819052602482015260008051602062003671833981519152604482015260640162000378565b6001600160a01b038116620006865760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000378565b6005546040516001600160a01b038084169216906000805160206200369183398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620006fc57607f821691505b6020821081036200071d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200077157600081815260208120601f850160051c810160208610156200074c5750805b601f850160051c820191505b818110156200076d5782815560010162000758565b5050505b505050565b81516001600160401b03811115620007925762000792620006d1565b620007aa81620007a38454620006e7565b8462000723565b602080601f831160018114620007e25760008415620007c95750858301515b600019600386901b1c1916600185901b1785556200076d565b600085815260208120601f198616915b828110156200081357888601518255948401946001909101908401620007f2565b5085821015620008325787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000872576200087262000842565b92915050565b6000826200089657634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000872576200087262000842565b612db080620008c16000396000f3fe6080604052600436106102cd5760003560e01c8063715018a611610175578063c5f956af116100dc578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b14610841578063f5648a4f14610861578063fb002c9714610876578063fde83a341461088c57600080fd5b8063e2f45605146107f5578063ea4cfe121461080b578063ee40166e1461082b57600080fd5b8063c5f956af1461072d578063cc2ffe7c1461074d578063d257b34f14610763578063d729715f14610783578063d85ba06314610799578063dd62ed3e146107af57600080fd5b80639c2e4ac61161012e5780639c2e4ac614610672578063a457c2d714610688578063a9059cbb146106a8578063b62496f5146106c8578063bcc178fd146106f8578063c02466681461070d57600080fd5b8063715018a6146105d5578063720efed2146105ea5780638366e79a146105ff5780638da5cb5b1461061f57806395d89b411461063d5780639a7a23d61461065257600080fd5b80633cda6664116102345780635c068a8c116101ed5780636a486a8e116101c75780636a486a8e146105525780636b2fb124146105685780636ddd17131461057e57806370a082311461059f57600080fd5b80635c068a8c146104fc5780636605bfda146105125780636690864e1461053257600080fd5b80633cda666414610466578063452ed4f11461047b578063499b83941461049b5780634f77f6c0146104bb57806351f205e4146104d15780635a139dd4146104e657600080fd5b80632307b441116102865780632307b441146103c257806323b872dd146103e257806325926c41146104025780632bf2b11b14610415578063313ce5671461042a578063395093511461044657600080fd5b806306fdde03146102d95780630758d92414610304578063095ea7b31461033c57806318160ddd1461036c5780631c75f0851461038b5780631ff8d507146103ab57600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102ee6108a2565b6040516102fb91906125e6565b60405180910390f35b34801561031057600080fd5b50600654610324906001600160a01b031681565b6040516001600160a01b0390911681526020016102fb565b34801561034857600080fd5b5061035c61035736600461264c565b610934565b60405190151581526020016102fb565b34801561037857600080fd5b506002545b6040519081526020016102fb565b34801561039757600080fd5b50600b54610324906001600160a01b031681565b3480156103b757600080fd5b506103c061094b565b005b3480156103ce57600080fd5b506103c06103dd36600461274e565b61099f565b3480156103ee57600080fd5b5061035c6103fd366004612810565b610af7565b6103c061041036600461289d565b610baa565b34801561042157600080fd5b506103c06110f3565b34801561043657600080fd5b50604051601281526020016102fb565b34801561045257600080fd5b5061035c61046136600461264c565b611133565b34801561047257600080fd5b506103c061116f565b34801561048757600080fd5b50600754610324906001600160a01b031681565b3480156104a757600080fd5b506103c06104b6366004612920565b6111af565b3480156104c757600080fd5b5061037d60115481565b3480156104dd57600080fd5b506103c0611249565b3480156104f257600080fd5b5061037d600d5481565b34801561050857600080fd5b5061037d600e5481565b34801561051e57600080fd5b506103c061052d366004612920565b611359565b34801561053e57600080fd5b506103c061054d366004612920565b6113f3565b34801561055e57600080fd5b5061037d60105481565b34801561057457600080fd5b5061037d60125481565b34801561058a57600080fd5b50600b5461035c90600160a01b900460ff1681565b3480156105ab57600080fd5b5061037d6105ba366004612920565b6001600160a01b031660009081526020819052604090205490565b3480156105e157600080fd5b506103c06114bd565b3480156105f657600080fd5b506103c0611531565b34801561060b57600080fd5b5061035c61061a366004612944565b611571565b34801561062b57600080fd5b506005546001600160a01b0316610324565b34801561064957600080fd5b506102ee611797565b34801561065e57600080fd5b506103c061066d36600461298b565b6117a6565b34801561067e57600080fd5b5061037d600f5481565b34801561069457600080fd5b5061035c6106a336600461264c565b611862565b3480156106b457600080fd5b5061035c6106c336600461264c565b6118fb565b3480156106d457600080fd5b5061035c6106e3366004612920565b60196020526000908152604090205460ff1681565b34801561070457600080fd5b506103c0611908565b34801561071957600080fd5b506103c061072836600461298b565b611948565b34801561073957600080fd5b50600a54610324906001600160a01b031681565b34801561075957600080fd5b5061037d60155481565b34801561076f57600080fd5b506103c061077e3660046129b9565b6119d1565b34801561078f57600080fd5b5061037d60135481565b3480156107a557600080fd5b5061037d600c5481565b3480156107bb57600080fd5b5061037d6107ca366004612944565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561080157600080fd5b5061037d60085481565b34801561081757600080fd5b50600954610324906001600160a01b031681565b34801561083757600080fd5b5061037d60175481565b34801561084d57600080fd5b506103c061085c366004612920565b611b1c565b34801561086d57600080fd5b506103c0611c07565b34801561088257600080fd5b5061037d60145481565b34801561089857600080fd5b5061037d60165481565b6060600380546108b1906129d2565b80601f01602080910402602001604051908101604052809291908181526020018280546108dd906129d2565b801561092a5780601f106108ff5761010080835404028352916020019161092a565b820191906000526020600020905b81548152906001019060200180831161090d57829003601f168201915b5050505050905090565b6000610941338484611c7e565b5060015b92915050565b6005546001600160a01b0316331461097e5760405162461bcd60e51b815260040161097590612a0c565b60405180910390fd5b600b805460ff60a01b198116600160a01b9182900460ff1615909102179055565b6005546001600160a01b031633146109c95760405162461bcd60e51b815260040161097590612a0c565b8051825114610a1a5760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e67746800006044820152606401610975565b60c8825110610a8a5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610975565b60005b8251811015610af2576000838281518110610aaa57610aaa612a41565b602002602001015190506000838381518110610ac857610ac8612a41565b60200260200101519050610add338383611da2565b50508080610aea90612a6d565b915050610a8d565b505050565b6000610b04848484611ef7565b6001600160a01b03841660009081526001602090815260408083203384529091529020546000198114610b9f5782811015610b925760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610975565b610b9f8533858403611c7e565b506001949350505050565b6005546001600160a01b03163314610bd45760405162461bcd60e51b815260040161097590612a0c565b60175415610be157600080fd5b84341015610c265760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b6044820152606401610975565b60008611610c6f5760405162461bcd60e51b8152602060048201526016602482015275139bc81314081d1bdad95b9cc81cdc1958da599a595960521b6044820152606401610975565b600654604080516315ab88c960e31b81529051851515926000926001600160a01b039091169163ad5c4648916004808201926020929091908290030181865afa158015610cc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce49190612a86565b9050600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5d9190612a86565b6040516364e329cb60e11b81526001600160a01b038381166004830152306024830152919091169063c9c65396906044016020604051808303816000875af1158015610dad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd19190612a86565b600780546001600160a01b0319166001600160a01b03929092169182179055610dfb906001612287565b610e173330610e128b670de0b6b3a7640000612aa3565b611da2565b6006546001600160a01b031663f305d7198830610e49816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e086901b1681526001600160a01b039092166004830152602482015260006044820181905260648201523360848201524260a482015260c40160606040518083038185885af1158015610ead573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ed29190612aba565b50505081156110d2576040805160028082526060820183526000926020830190803683370190505090508181600081518110610f1057610f10612a41565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110610f4457610f44612a41565b6001600160a01b0390921660209283029190910190910152851561104f5760005b8681101561104d576006546001600160a01b031663fb3bdb4147888885818110610f9157610f91612a41565b90506020020135670de0b6b3a7640000610fab9190612aa3565b858c8c87818110610fbe57610fbe612a41565b9050602002016020810190610fd39190612920565b426040518663ffffffff1660e01b8152600401610ff39493929190612b2c565b60006040518083038185885af1158015611011573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261103a9190810190612b61565b508061104581612a6d565b915050610f65565b505b600654604051637ff36ab560e01b81526001600160a01b0390911690637ff36ab590479061108890600090869033904290600401612b2c565b60006040518083038185885af11580156110a6573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526110cf9190810190612b61565b50505b5050436017555050600b805460ff60a01b1916600160a01b17905550505050565b6005546001600160a01b0316331461111d5760405162461bcd60e51b815260040161097590612a0c565b6003600d819055600e556001600f556007600c55565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161094191859061116a908690612bf2565b611c7e565b6005546001600160a01b031633146111995760405162461bcd60e51b815260040161097590612a0c565b6000600d819055600e819055600f819055600c55565b6005546001600160a01b031633146111d95760405162461bcd60e51b815260040161097590612a0c565b6001600160a01b0381166111ff5760405162461bcd60e51b815260040161097590612c05565b600980546001600160a01b0319166001600160a01b0383169081179091556040517f4efa56652237561d0f1fd31311aeaaa41f3b754a461545ed3cf6ced5876d298290600090a250565b6005546001600160a01b031633146112735760405162461bcd60e51b815260040161097590612a0c565b6008543060009081526020819052604090205410156112fc576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610975565b6007805460ff60a01b1916600160a01b1790556113176122db565b6007805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b031633146113835760405162461bcd60e51b815260040161097590612a0c565b6001600160a01b0381166113a95760405162461bcd60e51b815260040161097590612c05565b600a80546001600160a01b0319166001600160a01b0383169081179091556040517f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f90600090a250565b6005546001600160a01b0316331461141d5760405162461bcd60e51b815260040161097590612a0c565b6001600160a01b0381166114735760405162461bcd60e51b815260206004820181905260248201527f5f7465616d4164647265737320616464726573732063616e6e6f7420626520306044820152606401610975565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517f17d8dfa8312c8aa744fab84e6f3d67f24e7553ac1ff2be20269f12200021375690600090a250565b6005546001600160a01b031633146114e75760405162461bcd60e51b815260040161097590612a0c565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b0316331461155b5760405162461bcd60e51b815260040161097590612a0c565b6000601181905560128190556013819055601055565b6005546000906001600160a01b0316331461159e5760405162461bcd60e51b815260040161097590612a0c565b6001600160a01b0383166115f45760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610975565b306001600160a01b038416036116695760405162461bcd60e51b815260206004820152603460248201527f43616e2774207769746864726177206e617469766520746f6b656e73207768696044820152736c652074726164696e672069732061637469766560601b6064820152608401610975565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156116b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d49190612c4b565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015611727573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174b9190612c64565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6060600480546108b1906129d2565b6005546001600160a01b031633146117d05760405162461bcd60e51b815260040161097590612a0c565b6007546001600160a01b03908116908316036118545760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610975565b61185e8282612287565b5050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156118e45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610975565b6118f13385858403611c7e565b5060019392505050565b6000610941338484611ef7565b6005546001600160a01b031633146119325760405162461bcd60e51b815260040161097590612a0c565b6003601181905560125560016013556007601055565b6005546001600160a01b031633146119725760405162461bcd60e51b815260040161097590612a0c565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146119fb5760405162461bcd60e51b815260040161097590612a0c565b620186a0611a0860025490565b611a13906001612aa3565b611a1d9190612c81565b811015611a8a5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610975565b6103e8611a9660025490565b611aa1906001612aa3565b611aab9190612c81565b811115611b175760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610975565b600855565b6005546001600160a01b03163314611b465760405162461bcd60e51b815260040161097590612a0c565b6001600160a01b038116611bab5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610975565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611c315760405162461bcd60e51b815260040161097590612a0c565b604051600090339047908381818185875af1925050503d8060008114611c73576040519150601f19603f3d011682016040523d82523d6000602084013e611c78565b606091505b50505050565b6001600160a01b038316611ce05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610975565b6001600160a01b038216611d415760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610975565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611dc85760405162461bcd60e51b815260040161097590612ca3565b6001600160a01b038216611dee5760405162461bcd60e51b815260040161097590612ce8565b6001600160a01b03831660009081526020819052604090205481811015611e665760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610975565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611e9d908490612bf2565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ee991815260200190565b60405180910390a350505050565b6001600160a01b038316611f1d5760405162461bcd60e51b815260040161097590612ca3565b6001600160a01b038216611f435760405162461bcd60e51b815260040161097590612ce8565b60008111611f935760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610975565b601754600003611fa857610af2838383611da2565b30600090815260208181526040808320546008546001600160a01b03881685526018909352922054908210159060019060ff1680611ffe57506001600160a01b03851660009081526018602052604090205460ff165b15612007575060005b8080156120115750815b80156120265750600b54600160a01b900460ff165b801561203c5750600754600160a01b900460ff16155b801561206057506001600160a01b03851660009081526019602052604090205460ff165b1561208e576007805460ff60a01b1916600160a01b1790556120806122db565b6007805460ff60a01b191690555b60008115612273576001600160a01b03861660009081526019602052604090205460ff1680156120c057506000601054115b15612178576064601054866120d59190612aa3565b6120df9190612c81565b9050601054601154826120f29190612aa3565b6120fc9190612c81565b6014600082825461210d9190612bf2565b90915550506010546012546121229083612aa3565b61212c9190612c81565b6015600082825461213d9190612bf2565b90915550506010546013546121529083612aa3565b61215c9190612c81565b6016600082825461216d9190612bf2565b909155506122559050565b6001600160a01b03871660009081526019602052604090205460ff1680156121a257506000600c54115b15612255576064600c54866121b79190612aa3565b6121c19190612c81565b9050600c54600d54826121d49190612aa3565b6121de9190612c81565b601460008282546121ef9190612bf2565b9091555050600c54600e546122049083612aa3565b61220e9190612c81565b6015600082825461221f9190612bf2565b9091555050600c54600f546122349083612aa3565b61223e9190612c81565b6016600082825461224f9190612bf2565b90915550505b801561226657612266873083611da2565b6122708186612d2b565b94505b61227e878787611da2565b50505050505050565b6001600160a01b038216600081815260196020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b30600090815260208190526040812054905060006016546015546014546123029190612bf2565b61230c9190612bf2565b9050811580612319575080155b15612322575050565b60085461233090600a612aa3565b8211156123485760085461234590600a612aa3565b91505b6000612353836124a5565b601554479060009084906123679084612aa3565b6123719190612c81565b9050600084601654846123849190612aa3565b61238e9190612c81565b6000601481905560158190556016819055600a546040519293506001600160a01b031691849181818185875af1925050503d80600081146123eb576040519150601f19603f3d011682016040523d82523d6000602084013e6123f0565b606091505b5050600b546040519195506001600160a01b0316908290600081818185875af1925050503d8060008114612440576040519150601f19603f3d011682016040523d82523d6000602084013e612445565b606091505b50506009546040519195506001600160a01b0316904790600081818185875af1925050503d8060008114612495576040519150601f19603f3d011682016040523d82523d6000602084013e61249a565b606091505b505050505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106124da576124da612a41565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612533573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125579190612a86565b8160018151811061256a5761256a612a41565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b815291169063791ac947906125b0908590600090869030904290600401612d3e565b600060405180830381600087803b1580156125ca57600080fd5b505af11580156125de573d6000803e3d6000fd5b505050505050565b600060208083528351808285015260005b81811015612613578581018301518582016040015282016125f7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461264957600080fd5b50565b6000806040838503121561265f57600080fd5b823561266a81612634565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156126b7576126b7612678565b604052919050565b600067ffffffffffffffff8211156126d9576126d9612678565b5060051b60200190565b600082601f8301126126f457600080fd5b81356020612709612704836126bf565b61268e565b82815260059290921b8401810191818101908684111561272857600080fd5b8286015b84811015612743578035835291830191830161272c565b509695505050505050565b6000806040838503121561276157600080fd5b823567ffffffffffffffff8082111561277957600080fd5b818501915085601f83011261278d57600080fd5b8135602061279d612704836126bf565b82815260059290921b840181019181810190898411156127bc57600080fd5b948201945b838610156127e35785356127d481612634565b825294820194908201906127c1565b965050860135925050808211156127f957600080fd5b50612806858286016126e3565b9150509250929050565b60008060006060848603121561282557600080fd5b833561283081612634565b9250602084013561284081612634565b929592945050506040919091013590565b60008083601f84011261286357600080fd5b50813567ffffffffffffffff81111561287b57600080fd5b6020830191508360208260051b850101111561289657600080fd5b9250929050565b600080600080600080608087890312156128b657600080fd5b8635955060208701359450604087013567ffffffffffffffff808211156128dc57600080fd5b6128e88a838b01612851565b9096509450606089013591508082111561290157600080fd5b5061290e89828a01612851565b979a9699509497509295939492505050565b60006020828403121561293257600080fd5b813561293d81612634565b9392505050565b6000806040838503121561295757600080fd5b823561296281612634565b9150602083013561297281612634565b809150509250929050565b801515811461264957600080fd5b6000806040838503121561299e57600080fd5b82356129a981612634565b915060208301356129728161297d565b6000602082840312156129cb57600080fd5b5035919050565b600181811c908216806129e657607f821691505b602082108103612a0657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612a7f57612a7f612a57565b5060010190565b600060208284031215612a9857600080fd5b815161293d81612634565b808202811582820484141761094557610945612a57565b600080600060608486031215612acf57600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015612b215781516001600160a01b031687529582019590820190600101612afc565b509495945050505050565b848152608060208201526000612b456080830186612ae8565b6001600160a01b03949094166040830152506060015292915050565b60006020808385031215612b7457600080fd5b825167ffffffffffffffff811115612b8b57600080fd5b8301601f81018513612b9c57600080fd5b8051612baa612704826126bf565b81815260059190911b82018301908381019087831115612bc957600080fd5b928401925b82841015612be757835182529284019290840190612bce565b979650505050505050565b8082018082111561094557610945612a57565b60208082526026908201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60408201526507420626520360d41b606082015260800190565b600060208284031215612c5d57600080fd5b5051919050565b600060208284031215612c7657600080fd5b815161293d8161297d565b600082612c9e57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561094557610945612a57565b85815284602082015260a060408201526000612d5d60a0830186612ae8565b6001600160a01b039490941660608301525060800152939250505056fea26469706673582212201dc34790e667bfef956d91b5915619f35da15ce482ab9f0a8ef725393154b2d364736f6c634300081100334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x6080604052600436106102cd5760003560e01c8063715018a611610175578063c5f956af116100dc578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b14610841578063f5648a4f14610861578063fb002c9714610876578063fde83a341461088c57600080fd5b8063e2f45605146107f5578063ea4cfe121461080b578063ee40166e1461082b57600080fd5b8063c5f956af1461072d578063cc2ffe7c1461074d578063d257b34f14610763578063d729715f14610783578063d85ba06314610799578063dd62ed3e146107af57600080fd5b80639c2e4ac61161012e5780639c2e4ac614610672578063a457c2d714610688578063a9059cbb146106a8578063b62496f5146106c8578063bcc178fd146106f8578063c02466681461070d57600080fd5b8063715018a6146105d5578063720efed2146105ea5780638366e79a146105ff5780638da5cb5b1461061f57806395d89b411461063d5780639a7a23d61461065257600080fd5b80633cda6664116102345780635c068a8c116101ed5780636a486a8e116101c75780636a486a8e146105525780636b2fb124146105685780636ddd17131461057e57806370a082311461059f57600080fd5b80635c068a8c146104fc5780636605bfda146105125780636690864e1461053257600080fd5b80633cda666414610466578063452ed4f11461047b578063499b83941461049b5780634f77f6c0146104bb57806351f205e4146104d15780635a139dd4146104e657600080fd5b80632307b441116102865780632307b441146103c257806323b872dd146103e257806325926c41146104025780632bf2b11b14610415578063313ce5671461042a578063395093511461044657600080fd5b806306fdde03146102d95780630758d92414610304578063095ea7b31461033c57806318160ddd1461036c5780631c75f0851461038b5780631ff8d507146103ab57600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102ee6108a2565b6040516102fb91906125e6565b60405180910390f35b34801561031057600080fd5b50600654610324906001600160a01b031681565b6040516001600160a01b0390911681526020016102fb565b34801561034857600080fd5b5061035c61035736600461264c565b610934565b60405190151581526020016102fb565b34801561037857600080fd5b506002545b6040519081526020016102fb565b34801561039757600080fd5b50600b54610324906001600160a01b031681565b3480156103b757600080fd5b506103c061094b565b005b3480156103ce57600080fd5b506103c06103dd36600461274e565b61099f565b3480156103ee57600080fd5b5061035c6103fd366004612810565b610af7565b6103c061041036600461289d565b610baa565b34801561042157600080fd5b506103c06110f3565b34801561043657600080fd5b50604051601281526020016102fb565b34801561045257600080fd5b5061035c61046136600461264c565b611133565b34801561047257600080fd5b506103c061116f565b34801561048757600080fd5b50600754610324906001600160a01b031681565b3480156104a757600080fd5b506103c06104b6366004612920565b6111af565b3480156104c757600080fd5b5061037d60115481565b3480156104dd57600080fd5b506103c0611249565b3480156104f257600080fd5b5061037d600d5481565b34801561050857600080fd5b5061037d600e5481565b34801561051e57600080fd5b506103c061052d366004612920565b611359565b34801561053e57600080fd5b506103c061054d366004612920565b6113f3565b34801561055e57600080fd5b5061037d60105481565b34801561057457600080fd5b5061037d60125481565b34801561058a57600080fd5b50600b5461035c90600160a01b900460ff1681565b3480156105ab57600080fd5b5061037d6105ba366004612920565b6001600160a01b031660009081526020819052604090205490565b3480156105e157600080fd5b506103c06114bd565b3480156105f657600080fd5b506103c0611531565b34801561060b57600080fd5b5061035c61061a366004612944565b611571565b34801561062b57600080fd5b506005546001600160a01b0316610324565b34801561064957600080fd5b506102ee611797565b34801561065e57600080fd5b506103c061066d36600461298b565b6117a6565b34801561067e57600080fd5b5061037d600f5481565b34801561069457600080fd5b5061035c6106a336600461264c565b611862565b3480156106b457600080fd5b5061035c6106c336600461264c565b6118fb565b3480156106d457600080fd5b5061035c6106e3366004612920565b60196020526000908152604090205460ff1681565b34801561070457600080fd5b506103c0611908565b34801561071957600080fd5b506103c061072836600461298b565b611948565b34801561073957600080fd5b50600a54610324906001600160a01b031681565b34801561075957600080fd5b5061037d60155481565b34801561076f57600080fd5b506103c061077e3660046129b9565b6119d1565b34801561078f57600080fd5b5061037d60135481565b3480156107a557600080fd5b5061037d600c5481565b3480156107bb57600080fd5b5061037d6107ca366004612944565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561080157600080fd5b5061037d60085481565b34801561081757600080fd5b50600954610324906001600160a01b031681565b34801561083757600080fd5b5061037d60175481565b34801561084d57600080fd5b506103c061085c366004612920565b611b1c565b34801561086d57600080fd5b506103c0611c07565b34801561088257600080fd5b5061037d60145481565b34801561089857600080fd5b5061037d60165481565b6060600380546108b1906129d2565b80601f01602080910402602001604051908101604052809291908181526020018280546108dd906129d2565b801561092a5780601f106108ff5761010080835404028352916020019161092a565b820191906000526020600020905b81548152906001019060200180831161090d57829003601f168201915b5050505050905090565b6000610941338484611c7e565b5060015b92915050565b6005546001600160a01b0316331461097e5760405162461bcd60e51b815260040161097590612a0c565b60405180910390fd5b600b805460ff60a01b198116600160a01b9182900460ff1615909102179055565b6005546001600160a01b031633146109c95760405162461bcd60e51b815260040161097590612a0c565b8051825114610a1a5760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e67746800006044820152606401610975565b60c8825110610a8a5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610975565b60005b8251811015610af2576000838281518110610aaa57610aaa612a41565b602002602001015190506000838381518110610ac857610ac8612a41565b60200260200101519050610add338383611da2565b50508080610aea90612a6d565b915050610a8d565b505050565b6000610b04848484611ef7565b6001600160a01b03841660009081526001602090815260408083203384529091529020546000198114610b9f5782811015610b925760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610975565b610b9f8533858403611c7e565b506001949350505050565b6005546001600160a01b03163314610bd45760405162461bcd60e51b815260040161097590612a0c565b60175415610be157600080fd5b84341015610c265760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b6044820152606401610975565b60008611610c6f5760405162461bcd60e51b8152602060048201526016602482015275139bc81314081d1bdad95b9cc81cdc1958da599a595960521b6044820152606401610975565b600654604080516315ab88c960e31b81529051851515926000926001600160a01b039091169163ad5c4648916004808201926020929091908290030181865afa158015610cc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce49190612a86565b9050600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5d9190612a86565b6040516364e329cb60e11b81526001600160a01b038381166004830152306024830152919091169063c9c65396906044016020604051808303816000875af1158015610dad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd19190612a86565b600780546001600160a01b0319166001600160a01b03929092169182179055610dfb906001612287565b610e173330610e128b670de0b6b3a7640000612aa3565b611da2565b6006546001600160a01b031663f305d7198830610e49816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e086901b1681526001600160a01b039092166004830152602482015260006044820181905260648201523360848201524260a482015260c40160606040518083038185885af1158015610ead573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ed29190612aba565b50505081156110d2576040805160028082526060820183526000926020830190803683370190505090508181600081518110610f1057610f10612a41565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110610f4457610f44612a41565b6001600160a01b0390921660209283029190910190910152851561104f5760005b8681101561104d576006546001600160a01b031663fb3bdb4147888885818110610f9157610f91612a41565b90506020020135670de0b6b3a7640000610fab9190612aa3565b858c8c87818110610fbe57610fbe612a41565b9050602002016020810190610fd39190612920565b426040518663ffffffff1660e01b8152600401610ff39493929190612b2c565b60006040518083038185885af1158015611011573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261103a9190810190612b61565b508061104581612a6d565b915050610f65565b505b600654604051637ff36ab560e01b81526001600160a01b0390911690637ff36ab590479061108890600090869033904290600401612b2c565b60006040518083038185885af11580156110a6573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526110cf9190810190612b61565b50505b5050436017555050600b805460ff60a01b1916600160a01b17905550505050565b6005546001600160a01b0316331461111d5760405162461bcd60e51b815260040161097590612a0c565b6003600d819055600e556001600f556007600c55565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161094191859061116a908690612bf2565b611c7e565b6005546001600160a01b031633146111995760405162461bcd60e51b815260040161097590612a0c565b6000600d819055600e819055600f819055600c55565b6005546001600160a01b031633146111d95760405162461bcd60e51b815260040161097590612a0c565b6001600160a01b0381166111ff5760405162461bcd60e51b815260040161097590612c05565b600980546001600160a01b0319166001600160a01b0383169081179091556040517f4efa56652237561d0f1fd31311aeaaa41f3b754a461545ed3cf6ced5876d298290600090a250565b6005546001600160a01b031633146112735760405162461bcd60e51b815260040161097590612a0c565b6008543060009081526020819052604090205410156112fc576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610975565b6007805460ff60a01b1916600160a01b1790556113176122db565b6007805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b031633146113835760405162461bcd60e51b815260040161097590612a0c565b6001600160a01b0381166113a95760405162461bcd60e51b815260040161097590612c05565b600a80546001600160a01b0319166001600160a01b0383169081179091556040517f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f90600090a250565b6005546001600160a01b0316331461141d5760405162461bcd60e51b815260040161097590612a0c565b6001600160a01b0381166114735760405162461bcd60e51b815260206004820181905260248201527f5f7465616d4164647265737320616464726573732063616e6e6f7420626520306044820152606401610975565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517f17d8dfa8312c8aa744fab84e6f3d67f24e7553ac1ff2be20269f12200021375690600090a250565b6005546001600160a01b031633146114e75760405162461bcd60e51b815260040161097590612a0c565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b0316331461155b5760405162461bcd60e51b815260040161097590612a0c565b6000601181905560128190556013819055601055565b6005546000906001600160a01b0316331461159e5760405162461bcd60e51b815260040161097590612a0c565b6001600160a01b0383166115f45760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610975565b306001600160a01b038416036116695760405162461bcd60e51b815260206004820152603460248201527f43616e2774207769746864726177206e617469766520746f6b656e73207768696044820152736c652074726164696e672069732061637469766560601b6064820152608401610975565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156116b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d49190612c4b565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015611727573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174b9190612c64565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6060600480546108b1906129d2565b6005546001600160a01b031633146117d05760405162461bcd60e51b815260040161097590612a0c565b6007546001600160a01b03908116908316036118545760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610975565b61185e8282612287565b5050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156118e45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610975565b6118f13385858403611c7e565b5060019392505050565b6000610941338484611ef7565b6005546001600160a01b031633146119325760405162461bcd60e51b815260040161097590612a0c565b6003601181905560125560016013556007601055565b6005546001600160a01b031633146119725760405162461bcd60e51b815260040161097590612a0c565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146119fb5760405162461bcd60e51b815260040161097590612a0c565b620186a0611a0860025490565b611a13906001612aa3565b611a1d9190612c81565b811015611a8a5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610975565b6103e8611a9660025490565b611aa1906001612aa3565b611aab9190612c81565b811115611b175760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610975565b600855565b6005546001600160a01b03163314611b465760405162461bcd60e51b815260040161097590612a0c565b6001600160a01b038116611bab5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610975565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611c315760405162461bcd60e51b815260040161097590612a0c565b604051600090339047908381818185875af1925050503d8060008114611c73576040519150601f19603f3d011682016040523d82523d6000602084013e611c78565b606091505b50505050565b6001600160a01b038316611ce05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610975565b6001600160a01b038216611d415760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610975565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611dc85760405162461bcd60e51b815260040161097590612ca3565b6001600160a01b038216611dee5760405162461bcd60e51b815260040161097590612ce8565b6001600160a01b03831660009081526020819052604090205481811015611e665760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610975565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611e9d908490612bf2565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ee991815260200190565b60405180910390a350505050565b6001600160a01b038316611f1d5760405162461bcd60e51b815260040161097590612ca3565b6001600160a01b038216611f435760405162461bcd60e51b815260040161097590612ce8565b60008111611f935760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610975565b601754600003611fa857610af2838383611da2565b30600090815260208181526040808320546008546001600160a01b03881685526018909352922054908210159060019060ff1680611ffe57506001600160a01b03851660009081526018602052604090205460ff165b15612007575060005b8080156120115750815b80156120265750600b54600160a01b900460ff165b801561203c5750600754600160a01b900460ff16155b801561206057506001600160a01b03851660009081526019602052604090205460ff165b1561208e576007805460ff60a01b1916600160a01b1790556120806122db565b6007805460ff60a01b191690555b60008115612273576001600160a01b03861660009081526019602052604090205460ff1680156120c057506000601054115b15612178576064601054866120d59190612aa3565b6120df9190612c81565b9050601054601154826120f29190612aa3565b6120fc9190612c81565b6014600082825461210d9190612bf2565b90915550506010546012546121229083612aa3565b61212c9190612c81565b6015600082825461213d9190612bf2565b90915550506010546013546121529083612aa3565b61215c9190612c81565b6016600082825461216d9190612bf2565b909155506122559050565b6001600160a01b03871660009081526019602052604090205460ff1680156121a257506000600c54115b15612255576064600c54866121b79190612aa3565b6121c19190612c81565b9050600c54600d54826121d49190612aa3565b6121de9190612c81565b601460008282546121ef9190612bf2565b9091555050600c54600e546122049083612aa3565b61220e9190612c81565b6015600082825461221f9190612bf2565b9091555050600c54600f546122349083612aa3565b61223e9190612c81565b6016600082825461224f9190612bf2565b90915550505b801561226657612266873083611da2565b6122708186612d2b565b94505b61227e878787611da2565b50505050505050565b6001600160a01b038216600081815260196020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b30600090815260208190526040812054905060006016546015546014546123029190612bf2565b61230c9190612bf2565b9050811580612319575080155b15612322575050565b60085461233090600a612aa3565b8211156123485760085461234590600a612aa3565b91505b6000612353836124a5565b601554479060009084906123679084612aa3565b6123719190612c81565b9050600084601654846123849190612aa3565b61238e9190612c81565b6000601481905560158190556016819055600a546040519293506001600160a01b031691849181818185875af1925050503d80600081146123eb576040519150601f19603f3d011682016040523d82523d6000602084013e6123f0565b606091505b5050600b546040519195506001600160a01b0316908290600081818185875af1925050503d8060008114612440576040519150601f19603f3d011682016040523d82523d6000602084013e612445565b606091505b50506009546040519195506001600160a01b0316904790600081818185875af1925050503d8060008114612495576040519150601f19603f3d011682016040523d82523d6000602084013e61249a565b606091505b505050505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106124da576124da612a41565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612533573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125579190612a86565b8160018151811061256a5761256a612a41565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b815291169063791ac947906125b0908590600090869030904290600401612d3e565b600060405180830381600087803b1580156125ca57600080fd5b505af11580156125de573d6000803e3d6000fd5b505050505050565b600060208083528351808285015260005b81811015612613578581018301518582016040015282016125f7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461264957600080fd5b50565b6000806040838503121561265f57600080fd5b823561266a81612634565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156126b7576126b7612678565b604052919050565b600067ffffffffffffffff8211156126d9576126d9612678565b5060051b60200190565b600082601f8301126126f457600080fd5b81356020612709612704836126bf565b61268e565b82815260059290921b8401810191818101908684111561272857600080fd5b8286015b84811015612743578035835291830191830161272c565b509695505050505050565b6000806040838503121561276157600080fd5b823567ffffffffffffffff8082111561277957600080fd5b818501915085601f83011261278d57600080fd5b8135602061279d612704836126bf565b82815260059290921b840181019181810190898411156127bc57600080fd5b948201945b838610156127e35785356127d481612634565b825294820194908201906127c1565b965050860135925050808211156127f957600080fd5b50612806858286016126e3565b9150509250929050565b60008060006060848603121561282557600080fd5b833561283081612634565b9250602084013561284081612634565b929592945050506040919091013590565b60008083601f84011261286357600080fd5b50813567ffffffffffffffff81111561287b57600080fd5b6020830191508360208260051b850101111561289657600080fd5b9250929050565b600080600080600080608087890312156128b657600080fd5b8635955060208701359450604087013567ffffffffffffffff808211156128dc57600080fd5b6128e88a838b01612851565b9096509450606089013591508082111561290157600080fd5b5061290e89828a01612851565b979a9699509497509295939492505050565b60006020828403121561293257600080fd5b813561293d81612634565b9392505050565b6000806040838503121561295757600080fd5b823561296281612634565b9150602083013561297281612634565b809150509250929050565b801515811461264957600080fd5b6000806040838503121561299e57600080fd5b82356129a981612634565b915060208301356129728161297d565b6000602082840312156129cb57600080fd5b5035919050565b600181811c908216806129e657607f821691505b602082108103612a0657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612a7f57612a7f612a57565b5060010190565b600060208284031215612a9857600080fd5b815161293d81612634565b808202811582820484141761094557610945612a57565b600080600060608486031215612acf57600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015612b215781516001600160a01b031687529582019590820190600101612afc565b509495945050505050565b848152608060208201526000612b456080830186612ae8565b6001600160a01b03949094166040830152506060015292915050565b60006020808385031215612b7457600080fd5b825167ffffffffffffffff811115612b8b57600080fd5b8301601f81018513612b9c57600080fd5b8051612baa612704826126bf565b81815260059190911b82018301908381019087831115612bc957600080fd5b928401925b82841015612be757835182529284019290840190612bce565b979650505050505050565b8082018082111561094557610945612a57565b60208082526026908201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60408201526507420626520360d41b606082015260800190565b600060208284031215612c5d57600080fd5b5051919050565b600060208284031215612c7657600080fd5b815161293d8161297d565b600082612c9e57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561094557610945612a57565b85815284602082015260a060408201526000612d5d60a0830186612ae8565b6001600160a01b039490941660608301525060800152939250505056fea26469706673582212201dc34790e667bfef956d91b5915619f35da15ce482ab9f0a8ef725393154b2d364736f6c63430008110033

Deployed Bytecode Sourcemap

10753:13729:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4025:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10796:27;;;;;;;;;;-1:-1:-1;10796:27:0;;;;-1:-1:-1;;;;;10796:27:0;;;;;;-1:-1:-1;;;;;749:32:1;;;731:51;;719:2;704:18;10796:27:0;567:221:1;5080:210:0;;;;;;;;;;-1:-1:-1;5080:210:0;;;;;:::i;:::-;;:::i;:::-;;;1414:14:1;;1407:22;1389:41;;1377:2;1362:18;5080:210:0;1249:187:1;4346:108:0;;;;;;;;;;-1:-1:-1;4434:12:0;;4346:108;;;1587:25:1;;;1575:2;1560:18;4346:108:0;1441:177:1;11006:26:0;;;;;;;;;;-1:-1:-1;11006:26:0;;;;-1:-1:-1;;;;;11006:26:0;;;14721:86;;;;;;;;;;;;;:::i;:::-;;23760:719;;;;;;;;;;-1:-1:-1;23760:719:0;;;;;:::i;:::-;;:::i;5298:620::-;;;;;;;;;;-1:-1:-1;5298:620:0;;;;;:::i;:::-;;:::i;22211:1541::-;;;;;;:::i;:::-;;:::i;15487:164::-;;;;;;;;;;;;;:::i;4245:93::-;;;;;;;;;;-1:-1:-1;4245:93:0;;4328:2;6208:36:1;;6196:2;6181:18;4245:93:0;6066:184:1;5926:297:0;;;;;;;;;;-1:-1:-1;5926:297:0;;;;;:::i;:::-;;:::i;15314:165::-;;;;;;;;;;;;;:::i;10830:21::-;;;;;;;;;;-1:-1:-1;10830:21:0;;;;-1:-1:-1;;;;;10830:21:0;;;20887:348;;;;;;;;;;-1:-1:-1;20887:348:0;;;;;:::i;:::-;;:::i;11258:32::-;;;;;;;;;;;;;;;;21854:349;;;;;;;;;;;;;:::i;11115:31::-;;;;;;;;;;;;;;;;11153:29;;;;;;;;;;;;;;;;21243:311;;;;;;;;;;-1:-1:-1;21243:311:0;;;;;:::i;:::-;;:::i;21562:240::-;;;;;;;;;;-1:-1:-1;21562:240:0;;;;;:::i;:::-;;:::i;11223:28::-;;;;;;;;;;;;;;;;11297:30;;;;;;;;;;;;;;;;11041:31;;;;;;;;;;-1:-1:-1;11041:31:0;;;;-1:-1:-1;;;11041:31:0;;;;;;4462:177;;;;;;;;;;-1:-1:-1;4462:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;4613:18:0;4581:7;4613:18;;;;;;;;;;;;4462:177;8647:150;;;;;;;;;;;;;:::i;15659:170::-;;;;;;;;;;;;;:::i;20075:549::-;;;;;;;;;;-1:-1:-1;20075:549:0;;;;;:::i;:::-;;:::i;8433:79::-;;;;;;;;;;-1:-1:-1;8498:6:0;;-1:-1:-1;;;;;8498:6:0;8433:79;;4133:104;;;;;;;;;;;;;:::i;14815:297::-;;;;;;;;;;-1:-1:-1;14815:297:0;;;;;:::i;:::-;;:::i;11189:25::-;;;;;;;;;;;;;;;;6231:482;;;;;;;;;;-1:-1:-1;6231:482:0;;;;;:::i;:::-;;:::i;4647:216::-;;;;;;;;;;-1:-1:-1;4647:216:0;;;;;:::i;:::-;;:::i;11792:57::-;;;;;;;;;;-1:-1:-1;11792:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15837:169;;;;;;;;;;;;;:::i;16014:182::-;;;;;;;;;;-1:-1:-1;16014:182:0;;;;;:::i;:::-;;:::i;10969:30::-;;;;;;;;;;-1:-1:-1;10969:30:0;;;;-1:-1:-1;;;;;10969:30:0;;;11410:32;;;;;;;;;;;;;;;;14285:428;;;;;;;;;;-1:-1:-1;14285:428:0;;;;;:::i;:::-;;:::i;11334:26::-;;;;;;;;;;;;;;;;11081:27;;;;;;;;;;;;;;;;4871:201;;;;;;;;;;-1:-1:-1;4871:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;5037:18:0;;;5005:7;5037:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4871:201;10888:33;;;;;;;;;;;;;;;;10930:32;;;;;;;;;;-1:-1:-1;10930:32:0;;;;-1:-1:-1;;;;;10930:32:0;;;11486:33;;;;;;;;;;;;;;;;8805:281;;;;;;;;;;-1:-1:-1;8805:281:0;;;;;:::i;:::-;;:::i;20694:185::-;;;;;;;;;;;;;:::i;11369:34::-;;;;;;;;;;;;;;;;11449:28;;;;;;;;;;;;;;;;4025:100;4079:13;4112:5;4105:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4025:100;:::o;5080:210::-;5199:4;5221:39;175:10;5244:7;5253:6;5221:8;:39::i;:::-;-1:-1:-1;5278:4:0;5080:210;;;;;:::o;14721:86::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;;;;;;;;;14788:11:::1;::::0;;-1:-1:-1;;;;14773:26:0;::::1;-1:-1:-1::0;;;14788:11:0;;;::::1;;;14787:12;14773:26:::0;;::::1;;::::0;;14721:86::o;23760:719::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;23941:15:::1;:22;23923:7;:14;:40;23901:120;;;::::0;-1:-1:-1;;;23901:120:0;;8543:2:1;23901:120:0::1;::::0;::::1;8525:21:1::0;8582:2;8562:18;;;8555:30;8621:32;8601:18;;;8594:60;8671:18;;23901:120:0::1;8341:354:1::0;23901:120:0::1;24071:3;24054:7;:14;:20;24032:124;;;::::0;-1:-1:-1;;;24032:124:0;;8902:2:1;24032:124:0::1;::::0;::::1;8884:21:1::0;8941:2;8921:18;;;8914:30;8980:34;8960:18;;;8953:62;-1:-1:-1;;;9031:18:1;;;9024:52;9093:19;;24032:124:0::1;8700:418:1::0;24032:124:0::1;24270:9;24265:207;24289:7;:14;24285:1;:18;24265:207;;;24325:14;24342:7;24350:1;24342:10;;;;;;;;:::i;:::-;;;;;;;24325:27;;24367:14;24384:15;24400:1;24384:18;;;;;;;;:::i;:::-;;;;;;;24367:35;;24417:43;24433:10;24445:6;24453;24417:15;:43::i;:::-;24310:162;;24305:3;;;;;:::i;:::-;;;;24265:207;;;;23760:719:::0;;:::o;5298:620::-;5438:4;5455:36;5465:6;5473:9;5484:6;5455:9;:36::i;:::-;-1:-1:-1;;;;;5531:19:0;;5504:24;5531:19;;;:11;:19;;;;;;;;175:10;5531:33;;;;;;;;-1:-1:-1;;5578:37:0;;5575:314;;5679:6;5659:16;:26;;5633:128;;;;-1:-1:-1;;;5633:128:0;;9729:2:1;5633:128:0;;;9711:21:1;9768:2;9748:18;;;9741:30;9807:34;9787:18;;;9780:62;-1:-1:-1;;;9858:18:1;;;9851:38;9906:19;;5633:128:0;9527:404:1;5633:128:0;5805:57;5814:6;175:10;5855:6;5836:16;:25;5805:8;:57::i;:::-;-1:-1:-1;5906:4:0;;5298:620;-1:-1:-1;;;;5298:620:0:o;22211:1541::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;22360:18:::1;::::0;:23;22352:32:::1;;;::::0;::::1;;22416:4;22403:9;:17;;22395:48;;;::::0;-1:-1:-1;;;22395:48:0;;10138:2:1;22395:48:0::1;::::0;::::1;10120:21:1::0;10177:2;10157:18;;;10150:30;-1:-1:-1;;;10196:18:1;;;10189:48;10254:18;;22395:48:0::1;9936:342:1::0;22395:48:0::1;22471:1;22462:6;:10;22454:45;;;::::0;-1:-1:-1;;;22454:45:0;;10485:2:1;22454:45:0::1;::::0;::::1;10467:21:1::0;10524:2;10504:18;;;10497:30;-1:-1:-1;;;10543:18:1;;;10536:52;10605:18;;22454:45:0::1;10283:346:1::0;22454:45:0::1;22574:9;::::0;:16:::1;::::0;;-1:-1:-1;;;22574:16:0;;;;22528:19;;;;22510:15:::1;::::0;-1:-1:-1;;;;;22574:9:0;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22560:30;;22624:9;;;;;;;;;-1:-1:-1::0;;;;;22624:9:0::1;-1:-1:-1::0;;;;;22624:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22612:63;::::0;-1:-1:-1;;;22612:63:0;;-1:-1:-1;;;;;11120:15:1;;;22612:63:0::1;::::0;::::1;11102:34:1::0;22669:4:0::1;11152:18:1::0;;;11145:43;22612::0;;;::::1;::::0;::::1;::::0;11037:18:1;;22612:63:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22603:6;:72:::0;;-1:-1:-1;;;;;;22603:72:0::1;-1:-1:-1::0;;;;;22603:72:0;;;::::1;::::0;;::::1;::::0;;22688:42:::1;::::0;-1:-1:-1;22688:28:0::1;:42::i;:::-;22743:57;22759:10;22779:4;22786:13;:6:::0;22795:4:::1;22786:13;:::i;:::-;22743:15;:57::i;:::-;22813:9;::::0;-1:-1:-1;;;;;22813:9:0::1;:25;22846:4:::0;22860::::1;22866:24;22860:4:::0;-1:-1:-1;;;;;4613:18:0;4581:7;4613:18;;;;;;;;;;;;4462:177;22866:24:::1;22813:109;::::0;-1:-1:-1;;;;;;22813:109:0::1;::::0;;;;;;-1:-1:-1;;;;;11731:15:1;;;22813:109:0::1;::::0;::::1;11713:34:1::0;11763:18;;;11756:34;22891:1:0::1;11806:18:1::0;;;11799:34;;;11849:18;;;11842:34;22895:10:0::1;11892:19:1::0;;;11885:44;22906:15:0::1;11945:19:1::0;;;11938:35;11647:19;;22813:109:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22938:10;22935:735;;;22989:16;::::0;;23003:1:::1;22989:16:::0;;;;;::::1;::::0;;22965:21:::1;::::0;22989:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;22989:16:0::1;22965:40;;23030:3;23020:4;23025:1;23020:7;;;;;;;;:::i;:::-;;;;;;:13;-1:-1:-1::0;;;;;23020:13:0::1;;;-1:-1:-1::0;;;;;23020:13:0::1;;;::::0;::::1;23066:4;23048;23053:1;23048:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23048:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;;:23;23091:19;;23088:386:::1;;23135:9;23131:328;23150:19:::0;;::::1;23131:328;;;23199:9;::::0;-1:-1:-1;;;;;23199:9:0::1;:31;23238:21;23288:7:::0;;23296:1;23288:10;;::::1;;;;;:::i;:::-;;;;;;;23301:4;23288:17;;;;:::i;:::-;23332:4;23363:8;;23372:1;23363:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;23401:15;23199:240;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;23199:240:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;23171:3:0;::::1;::::0;::::1;:::i;:::-;;;;23131:328;;;;23088:386;23490:9;::::0;:166:::1;::::0;-1:-1:-1;;;23490:166:0;;-1:-1:-1;;;;;23490:9:0;;::::1;::::0;:31:::1;::::0;23529:21:::1;::::0;23490:166:::1;::::0;:9:::1;::::0;23582:4;;23601:10:::1;::::0;23626:15:::1;::::0;23490:166:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;23490:166:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;;22950:720;22935:735;-1:-1:-1::0;;23703:12:0::1;23682:18;:33:::0;-1:-1:-1;;23726:11:0::1;:18:::0;;-1:-1:-1;;;;23726:18:0::1;-1:-1:-1::0;;;23726:18:0::1;::::0;;-1:-1:-1;;;;22211:1541:0:o;15487:164::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;15561:1:::1;15542:16;:20:::0;;;15573:14:::1;:18:::0;15615:1:::1;15602:10;:14:::0;15642:1:::1;15627:12;:16:::0;15487:164::o;5926:297::-;175:10;6041:4;6135:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6135:34:0;;;;;;;;;;6041:4;;6063:130;;6113:7;;6135:47;;6172:10;;6135:47;:::i;:::-;6063:8;:130::i;15314:165::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;15389:1:::1;15370:16;:20:::0;;;15401:14:::1;:18:::0;;;15430:10:::1;:14:::0;;;15455:12:::1;:16:::0;15314:165::o;20887:348::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21020:32:0;::::1;20998:120;;;;-1:-1:-1::0;;;20998:120:0::1;;;;;;;:::i;:::-;21129:17;:38:::0;;-1:-1:-1;;;;;;21129:38:0::1;-1:-1:-1::0;;;;;21129:38:0;::::1;::::0;;::::1;::::0;;;21183:44:::1;::::0;::::1;::::0;-1:-1:-1;;21183:44:0::1;20887:348:::0;:::o;21854:349::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;21959:18:::1;::::0;21949:4:::1;4581:7:::0;4613:18;;;;;;;;;;;21931:46:::1;;21909:160;;;::::0;;-1:-1:-1;;;21909:160:0;;15408:2:1;21909:160:0::1;::::0;::::1;15390:21:1::0;15427:18;;;15420:30;;;;15486:34;15466:18;;;15459:62;15557:34;15537:18;;;15530:62;15609:19;;21909:160:0::1;15206:428:1::0;21909:160:0::1;22080:8;:15:::0;;-1:-1:-1;;;;22080:15:0::1;-1:-1:-1::0;;;22080:15:0::1;::::0;;22106:10:::1;:8;:10::i;:::-;22127:8;:16:::0;;-1:-1:-1;;;;22127:16:0::1;::::0;;22159:36:::1;::::0;22179:15:::1;1587:25:1::0;;22159:36:0::1;::::0;1575:2:1;1560:18;22159:36:0::1;;;;;;;21854:349::o:0;21243:311::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21349:30:0;::::1;21327:118;;;;-1:-1:-1::0;;;21327:118:0::1;;;;;;;:::i;:::-;21456:15;:34:::0;;-1:-1:-1;;;;;;21456:34:0::1;-1:-1:-1::0;;;;;21456:34:0;::::1;::::0;;::::1;::::0;;;21506:40:::1;::::0;::::1;::::0;-1:-1:-1;;21506:40:0::1;21243:311:::0;:::o;21562:240::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21646:26:0;::::1;21638:71;;;::::0;-1:-1:-1;;;21638:71:0;;15841:2:1;21638:71:0::1;::::0;::::1;15823:21:1::0;;;15860:18;;;15853:30;15919:34;15899:18;;;15892:62;15971:18;;21638:71:0::1;15639:356:1::0;21638:71:0::1;21720:11;:26:::0;;-1:-1:-1;;;;;;21720:26:0::1;-1:-1:-1::0;;;;;21720:26:0;::::1;::::0;;::::1;::::0;;;21762:32:::1;::::0;::::1;::::0;-1:-1:-1;;21762:32:0::1;21562:240:::0;:::o;8647:150::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;8740:6:::1;::::0;8719:40:::1;::::0;8756:1:::1;::::0;-1:-1:-1;;;;;8740:6:0::1;::::0;8719:40:::1;::::0;8756:1;;8719:40:::1;8770:6;:19:::0;;-1:-1:-1;;;;;;8770:19:0::1;::::0;;8647:150::o;15659:170::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;15736:1:::1;15716:17;:21:::0;;;15748:15:::1;:19:::0;;;15778:11:::1;:15:::0;;;15804:13:::1;:17:::0;15659:170::o;20075:549::-;8560:6;;20189:10;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20225:20:0;::::1;20217:59;;;::::0;-1:-1:-1;;;20217:59:0;;16202:2:1;20217:59:0::1;::::0;::::1;16184:21:1::0;16241:2;16221:18;;;16214:30;16280:28;16260:18;;;16253:56;16326:18;;20217:59:0::1;16000:350:1::0;20217:59:0::1;20327:4;-1:-1:-1::0;;;;;20309:23:0;::::1;::::0;20287:125:::1;;;::::0;-1:-1:-1;;;20287:125:0;;16557:2:1;20287:125:0::1;::::0;::::1;16539:21:1::0;16596:2;16576:18;;;16569:30;16635:34;16615:18;;;16608:62;-1:-1:-1;;;16686:18:1;;;16679:50;16746:19;;20287:125:0::1;16355:416:1::0;20287:125:0::1;20450:39;::::0;-1:-1:-1;;;20450:39:0;;20483:4:::1;20450:39;::::0;::::1;731:51:1::0;20423:24:0::1;::::0;-1:-1:-1;;;;;20450:24:0;::::1;::::0;::::1;::::0;704:18:1;;20450:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20508:46;::::0;-1:-1:-1;;;20508:46:0;;-1:-1:-1;;;;;17157:32:1;;;20508:46:0::1;::::0;::::1;17139:51:1::0;17206:18;;;17199:34;;;20423:66:0;;-1:-1:-1;20508:23:0;;::::1;::::0;::::1;::::0;17112:18:1;;20508:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20570;::::0;;-1:-1:-1;;;;;17157:32:1;;17139:51;;17221:2;17206:18;;17199:34;;;20500:54:0;;-1:-1:-1;20570:46:0::1;::::0;17112:18:1;20570:46:0::1;;;;;;;20206:418;20075:549:::0;;;;:::o;4133:104::-;4189:13;4222:7;4215:14;;;;;:::i;14815:297::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;14961:6:::1;::::0;-1:-1:-1;;;;;14961:6:0;;::::1;14953:14:::0;;::::1;::::0;14931:121:::1;;;::::0;-1:-1:-1;;;14931:121:0;;17696:2:1;14931:121:0::1;::::0;::::1;17678:21:1::0;17735:2;17715:18;;;17708:30;17774:34;17754:18;;;17747:62;17845:27;17825:18;;;17818:55;17890:19;;14931:121:0::1;17494:421:1::0;14931:121:0::1;15063:41;15092:4;15098:5;15063:28;:41::i;:::-;14815:297:::0;;:::o;6231:482::-;175:10;6351:4;6400:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6400:34:0;;;;;;;;;;6467:35;;;;6445:122;;;;-1:-1:-1;;;6445:122:0;;18122:2:1;6445:122:0;;;18104:21:1;18161:2;18141:18;;;18134:30;18200:34;18180:18;;;18173:62;-1:-1:-1;;;18251:18:1;;;18244:35;18296:19;;6445:122:0;17920:401:1;6445:122:0;6603:67;175:10;6626:7;6654:15;6635:16;:34;6603:8;:67::i;:::-;-1:-1:-1;6701:4:0;;6231:482;-1:-1:-1;;;6231:482:0:o;4647:216::-;4769:4;4791:42;175:10;4815:9;4826:6;4791:9;:42::i;15837:169::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;15913:1:::1;15893:17;:21:::0;;;15925:15:::1;:19:::0;15969:1:::1;15955:11;:15:::0;15997:1:::1;15981:13;:17:::0;15837:169::o;16014:182::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16099:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;16099:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;16154:34;;1389:41:1;;;16154:34:0::1;::::0;1362:18:1;16154:34:0::1;;;;;;;16014:182:::0;;:::o;14285:428::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;14425:6:::1;14404:13;4434:12:::0;;;4346:108;14404:13:::1;:17;::::0;14420:1:::1;14404:17;:::i;:::-;14403:28;;;;:::i;:::-;14390:9;:41;;14368:144;;;::::0;-1:-1:-1;;;14368:144:0;;18750:2:1;14368:144:0::1;::::0;::::1;18732:21:1::0;18789:2;18769:18;;;18762:30;18828:34;18808:18;;;18801:62;-1:-1:-1;;;18879:18:1;;;18872:51;18940:19;;14368:144:0::1;18548:417:1::0;14368:144:0::1;14580:4;14559:13;4434:12:::0;;;4346:108;14559:13:::1;:17;::::0;14575:1:::1;14559:17;:::i;:::-;14558:26;;;;:::i;:::-;14545:9;:39;;14523:141;;;::::0;-1:-1:-1;;;14523:141:0;;19172:2:1;14523:141:0::1;::::0;::::1;19154:21:1::0;19211:2;19191:18;;;19184:30;19250:34;19230:18;;;19223:62;-1:-1:-1;;;19301:18:1;;;19294:50;19361:19;;14523:141:0::1;18970:416:1::0;14523:141:0::1;14675:18;:30:::0;14285:428::o;8805:281::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8908:22:0;::::1;8886:110;;;::::0;-1:-1:-1;;;8886:110:0;;19593:2:1;8886:110:0::1;::::0;::::1;19575:21:1::0;19632:2;19612:18;;;19605:30;19671:34;19651:18;;;19644:62;-1:-1:-1;;;19722:18:1;;;19715:36;19768:19;;8886:110:0::1;19391:402:1::0;8886:110:0::1;9033:6;::::0;9012:38:::1;::::0;-1:-1:-1;;;;;9012:38:0;;::::1;::::0;9033:6:::1;::::0;9012:38:::1;::::0;9033:6:::1;::::0;9012:38:::1;9061:6;:17:::0;;-1:-1:-1;;;;;;9061:17:0::1;-1:-1:-1::0;;;;;9061:17:0;;;::::1;::::0;;;::::1;::::0;;8805:281::o;20694:185::-;8560:6;;-1:-1:-1;;;;;8560:6:0;175:10;8560:22;8552:67;;;;-1:-1:-1;;;8552:67:0;;;;;;;:::i;:::-;20789:82:::1;::::0;20752:12:::1;::::0;20797:10:::1;::::0;20821:21:::1;::::0;20752:12;20789:82;20752:12;20789:82;20821:21;20797:10;20789:82:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;20694:185:0:o;7702:380::-;-1:-1:-1;;;;;7838:19:0;;7830:68;;;;-1:-1:-1;;;7830:68:0;;20210:2:1;7830:68:0;;;20192:21:1;20249:2;20229:18;;;20222:30;20288:34;20268:18;;;20261:62;-1:-1:-1;;;20339:18:1;;;20332:34;20383:19;;7830:68:0;20008:400:1;7830:68:0;-1:-1:-1;;;;;7917:21:0;;7909:68;;;;-1:-1:-1;;;7909:68:0;;20615:2:1;7909:68:0;;;20597:21:1;20654:2;20634:18;;;20627:30;20693:34;20673:18;;;20666:62;-1:-1:-1;;;20744:18:1;;;20737:32;20786:19;;7909:68:0;20413:398:1;7909:68:0;-1:-1:-1;;;;;7990:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8042:32;;1587:25:1;;;8042:32:0;;1560:18:1;8042:32:0;;;;;;;7702:380;;;:::o;6721:651::-;-1:-1:-1;;;;;6861:20:0;;6853:70;;;;-1:-1:-1;;;6853:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6942:23:0;;6934:71;;;;-1:-1:-1;;;6934:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7042:17:0;;7018:21;7042:17;;;;;;;;;;;7092:23;;;;7070:111;;;;-1:-1:-1;;;7070:111:0;;21828:2:1;7070:111:0;;;21810:21:1;21867:2;21847:18;;;21840:30;21906:34;21886:18;;;21879:62;-1:-1:-1;;;21957:18:1;;;21950:36;22003:19;;7070:111:0;21626:402:1;7070:111:0;-1:-1:-1;;;;;7217:17:0;;;:9;:17;;;;;;;;;;;7237:22;;;7217:42;;7281:20;;;;;;;;:30;;7253:6;;7217:9;7281:30;;7253:6;;7281:30;:::i;:::-;;;;;;;;7346:9;-1:-1:-1;;;;;7329:35:0;7338:6;-1:-1:-1;;;;;7329:35:0;;7357:6;7329:35;;;;1587:25:1;;1575:2;1560:18;;1441:177;7329:35:0;;;;;;;;6842:530;6721:651;;;:::o;16204:2293::-;-1:-1:-1;;;;;16336:18:0;;16328:68;;;;-1:-1:-1;;;16328:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16415:16:0;;16407:64;;;;-1:-1:-1;;;16407:64:0;;;;;;;:::i;:::-;16499:1;16490:6;:10;16482:52;;;;-1:-1:-1;;;16482:52:0;;22235:2:1;16482:52:0;;;22217:21:1;22274:2;22254:18;;;22247:30;22313:31;22293:18;;;22286:59;22362:18;;16482:52:0;22033:353:1;16482:52:0;16550:18;;16572:1;16550:23;16547:1943;;16590:33;16606:4;16612:2;16616:6;16590:15;:33::i;16547:1943::-;16714:4;16665:28;4613:18;;;;;;;;;;;;16776;;-1:-1:-1;;;;;16938:25:0;;;;:19;:25;;;;;;16752:42;;;;;16826:4;;16938:25;;;:52;;-1:-1:-1;;;;;;16967:23:0;;;;;;:19;:23;;;;;;;;16938:52;16934:108;;;-1:-1:-1;17021:5:0;16934:108;17080:7;:18;;;;;17091:7;17080:18;:33;;;;-1:-1:-1;17102:11:0;;-1:-1:-1;;;17102:11:0;;;;17080:33;:46;;;;-1:-1:-1;17118:8:0;;-1:-1:-1;;;17118:8:0;;;;17117:9;17080:46;:79;;;;-1:-1:-1;;;;;;17130:29:0;;;;;;:25;:29;;;;;;;;17080:79;17058:231;;;17194:8;:15;;-1:-1:-1;;;;17194:15:0;-1:-1:-1;;;17194:15:0;;;17228:10;:8;:10::i;:::-;17257:8;:16;;-1:-1:-1;;;;17257:16:0;;;17058:231;17305:12;17418:7;17414:1013;;;-1:-1:-1;;;;;17450:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;17499:1;17483:13;;:17;17450:50;17446:812;;;17559:3;17542:13;;17533:6;:22;;;;:::i;:::-;17532:30;;;;:::i;:::-;17525:37;;17637:13;;17616:17;;17609:4;:24;;;;:::i;:::-;17608:42;;;;:::i;:::-;17585:19;;:65;;;;;;;:::i;:::-;;;;-1:-1:-1;;17721:13:0;;17702:15;;17695:22;;:4;:22;:::i;:::-;17694:40;;;;:::i;:::-;17673:17;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;17797:13:0;;17782:11;;17775:18;;:4;:18;:::i;:::-;17774:36;;;;:::i;:::-;17757:13;;:53;;;;;;;:::i;:::-;;;;-1:-1:-1;17446:812:0;;-1:-1:-1;17446:812:0;;-1:-1:-1;;;;;17884:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;17934:1;17919:12;;:16;17884:51;17880:378;;;17993:3;17977:12;;17968:6;:21;;;;:::i;:::-;17967:29;;;;:::i;:::-;17960:36;;18070:12;;18050:16;;18043:4;:23;;;;:::i;:::-;18042:40;;;;:::i;:::-;18019:19;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;18152:12:0;;18134:14;;18127:21;;:4;:21;:::i;:::-;18126:38;;;;:::i;:::-;18105:17;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;18226:12:0;;18212:10;;18205:17;;:4;:17;:::i;:::-;18204:34;;;;:::i;:::-;18187:13;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;17880:378:0;18282:8;;18278:99;;18315:42;18331:4;18345;18352;18315:15;:42::i;:::-;18397:14;18407:4;18397:14;;:::i;:::-;;;17414:1013;18443:33;18459:4;18465:2;18469:6;18443:15;:33::i;:::-;16650:1840;;;;16204:2293;;;:::o;15120:186::-;-1:-1:-1;;;;;15203:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;15203:39:0;;;;;;;;;;15258:40;;15203:39;;:31;15258:40;;;15120:186;;:::o;19015:1052::-;19098:4;19054:23;4613:18;;;;;;;;;;;19054:50;;19115:25;19211:13;;19178:17;;19143:19;;:52;;;;:::i;:::-;:81;;;;:::i;:::-;19115:109;-1:-1:-1;19241:20:0;;;:46;;-1:-1:-1;19265:22:0;;19241:46;19237:85;;;19304:7;;19015:1052::o;19237:85::-;19356:18;;:23;;19377:2;19356:23;:::i;:::-;19338:15;:41;19334:115;;;19414:18;;:23;;19435:2;19414:23;:::i;:::-;19396:41;;19334:115;19461:12;19486:33;19503:15;19486:16;:33::i;:::-;19626:17;;19553:21;;19532:18;;19647:17;;19613:30;;19553:21;19613:30;:::i;:::-;19612:52;;;;:::i;:::-;19587:77;;19675:18;19727:17;19710:13;;19697:10;:26;;;;:::i;:::-;19696:48;;;;:::i;:::-;19779:1;19757:19;:23;;;19791:17;:21;;;19823:13;:17;;;19867:15;;:47;;19675:69;;-1:-1:-1;;;;;;19867:15:0;;19895:14;;19867:47;19779:1;19867:47;19895:14;19867:15;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19939:11:0;;:39;;19853:61;;-1:-1:-1;;;;;;19939:11:0;;19963:10;;19939:39;;;;19963:10;19939:11;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20003:17:0;;:56;;19925:53;;-1:-1:-1;;;;;;20003:17:0;;20033:21;;20003:56;;;;20033:21;20003:17;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;19015:1052:0:o;18505:502::-;18655:16;;;18669:1;18655:16;;;;;;;;18631:21;;18655:16;;;;;;;;;;-1:-1:-1;18655:16:0;18631:40;;18700:4;18682;18687:1;18682:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18682:23:0;;;:7;;;;;;;;;;:23;;;;18726:9;;:16;;;-1:-1:-1;;;18726:16:0;;;;:9;;;;;:14;;:16;;;;;18682:7;;18726:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18716:4;18721:1;18716:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18716:26:0;;;:7;;;;;;;;;:26;18781:9;;:218;;-1:-1:-1;;;18781:218:0;;:9;;;:60;;:218;;18856:11;;18781:9;;18926:4;;18953;;18973:15;;18781:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18560:447;18505:502;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;793:131::-;-1:-1:-1;;;;;868:31:1;;858:42;;848:70;;914:1;911;904:12;848:70;793:131;:::o;929:315::-;997:6;1005;1058:2;1046:9;1037:7;1033:23;1029:32;1026:52;;;1074:1;1071;1064:12;1026:52;1113:9;1100:23;1132:31;1157:5;1132:31;:::i;:::-;1182:5;1234:2;1219:18;;;;1206:32;;-1:-1:-1;;;929:315:1:o;1831:127::-;1892:10;1887:3;1883:20;1880:1;1873:31;1923:4;1920:1;1913:15;1947:4;1944:1;1937:15;1963:275;2034:2;2028:9;2099:2;2080:13;;-1:-1:-1;;2076:27:1;2064:40;;2134:18;2119:34;;2155:22;;;2116:62;2113:88;;;2181:18;;:::i;:::-;2217:2;2210:22;1963:275;;-1:-1:-1;1963:275:1:o;2243:183::-;2303:4;2336:18;2328:6;2325:30;2322:56;;;2358:18;;:::i;:::-;-1:-1:-1;2403:1:1;2399:14;2415:4;2395:25;;2243:183::o;2431:662::-;2485:5;2538:3;2531:4;2523:6;2519:17;2515:27;2505:55;;2556:1;2553;2546:12;2505:55;2592:6;2579:20;2618:4;2642:60;2658:43;2698:2;2658:43;:::i;:::-;2642:60;:::i;:::-;2736:15;;;2822:1;2818:10;;;;2806:23;;2802:32;;;2767:12;;;;2846:15;;;2843:35;;;2874:1;2871;2864:12;2843:35;2910:2;2902:6;2898:15;2922:142;2938:6;2933:3;2930:15;2922:142;;;3004:17;;2992:30;;3042:12;;;;2955;;2922:142;;;-1:-1:-1;3082:5:1;2431:662;-1:-1:-1;;;;;;2431:662:1:o;3098:1215::-;3216:6;3224;3277:2;3265:9;3256:7;3252:23;3248:32;3245:52;;;3293:1;3290;3283:12;3245:52;3333:9;3320:23;3362:18;3403:2;3395:6;3392:14;3389:34;;;3419:1;3416;3409:12;3389:34;3457:6;3446:9;3442:22;3432:32;;3502:7;3495:4;3491:2;3487:13;3483:27;3473:55;;3524:1;3521;3514:12;3473:55;3560:2;3547:16;3582:4;3606:60;3622:43;3662:2;3622:43;:::i;3606:60::-;3700:15;;;3782:1;3778:10;;;;3770:19;;3766:28;;;3731:12;;;;3806:19;;;3803:39;;;3838:1;3835;3828:12;3803:39;3862:11;;;;3882:217;3898:6;3893:3;3890:15;3882:217;;;3978:3;3965:17;3995:31;4020:5;3995:31;:::i;:::-;4039:18;;3915:12;;;;4077;;;;3882:217;;;4118:5;-1:-1:-1;;4161:18:1;;4148:32;;-1:-1:-1;;4192:16:1;;;4189:36;;;4221:1;4218;4211:12;4189:36;;4244:63;4299:7;4288:8;4277:9;4273:24;4244:63;:::i;:::-;4234:73;;;3098:1215;;;;;:::o;4318:456::-;4395:6;4403;4411;4464:2;4452:9;4443:7;4439:23;4435:32;4432:52;;;4480:1;4477;4470:12;4432:52;4519:9;4506:23;4538:31;4563:5;4538:31;:::i;:::-;4588:5;-1:-1:-1;4645:2:1;4630:18;;4617:32;4658:33;4617:32;4658:33;:::i;:::-;4318:456;;4710:7;;-1:-1:-1;;;4764:2:1;4749:18;;;;4736:32;;4318:456::o;4779:367::-;4842:8;4852:6;4906:3;4899:4;4891:6;4887:17;4883:27;4873:55;;4924:1;4921;4914:12;4873:55;-1:-1:-1;4947:20:1;;4990:18;4979:30;;4976:50;;;5022:1;5019;5012:12;4976:50;5059:4;5051:6;5047:17;5035:29;;5119:3;5112:4;5102:6;5099:1;5095:14;5087:6;5083:27;5079:38;5076:47;5073:67;;;5136:1;5133;5126:12;5073:67;4779:367;;;;;:::o;5151:910::-;5291:6;5299;5307;5315;5323;5331;5384:3;5372:9;5363:7;5359:23;5355:33;5352:53;;;5401:1;5398;5391:12;5352:53;5437:9;5424:23;5414:33;;5494:2;5483:9;5479:18;5466:32;5456:42;;5549:2;5538:9;5534:18;5521:32;5572:18;5613:2;5605:6;5602:14;5599:34;;;5629:1;5626;5619:12;5599:34;5668:70;5730:7;5721:6;5710:9;5706:22;5668:70;:::i;:::-;5757:8;;-1:-1:-1;5642:96:1;-1:-1:-1;5845:2:1;5830:18;;5817:32;;-1:-1:-1;5861:16:1;;;5858:36;;;5890:1;5887;5880:12;5858:36;;5929:72;5993:7;5982:8;5971:9;5967:24;5929:72;:::i;:::-;5151:910;;;;-1:-1:-1;5151:910:1;;-1:-1:-1;5151:910:1;;6020:8;;5151:910;-1:-1:-1;;;5151:910:1:o;6255:247::-;6314:6;6367:2;6355:9;6346:7;6342:23;6338:32;6335:52;;;6383:1;6380;6373:12;6335:52;6422:9;6409:23;6441:31;6466:5;6441:31;:::i;:::-;6491:5;6255:247;-1:-1:-1;;;6255:247:1:o;6507:388::-;6575:6;6583;6636:2;6624:9;6615:7;6611:23;6607:32;6604:52;;;6652:1;6649;6642:12;6604:52;6691:9;6678:23;6710:31;6735:5;6710:31;:::i;:::-;6760:5;-1:-1:-1;6817:2:1;6802:18;;6789:32;6830:33;6789:32;6830:33;:::i;:::-;6882:7;6872:17;;;6507:388;;;;;:::o;6900:118::-;6986:5;6979:13;6972:21;6965:5;6962:32;6952:60;;7008:1;7005;6998:12;7023:382;7088:6;7096;7149:2;7137:9;7128:7;7124:23;7120:32;7117:52;;;7165:1;7162;7155:12;7117:52;7204:9;7191:23;7223:31;7248:5;7223:31;:::i;:::-;7273:5;-1:-1:-1;7330:2:1;7315:18;;7302:32;7343:30;7302:32;7343:30;:::i;7410:180::-;7469:6;7522:2;7510:9;7501:7;7497:23;7493:32;7490:52;;;7538:1;7535;7528:12;7490:52;-1:-1:-1;7561:23:1;;7410:180;-1:-1:-1;7410:180:1:o;7595:380::-;7674:1;7670:12;;;;7717;;;7738:61;;7792:4;7784:6;7780:17;7770:27;;7738:61;7845:2;7837:6;7834:14;7814:18;7811:38;7808:161;;7891:10;7886:3;7882:20;7879:1;7872:31;7926:4;7923:1;7916:15;7954:4;7951:1;7944:15;7808:161;;7595:380;;;:::o;7980:356::-;8182:2;8164:21;;;8201:18;;;8194:30;8260:34;8255:2;8240:18;;8233:62;8327:2;8312:18;;7980:356::o;9123:127::-;9184:10;9179:3;9175:20;9172:1;9165:31;9215:4;9212:1;9205:15;9239:4;9236:1;9229:15;9255:127;9316:10;9311:3;9307:20;9304:1;9297:31;9347:4;9344:1;9337:15;9371:4;9368:1;9361:15;9387:135;9426:3;9447:17;;;9444:43;;9467:18;;:::i;:::-;-1:-1:-1;9514:1:1;9503:13;;9387:135::o;10634:251::-;10704:6;10757:2;10745:9;10736:7;10732:23;10728:32;10725:52;;;10773:1;10770;10763:12;10725:52;10805:9;10799:16;10824:31;10849:5;10824:31;:::i;11199:168::-;11272:9;;;11303;;11320:15;;;11314:22;;11300:37;11290:71;;11341:18;;:::i;11984:306::-;12072:6;12080;12088;12141:2;12129:9;12120:7;12116:23;12112:32;12109:52;;;12157:1;12154;12147:12;12109:52;12186:9;12180:16;12170:26;;12236:2;12225:9;12221:18;12215:25;12205:35;;12280:2;12269:9;12265:18;12259:25;12249:35;;11984:306;;;;;:::o;12295:461::-;12348:3;12386:5;12380:12;12413:6;12408:3;12401:19;12439:4;12468:2;12463:3;12459:12;12452:19;;12505:2;12498:5;12494:14;12526:1;12536:195;12550:6;12547:1;12544:13;12536:195;;;12615:13;;-1:-1:-1;;;;;12611:39:1;12599:52;;12671:12;;;;12706:15;;;;12647:1;12565:9;12536:195;;;-1:-1:-1;12747:3:1;;12295:461;-1:-1:-1;;;;;12295:461:1:o;12761:502::-;13024:6;13013:9;13006:25;13067:3;13062:2;13051:9;13047:18;13040:31;12987:4;13088:57;13140:3;13129:9;13125:19;13117:6;13088:57;:::i;:::-;-1:-1:-1;;;;;13181:32:1;;;;13176:2;13161:18;;13154:60;-1:-1:-1;13245:2:1;13230:18;13223:34;13080:65;12761:502;-1:-1:-1;;12761:502:1:o;13268:881::-;13363:6;13394:2;13437;13425:9;13416:7;13412:23;13408:32;13405:52;;;13453:1;13450;13443:12;13405:52;13486:9;13480:16;13519:18;13511:6;13508:30;13505:50;;;13551:1;13548;13541:12;13505:50;13574:22;;13627:4;13619:13;;13615:27;-1:-1:-1;13605:55:1;;13656:1;13653;13646:12;13605:55;13685:2;13679:9;13708:60;13724:43;13764:2;13724:43;:::i;13708:60::-;13802:15;;;13884:1;13880:10;;;;13872:19;;13868:28;;;13833:12;;;;13908:19;;;13905:39;;;13940:1;13937;13930:12;13905:39;13964:11;;;;13984:135;14000:6;13995:3;13992:15;13984:135;;;14066:10;;14054:23;;14017:12;;;;14097;;;;13984:135;;;14138:5;13268:881;-1:-1:-1;;;;;;;13268:881:1:o;14669:125::-;14734:9;;;14755:10;;;14752:36;;;14768:18;;:::i;14799:402::-;15001:2;14983:21;;;15040:2;15020:18;;;15013:30;15079:34;15074:2;15059:18;;15052:62;-1:-1:-1;;;15145:2:1;15130:18;;15123:36;15191:3;15176:19;;14799:402::o;16776:184::-;16846:6;16899:2;16887:9;16878:7;16874:23;16870:32;16867:52;;;16915:1;16912;16905:12;16867:52;-1:-1:-1;16938:16:1;;16776:184;-1:-1:-1;16776:184:1:o;17244:245::-;17311:6;17364:2;17352:9;17343:7;17339:23;17335:32;17332:52;;;17380:1;17377;17370:12;17332:52;17412:9;17406:16;17431:28;17453:5;17431:28;:::i;18326:217::-;18366:1;18392;18382:132;;18436:10;18431:3;18427:20;18424:1;18417:31;18471:4;18468:1;18461:15;18499:4;18496:1;18489:15;18382:132;-1:-1:-1;18528:9:1;;18326:217::o;20816:401::-;21018:2;21000:21;;;21057:2;21037:18;;;21030:30;21096:34;21091:2;21076:18;;21069:62;-1:-1:-1;;;21162:2:1;21147:18;;21140:35;21207:3;21192:19;;20816:401::o;21222:399::-;21424:2;21406:21;;;21463:2;21443:18;;;21436:30;21502:34;21497:2;21482:18;;21475:62;-1:-1:-1;;;21568:2:1;21553:18;;21546:33;21611:3;21596:19;;21222:399::o;22391:128::-;22458:9;;;22479:11;;;22476:37;;;22493:18;;:::i;22524:582::-;22823:6;22812:9;22805:25;22866:6;22861:2;22850:9;22846:18;22839:34;22909:3;22904:2;22893:9;22889:18;22882:31;22786:4;22930:57;22982:3;22971:9;22967:19;22959:6;22930:57;:::i;:::-;-1:-1:-1;;;;;23023:32:1;;;;23018:2;23003:18;;22996:60;-1:-1:-1;23087:3:1;23072:19;23065:35;22922:65;22524:582;-1:-1:-1;;;22524:582:1:o

Swarm Source

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