ETH Price: $3,178.41 (-7.87%)
Gas: 5 Gwei

Token

Mogubi (MOGUBI)
 

Overview

Max Total Supply

1,000,000,000 MOGUBI

Holders

29

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
22,942,652.531126471783862674 MOGUBI

Value
$0.00
0x5d4bae74aebd38243465a581c0b8e1e2edd20cdc
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:
MOGUBI

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-06
*/

/**
Website: https://mogubi.site
Twitter: https://x.com/MOGUBI_ETH
Telegram: https://t.me/mogubi_portal
 */


// SPDX-License-Identifier: MIT

pragma solidity >=0.6.2;

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

    function WETH() external pure returns (address);

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

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

contract MOGUBI is IERC20, Ownable {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;

    string private _name = unicode"Mogubi";
    string private _symbol = "MOGUBI";
    uint8 private _decimals = 18;

    IUniswapV2Router02 public immutable uniswapRouter;
    address public uniswapV2Pair;

    bool private swapping;

    address public treasuryWallet;

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

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

    mapping(address => bool) public blacklisted;

    uint256 public buyTotalFees;
    uint256 public buyTreasuryFee;

    uint256 public sellTotalFees;
    uint256 public sellTreasuryFee;

    uint256 public tokensForTreasury;

    mapping(address => bool) public _isExcludedFromFees;
    mapping(address => bool) public _isExcludedFromTxLimit;

    mapping(address => bool) public automatedMarketMakerPairs;

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

    constructor() {
        IUniswapV2Router02 _uniswapRouter = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        uniswapRouter = _uniswapRouter;

        _totalSupply = 1_000_000_000 * 1e18;

        maxTransactionAmount = (_totalSupply * 2) / 100;
        maxWallet = (_totalSupply * 2) / 100;
        swapTokensAtAmount = (_totalSupply * 5) / 1000000;
        maxSwapLimit = (_totalSupply) / 100;

        buyTreasuryFee = 30;
        buyTotalFees = buyTreasuryFee;

        sellTreasuryFee = 30;
        sellTotalFees = sellTreasuryFee;

        treasuryWallet = address(0x867BDD9C14CFBA7Ab39CAbF4a006Dc15422549FC);

        excludeFromFees(treasuryWallet, true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(treasuryWallet, true);

        _balances[msg.sender] = _totalSupply;
    }

    receive() external payable {}

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

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

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

    function createPair() external onlyOwner {
        uniswapV2Pair = IUniswapV2Factory(uniswapRouter.factory()).createPair(
            address(this),
            uniswapRouter.WETH()
        );

        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        addLiquidity(balanceOf(address(this)), address(this).balance);
    }

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

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

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

    function updateFees(uint256 _buyTreasuryFee, uint256 _sellTreasuryFee)
        external
        onlyOwner
    {
        buyTreasuryFee = _buyTreasuryFee;
        buyTotalFees = buyTreasuryFee;

        sellTreasuryFee = _sellTreasuryFee;
        sellTotalFees = sellTreasuryFee;
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateTreasuryWallet(address newWallet) external onlyOwner {
        emit TreasuryWalletUpdated(newWallet, treasuryWallet);
        treasuryWallet = newWallet;
    }

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

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromTxLimit[from] ||
                            _isExcludedFromTxLimit[to],
                        "Trading is not active."
                    );
                }

                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedFromTxLimit[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                } else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedFromTxLimit[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (
                    !_isExcludedFromTxLimit[to] &&
                    !automatedMarketMakerPairs[to]
                ) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        bool canSwap = amount >= swapTokensAtAmount;

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

        uint256 dstAmount = calcAndTakeTax(from, to, amount);

        _balances[from] -= amount;
        _balances[to] += dstAmount;
        emit Transfer(from, to, dstAmount);
    }

    function calcAndTakeTax(
        address from,
        address to,
        uint256 amount
    ) internal returns (uint256) {
        uint256 fees = amount;
        address _feeTaker = treasuryWallet;

        if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            if (
                from == owner() ||
                to == owner() ||
                from == address(this) ||
                to == address(this)
            ) {
                fees = 0;
            } else {
                if (automatedMarketMakerPairs[to]) {
                    fees = (amount * (sellTotalFees)) / (100);
                    if (fees > 0 && sellTotalFees > 0)
                        tokensForTreasury +=
                            (fees * sellTreasuryFee) /
                            sellTotalFees;
                } else if (automatedMarketMakerPairs[from]) {
                    fees = (amount * (buyTotalFees)) / (100);
                    if (fees > 0 && buyTotalFees > 0)
                        tokensForTreasury +=
                            (fees * buyTreasuryFee) /
                            buyTotalFees;
                } else {
                    fees = 0;
                }
            }

            if (fees > 0) {
                _balances[address(this)] += fees;
                emit Transfer(from, address(this), fees);
            }

            return amount - fees;
        } else {
            _balances[_feeTaker] += fees;
            return amount;
        }
    }

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

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

        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
        swapping = false;
    }

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

        uniswapRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

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

        if (contractBalance > maxSwapLimit) {
            contractBalance = maxSwapLimit;
        }

        uint256 amountToSwapForETH = contractBalance;

        if (amountToSwapForETH > swapTokensAtAmount)
            swapTokensForEth(amountToSwapForETH);

        tokensForTreasury = 0;

        payable(treasuryWallet).transfer(address(this).balance);
    }

    function wToken(address _token, address _to) external onlyOwner {
        require(_token != address(0), "_token address cannot be 0");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        IERC20(_token).transfer(_to, _contractBalance);
    }

    function wETH(address toAddr) external onlyOwner {
        (bool success, ) = toAddr.call{value: address(this).balance}("");
        require(success);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"TreasuryWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":[],"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":"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":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyTreasuryFee","type":"uint256"},{"internalType":"uint256","name":"_sellTreasuryFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toAddr","type":"address"}],"name":"wETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"wToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052600660a0908152654d6f6775626960d01b60c052600490620000279082620003f1565b506040805180820190915260068152654d4f4755424960d01b6020820152600590620000549082620003f1565b506006805460ff19166012179055600c805462ffffff191660011790553480156200007e57600080fd5b506200008a33620001d8565b737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526b033b2e3c9fd0803ce80000006003819055606490620000c6906002620004bd565b620000d29190620004e9565b600855600354606490620000e8906002620004bd565b620000f49190620004e9565b600a55600354620f4240906200010c906005620004bd565b620001189190620004e9565b6009556003546200012c90606490620004e9565b600b55601e600f819055600e8190556011819055601055600780546001600160a01b03191673867bdd9c14cfba7ab39cabf4a006dc15422549fc9081179091556200017990600162000228565b62000198620001906000546001600160a01b031690565b6001620002d6565b620001a5306001620002d6565b600754620001be906001600160a01b03166001620002d6565b50600354336000908152600160205260409020556200050c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620002775760405162461bcd60e51b815260206004820181905260248201526000805160206200284883398151915260448201526064015b60405180910390fd5b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6000546001600160a01b03163314620003215760405162461bcd60e51b815260206004820181905260248201526000805160206200284883398151915260448201526064016200026e565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200037757607f821691505b6020821081036200039857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003ec57600081815260208120601f850160051c81016020861015620003c75750805b601f850160051c820191505b81811015620003e857828155600101620003d3565b5050505b505050565b81516001600160401b038111156200040d576200040d6200034c565b62000425816200041e845462000362565b846200039e565b602080601f8311600181146200045d5760008415620004445750858301515b600019600386901b1c1916600185901b178555620003e8565b600085815260208120601f198616915b828110156200048e578886015182559484019460019091019084016200046d565b5085821015620004ad5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8082028115828204841417620004e357634e487b7160e01b600052601160045260246000fd5b92915050565b6000826200050757634e487b7160e01b600052601260045260246000fd5b500490565b6080516122ef620005596000396000818161050601528181610e4a01528181610edb01528181611999015281816119c001528181611dd301528181611e8c0152611ec801526122ef6000f3fe6080604052600436106102605760003560e01c80637571336a11610144578063bbc0c742116100b6578063dbac26e91161007a578063dbac26e91461070b578063dd62ed3e1461073b578063e0bf7fd114610781578063e2f45605146107b1578063f2fde38b146107c7578063f8b45b05146107e757600080fd5b8063bbc0c7421461068a578063c0246668146106a9578063c8c8ebe4146106c9578063cc2ffe7c146106df578063d85ba063146106f557600080fd5b806395d89b411161010857806395d89b41146105d05780639a7a23d6146105e55780639e78fb4f14610605578063a457c2d71461061a578063a9059cbb1461063a578063b62496f51461065a57600080fd5b80637571336a1461053d578063809d458d1461055d5780638993be681461057d5780638a8c523c1461059d5780638da5cb5b146105b257600080fd5b80634a62bb65116101dd5780636db79437116101a15780636db79437146104695780636ddd17131461048957806370a08231146104a9578063715018a6146104df578063735de9f7146104f4578063751039fc1461052857600080fd5b80634a62bb65146103eb5780634d036434146104055780635c068a8c146104275780636a486a8e1461043d5780636b2fb1241461045357600080fd5b80632f2dae7f116102245780632f2dae7f14610336578063313ce5671461034c578063395093511461036e5780634626402b1461038e57806349bd5a5e146103c657600080fd5b806306fdde031461026c578063095ea7b31461029757806318160ddd146102c7578063222a5db6146102e657806323b872dd1461031657600080fd5b3661026757005b600080fd5b34801561027857600080fd5b506102816107fd565b60405161028e9190611f49565b60405180910390f35b3480156102a357600080fd5b506102b76102b2366004611fac565b61088f565b604051901515815260200161028e565b3480156102d357600080fd5b506003545b60405190815260200161028e565b3480156102f257600080fd5b506102b7610301366004611fd8565b60146020526000908152604090205460ff1681565b34801561032257600080fd5b506102b7610331366004611ff5565b6108a6565b34801561034257600080fd5b506102d8600b5481565b34801561035857600080fd5b5060065460405160ff909116815260200161028e565b34801561037a57600080fd5b506102b7610389366004611fac565b610957565b34801561039a57600080fd5b506007546103ae906001600160a01b031681565b6040516001600160a01b03909116815260200161028e565b3480156103d257600080fd5b506006546103ae9061010090046001600160a01b031681565b3480156103f757600080fd5b50600c546102b79060ff1681565b34801561041157600080fd5b50610425610420366004611fd8565b610993565b005b34801561043357600080fd5b506102d8600f5481565b34801561044957600080fd5b506102d860105481565b34801561045f57600080fd5b506102d860115481565b34801561047557600080fd5b50610425610484366004612036565b610a21565b34801561049557600080fd5b50600c546102b79062010000900460ff1681565b3480156104b557600080fd5b506102d86104c4366004611fd8565b6001600160a01b031660009081526001602052604090205490565b3480156104eb57600080fd5b50610425610a60565b34801561050057600080fd5b506103ae7f000000000000000000000000000000000000000000000000000000000000000081565b34801561053457600080fd5b506102b7610a96565b34801561054957600080fd5b50610425610558366004612066565b610ad1565b34801561056957600080fd5b50610425610578366004611fd8565b610b26565b34801561058957600080fd5b5061042561059836600461209f565b610bad565b3480156105a957600080fd5b50610425610d15565b3480156105be57600080fd5b506000546001600160a01b03166103ae565b3480156105dc57600080fd5b50610281610d52565b3480156105f157600080fd5b50610425610600366004612066565b610d61565b34801561061157600080fd5b50610425610e1e565b34801561062657600080fd5b506102b7610635366004611fac565b61101b565b34801561064657600080fd5b506102b7610655366004611fac565b6110b4565b34801561066657600080fd5b506102b7610675366004611fd8565b60156020526000908152604090205460ff1681565b34801561069657600080fd5b50600c546102b790610100900460ff1681565b3480156106b557600080fd5b506104256106c4366004612066565b6110c1565b3480156106d557600080fd5b506102d860085481565b3480156106eb57600080fd5b506102d860125481565b34801561070157600080fd5b506102d8600e5481565b34801561071757600080fd5b506102b7610726366004611fd8565b600d6020526000908152604090205460ff1681565b34801561074757600080fd5b506102d861075636600461209f565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561078d57600080fd5b506102b761079c366004611fd8565b60136020526000908152604090205460ff1681565b3480156107bd57600080fd5b506102d860095481565b3480156107d357600080fd5b506104256107e2366004611fd8565b61114a565b3480156107f357600080fd5b506102d8600a5481565b60606004805461080c906120cd565b80601f0160208091040260200160405190810160405280929190818152602001828054610838906120cd565b80156108855780601f1061085a57610100808354040283529160200191610885565b820191906000526020600020905b81548152906001019060200180831161086857829003601f168201915b5050505050905090565b600061089c3384846111e5565b5060015b92915050565b60006108b3848484611309565b6001600160a01b03841660009081526002602090815260408083203384529091529020548281101561093d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61094a85338584036111e5565b60019150505b9392505050565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161089c91859061098e90869061211d565b6111e5565b6000546001600160a01b031633146109bd5760405162461bcd60e51b815260040161093490612130565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114610a0a576040519150601f19603f3d011682016040523d82523d6000602084013e610a0f565b606091505b5050905080610a1d57600080fd5b5050565b6000546001600160a01b03163314610a4b5760405162461bcd60e51b815260040161093490612130565b600f829055600e919091556011819055601055565b6000546001600160a01b03163314610a8a5760405162461bcd60e51b815260040161093490612130565b610a9460006118ef565b565b600080546001600160a01b03163314610ac15760405162461bcd60e51b815260040161093490612130565b50600c805460ff19169055600190565b6000546001600160a01b03163314610afb5760405162461bcd60e51b815260040161093490612130565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610b505760405162461bcd60e51b815260040161093490612130565b6007546040516001600160a01b03918216918316907fa982575859d7ad2f390dc12b23f7dab8bbda047f9d0140ac68344b27bf34bfb490600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610bd75760405162461bcd60e51b815260040161093490612130565b6001600160a01b038216610c2d5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610934565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610c74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c989190612165565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303816000875af1158015610ceb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0f919061217e565b50505050565b6000546001600160a01b03163314610d3f5760405162461bcd60e51b815260040161093490612130565b600c805462ffff00191662010100179055565b60606005805461080c906120cd565b6000546001600160a01b03163314610d8b5760405162461bcd60e51b815260040161093490612130565b6006546001600160a01b03610100909104811690831603610e145760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610934565b610a1d828261193f565b6000546001600160a01b03163314610e485760405162461bcd60e51b815260040161093490612130565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ea6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eca919061219b565b6001600160a01b031663c9c65396307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5b919061219b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610fa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcc919061219b565b60068054610100600160a81b0319166101006001600160a01b039384168102919091179182905561100192910416600161193f565b30600090815260016020526040902054610a949047611993565b3360009081526002602090815260408083206001600160a01b03861684529091528120548281101561109d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610934565b6110aa33858584036111e5565b5060019392505050565b600061089c338484611309565b6000546001600160a01b031633146110eb5760405162461bcd60e51b815260040161093490612130565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6000546001600160a01b031633146111745760405162461bcd60e51b815260040161093490612130565b6001600160a01b0381166111d95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610934565b6111e2816118ef565b50565b6001600160a01b0383166112475760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610934565b6001600160a01b0382166112a85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610934565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661136d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610934565b6001600160a01b0382166113cf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610934565b6000811161141f5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964207472616e7366657220616d6f756e740000000000000000006044820152606401610934565b600c5460ff16156117a5576000546001600160a01b0384811691161480159061145657506000546001600160a01b03838116911614155b801561146a57506001600160a01b03821615155b80156114805750600654600160a81b900460ff16155b156117a557600c54610100900460ff16611518576001600160a01b03831660009081526014602052604090205460ff16806114d357506001600160a01b03821660009081526014602052604090205460ff165b6115185760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610934565b6001600160a01b03831660009081526015602052604090205460ff16801561155957506001600160a01b03821660009081526014602052604090205460ff16155b1561163d576008548111156115ce5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610934565b600a546001600160a01b0383166000908152600160205260409020546115f4908361211d565b11156116385760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610934565b6117a5565b6001600160a01b03821660009081526015602052604090205460ff16801561167e57506001600160a01b03831660009081526014602052604090205460ff16155b156116f4576008548111156116385760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610934565b6001600160a01b03821660009081526014602052604090205460ff1615801561173657506001600160a01b03821660009081526015602052604090205460ff16155b156117a557600a546001600160a01b038316600090815260016020526040902054611761908361211d565b11156117a55760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610934565b600954811080159081906117c15750600c5462010000900460ff165b80156117d75750600654600160a81b900460ff16155b80156117fb57506001600160a01b03831660009081526015602052604090205460ff165b801561182057506001600160a01b03841660009081526013602052604090205460ff16155b1561182d5761182d611a99565b600061183a858585611b12565b6001600160a01b0386166000908152600160205260408120805492935085929091906118679084906121b8565b90915550506001600160a01b0384166000908152600160205260408120805483929061189490849061211d565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118e091815260200190565b60405180910390a35050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216600081815260156020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6119be307f0000000000000000000000000000000000000000000000000000000000000000846111e5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d719823085600080611a056000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611a6d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a9291906121cb565b5050505050565b30600090815260016020526040902054600b54811115611ab85750600b545b6009548190811115611acd57611acd81611d69565b600060128190556007546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015611b0d573d6000803e3d6000fd5b505050565b6007546001600160a01b0384811660009081526013602052604081205490928492169060ff16158015611b5e57506001600160a01b03851660009081526013602052604090205460ff16155b15611d31576000546001600160a01b0387811691161480611b8c57506000546001600160a01b038681169116145b80611b9f57506001600160a01b03861630145b80611bb257506001600160a01b03851630145b15611bc05760009150611cb3565b6001600160a01b03851660009081526015602052604090205460ff1615611c4a57606460105485611bf191906121f9565b611bfb9190612210565b9150600082118015611c0f57506000601054115b15611c4557601054601154611c2490846121f9565b611c2e9190612210565b60126000828254611c3f919061211d565b90915550505b611cb3565b6001600160a01b03861660009081526015602052604090205460ff1615611cae576064600e5485611c7b91906121f9565b611c859190612210565b9150600082118015611c9957506000600e54115b15611c4557600e54600f54611c2490846121f9565b600091505b8115611d1e573060009081526001602052604081208054849290611cd890849061211d565b909155505060405182815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b611d2882856121b8565b92505050610950565b6001600160a01b03811660009081526001602052604081208054849290611d5990849061211d565b9091555084935061095092505050565b6006805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611db157611db1612232565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e53919061219b565b81600181518110611e6657611e66612232565b60200260200101906001600160a01b031690816001600160a01b031681525050611eb1307f0000000000000000000000000000000000000000000000000000000000000000846111e5565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611f06908590600090869030904290600401612248565b600060405180830381600087803b158015611f2057600080fd5b505af1158015611f34573d6000803e3d6000fd5b50506006805460ff60a81b1916905550505050565b600060208083528351808285015260005b81811015611f7657858101830151858201604001528201611f5a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146111e257600080fd5b60008060408385031215611fbf57600080fd5b8235611fca81611f97565b946020939093013593505050565b600060208284031215611fea57600080fd5b813561095081611f97565b60008060006060848603121561200a57600080fd5b833561201581611f97565b9250602084013561202581611f97565b929592945050506040919091013590565b6000806040838503121561204957600080fd5b50508035926020909101359150565b80151581146111e257600080fd5b6000806040838503121561207957600080fd5b823561208481611f97565b9150602083013561209481612058565b809150509250929050565b600080604083850312156120b257600080fd5b82356120bd81611f97565b9150602083013561209481611f97565b600181811c908216806120e157607f821691505b60208210810361210157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156108a0576108a0612107565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561217757600080fd5b5051919050565b60006020828403121561219057600080fd5b815161095081612058565b6000602082840312156121ad57600080fd5b815161095081611f97565b818103818111156108a0576108a0612107565b6000806000606084860312156121e057600080fd5b8351925060208401519150604084015190509250925092565b80820281158282048414176108a0576108a0612107565b60008261222d57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122985784516001600160a01b031683529383019391830191600101612273565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220f441db857a23d833cc499693eef083aa36a8b6421b803ae8cf4cc3e548de007e64736f6c634300081300334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x6080604052600436106102605760003560e01c80637571336a11610144578063bbc0c742116100b6578063dbac26e91161007a578063dbac26e91461070b578063dd62ed3e1461073b578063e0bf7fd114610781578063e2f45605146107b1578063f2fde38b146107c7578063f8b45b05146107e757600080fd5b8063bbc0c7421461068a578063c0246668146106a9578063c8c8ebe4146106c9578063cc2ffe7c146106df578063d85ba063146106f557600080fd5b806395d89b411161010857806395d89b41146105d05780639a7a23d6146105e55780639e78fb4f14610605578063a457c2d71461061a578063a9059cbb1461063a578063b62496f51461065a57600080fd5b80637571336a1461053d578063809d458d1461055d5780638993be681461057d5780638a8c523c1461059d5780638da5cb5b146105b257600080fd5b80634a62bb65116101dd5780636db79437116101a15780636db79437146104695780636ddd17131461048957806370a08231146104a9578063715018a6146104df578063735de9f7146104f4578063751039fc1461052857600080fd5b80634a62bb65146103eb5780634d036434146104055780635c068a8c146104275780636a486a8e1461043d5780636b2fb1241461045357600080fd5b80632f2dae7f116102245780632f2dae7f14610336578063313ce5671461034c578063395093511461036e5780634626402b1461038e57806349bd5a5e146103c657600080fd5b806306fdde031461026c578063095ea7b31461029757806318160ddd146102c7578063222a5db6146102e657806323b872dd1461031657600080fd5b3661026757005b600080fd5b34801561027857600080fd5b506102816107fd565b60405161028e9190611f49565b60405180910390f35b3480156102a357600080fd5b506102b76102b2366004611fac565b61088f565b604051901515815260200161028e565b3480156102d357600080fd5b506003545b60405190815260200161028e565b3480156102f257600080fd5b506102b7610301366004611fd8565b60146020526000908152604090205460ff1681565b34801561032257600080fd5b506102b7610331366004611ff5565b6108a6565b34801561034257600080fd5b506102d8600b5481565b34801561035857600080fd5b5060065460405160ff909116815260200161028e565b34801561037a57600080fd5b506102b7610389366004611fac565b610957565b34801561039a57600080fd5b506007546103ae906001600160a01b031681565b6040516001600160a01b03909116815260200161028e565b3480156103d257600080fd5b506006546103ae9061010090046001600160a01b031681565b3480156103f757600080fd5b50600c546102b79060ff1681565b34801561041157600080fd5b50610425610420366004611fd8565b610993565b005b34801561043357600080fd5b506102d8600f5481565b34801561044957600080fd5b506102d860105481565b34801561045f57600080fd5b506102d860115481565b34801561047557600080fd5b50610425610484366004612036565b610a21565b34801561049557600080fd5b50600c546102b79062010000900460ff1681565b3480156104b557600080fd5b506102d86104c4366004611fd8565b6001600160a01b031660009081526001602052604090205490565b3480156104eb57600080fd5b50610425610a60565b34801561050057600080fd5b506103ae7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561053457600080fd5b506102b7610a96565b34801561054957600080fd5b50610425610558366004612066565b610ad1565b34801561056957600080fd5b50610425610578366004611fd8565b610b26565b34801561058957600080fd5b5061042561059836600461209f565b610bad565b3480156105a957600080fd5b50610425610d15565b3480156105be57600080fd5b506000546001600160a01b03166103ae565b3480156105dc57600080fd5b50610281610d52565b3480156105f157600080fd5b50610425610600366004612066565b610d61565b34801561061157600080fd5b50610425610e1e565b34801561062657600080fd5b506102b7610635366004611fac565b61101b565b34801561064657600080fd5b506102b7610655366004611fac565b6110b4565b34801561066657600080fd5b506102b7610675366004611fd8565b60156020526000908152604090205460ff1681565b34801561069657600080fd5b50600c546102b790610100900460ff1681565b3480156106b557600080fd5b506104256106c4366004612066565b6110c1565b3480156106d557600080fd5b506102d860085481565b3480156106eb57600080fd5b506102d860125481565b34801561070157600080fd5b506102d8600e5481565b34801561071757600080fd5b506102b7610726366004611fd8565b600d6020526000908152604090205460ff1681565b34801561074757600080fd5b506102d861075636600461209f565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561078d57600080fd5b506102b761079c366004611fd8565b60136020526000908152604090205460ff1681565b3480156107bd57600080fd5b506102d860095481565b3480156107d357600080fd5b506104256107e2366004611fd8565b61114a565b3480156107f357600080fd5b506102d8600a5481565b60606004805461080c906120cd565b80601f0160208091040260200160405190810160405280929190818152602001828054610838906120cd565b80156108855780601f1061085a57610100808354040283529160200191610885565b820191906000526020600020905b81548152906001019060200180831161086857829003601f168201915b5050505050905090565b600061089c3384846111e5565b5060015b92915050565b60006108b3848484611309565b6001600160a01b03841660009081526002602090815260408083203384529091529020548281101561093d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61094a85338584036111e5565b60019150505b9392505050565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161089c91859061098e90869061211d565b6111e5565b6000546001600160a01b031633146109bd5760405162461bcd60e51b815260040161093490612130565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114610a0a576040519150601f19603f3d011682016040523d82523d6000602084013e610a0f565b606091505b5050905080610a1d57600080fd5b5050565b6000546001600160a01b03163314610a4b5760405162461bcd60e51b815260040161093490612130565b600f829055600e919091556011819055601055565b6000546001600160a01b03163314610a8a5760405162461bcd60e51b815260040161093490612130565b610a9460006118ef565b565b600080546001600160a01b03163314610ac15760405162461bcd60e51b815260040161093490612130565b50600c805460ff19169055600190565b6000546001600160a01b03163314610afb5760405162461bcd60e51b815260040161093490612130565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610b505760405162461bcd60e51b815260040161093490612130565b6007546040516001600160a01b03918216918316907fa982575859d7ad2f390dc12b23f7dab8bbda047f9d0140ac68344b27bf34bfb490600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610bd75760405162461bcd60e51b815260040161093490612130565b6001600160a01b038216610c2d5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610934565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610c74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c989190612165565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb906044016020604051808303816000875af1158015610ceb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0f919061217e565b50505050565b6000546001600160a01b03163314610d3f5760405162461bcd60e51b815260040161093490612130565b600c805462ffff00191662010100179055565b60606005805461080c906120cd565b6000546001600160a01b03163314610d8b5760405162461bcd60e51b815260040161093490612130565b6006546001600160a01b03610100909104811690831603610e145760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610934565b610a1d828261193f565b6000546001600160a01b03163314610e485760405162461bcd60e51b815260040161093490612130565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ea6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eca919061219b565b6001600160a01b031663c9c65396307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5b919061219b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610fa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcc919061219b565b60068054610100600160a81b0319166101006001600160a01b039384168102919091179182905561100192910416600161193f565b30600090815260016020526040902054610a949047611993565b3360009081526002602090815260408083206001600160a01b03861684529091528120548281101561109d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610934565b6110aa33858584036111e5565b5060019392505050565b600061089c338484611309565b6000546001600160a01b031633146110eb5760405162461bcd60e51b815260040161093490612130565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6000546001600160a01b031633146111745760405162461bcd60e51b815260040161093490612130565b6001600160a01b0381166111d95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610934565b6111e2816118ef565b50565b6001600160a01b0383166112475760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610934565b6001600160a01b0382166112a85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610934565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661136d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610934565b6001600160a01b0382166113cf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610934565b6000811161141f5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964207472616e7366657220616d6f756e740000000000000000006044820152606401610934565b600c5460ff16156117a5576000546001600160a01b0384811691161480159061145657506000546001600160a01b03838116911614155b801561146a57506001600160a01b03821615155b80156114805750600654600160a81b900460ff16155b156117a557600c54610100900460ff16611518576001600160a01b03831660009081526014602052604090205460ff16806114d357506001600160a01b03821660009081526014602052604090205460ff165b6115185760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610934565b6001600160a01b03831660009081526015602052604090205460ff16801561155957506001600160a01b03821660009081526014602052604090205460ff16155b1561163d576008548111156115ce5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610934565b600a546001600160a01b0383166000908152600160205260409020546115f4908361211d565b11156116385760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610934565b6117a5565b6001600160a01b03821660009081526015602052604090205460ff16801561167e57506001600160a01b03831660009081526014602052604090205460ff16155b156116f4576008548111156116385760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610934565b6001600160a01b03821660009081526014602052604090205460ff1615801561173657506001600160a01b03821660009081526015602052604090205460ff16155b156117a557600a546001600160a01b038316600090815260016020526040902054611761908361211d565b11156117a55760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610934565b600954811080159081906117c15750600c5462010000900460ff165b80156117d75750600654600160a81b900460ff16155b80156117fb57506001600160a01b03831660009081526015602052604090205460ff165b801561182057506001600160a01b03841660009081526013602052604090205460ff16155b1561182d5761182d611a99565b600061183a858585611b12565b6001600160a01b0386166000908152600160205260408120805492935085929091906118679084906121b8565b90915550506001600160a01b0384166000908152600160205260408120805483929061189490849061211d565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118e091815260200190565b60405180910390a35050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216600081815260156020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6119be307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846111e5565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d719823085600080611a056000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611a6d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a9291906121cb565b5050505050565b30600090815260016020526040902054600b54811115611ab85750600b545b6009548190811115611acd57611acd81611d69565b600060128190556007546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015611b0d573d6000803e3d6000fd5b505050565b6007546001600160a01b0384811660009081526013602052604081205490928492169060ff16158015611b5e57506001600160a01b03851660009081526013602052604090205460ff16155b15611d31576000546001600160a01b0387811691161480611b8c57506000546001600160a01b038681169116145b80611b9f57506001600160a01b03861630145b80611bb257506001600160a01b03851630145b15611bc05760009150611cb3565b6001600160a01b03851660009081526015602052604090205460ff1615611c4a57606460105485611bf191906121f9565b611bfb9190612210565b9150600082118015611c0f57506000601054115b15611c4557601054601154611c2490846121f9565b611c2e9190612210565b60126000828254611c3f919061211d565b90915550505b611cb3565b6001600160a01b03861660009081526015602052604090205460ff1615611cae576064600e5485611c7b91906121f9565b611c859190612210565b9150600082118015611c9957506000600e54115b15611c4557600e54600f54611c2490846121f9565b600091505b8115611d1e573060009081526001602052604081208054849290611cd890849061211d565b909155505060405182815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b611d2882856121b8565b92505050610950565b6001600160a01b03811660009081526001602052604081208054849290611d5990849061211d565b9091555084935061095092505050565b6006805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611db157611db1612232565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e53919061219b565b81600181518110611e6657611e66612232565b60200260200101906001600160a01b031690816001600160a01b031681525050611eb1307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846111e5565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611f06908590600090869030904290600401612248565b600060405180830381600087803b158015611f2057600080fd5b505af1158015611f34573d6000803e3d6000fd5b50506006805460ff60a81b1916905550505050565b600060208083528351808285015260005b81811015611f7657858101830151858201604001528201611f5a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146111e257600080fd5b60008060408385031215611fbf57600080fd5b8235611fca81611f97565b946020939093013593505050565b600060208284031215611fea57600080fd5b813561095081611f97565b60008060006060848603121561200a57600080fd5b833561201581611f97565b9250602084013561202581611f97565b929592945050506040919091013590565b6000806040838503121561204957600080fd5b50508035926020909101359150565b80151581146111e257600080fd5b6000806040838503121561207957600080fd5b823561208481611f97565b9150602083013561209481612058565b809150509250929050565b600080604083850312156120b257600080fd5b82356120bd81611f97565b9150602083013561209481611f97565b600181811c908216806120e157607f821691505b60208210810361210157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156108a0576108a0612107565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561217757600080fd5b5051919050565b60006020828403121561219057600080fd5b815161095081612058565b6000602082840312156121ad57600080fd5b815161095081611f97565b818103818111156108a0576108a0612107565b6000806000606084860312156121e057600080fd5b8351925060208401519150604084015190509250925092565b80820281158282048414176108a0576108a0612107565b60008261222d57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122985784516001600160a01b031683529383019391830191600101612273565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220f441db857a23d833cc499693eef083aa36a8b6421b803ae8cf4cc3e548de007e64736f6c63430008130033

Deployed Bytecode Sourcemap

3167:13121:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5620:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6513:193;;;;;;;;;;-1:-1:-1;6513:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6513:193:0;1023:187:1;5897:91:0;;;;;;;;;;-1:-1:-1;5968:12:0;;5897:91;;;1361:25:1;;;1349:2;1334:18;5897:91:0;1215:177:1;4221:54:0;;;;;;;;;;-1:-1:-1;4221:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6714:521;;;;;;;;;;-1:-1:-1;6714:521:0;;;;;:::i;:::-;;:::i;3768:27::-;;;;;;;;;;;;;;;;5806:83;;;;;;;;;;-1:-1:-1;5872:9:0;;5806:83;;5872:9;;;;2252:36:1;;2240:2;2225:18;5806:83:0;2110:184:1;7243:280:0;;;;;;;;;;-1:-1:-1;7243:280:0;;;;;:::i;:::-;;:::i;3617:29::-;;;;;;;;;;-1:-1:-1;3617:29:0;;;;-1:-1:-1;;;;;3617:29:0;;;;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;3617:29:0;2299:203:1;3550:28:0;;;;;;;;;;-1:-1:-1;3550:28:0;;;;;;;-1:-1:-1;;;;;3550:28:0;;;3804:33;;;;;;;;;;-1:-1:-1;3804:33:0;;;;;;;;16126:159;;;;;;;;;;-1:-1:-1;16126:159:0;;;;;:::i;:::-;;:::i;:::-;;4010:29;;;;;;;;;;;;;;;;4048:28;;;;;;;;;;;;;;;;4083:30;;;;;;;;;;;;;;;;9155:293;;;;;;;;;;-1:-1:-1;9155:293:0;;;;;:::i;:::-;;:::i;3884:31::-;;;;;;;;;;-1:-1:-1;3884:31:0;;;;;;;;;;;5996:110;;;;;;;;;;-1:-1:-1;5996:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;6080:18:0;6053:7;6080:18;;;:9;:18;;;;;;;5996:110;2612:103;;;;;;;;;;;;;:::i;3494:49::-;;;;;;;;;;;;;;;8860:121;;;;;;;;;;;;;:::i;8989:158::-;;;;;;;;;;-1:-1:-1;8989:158:0;;;;;:::i;:::-;;:::i;10154:177::-;;;;;;;;;;-1:-1:-1;10154:177:0;;;;;:::i;:::-;;:::i;15842:276::-;;;;;;;;;;-1:-1:-1;15842:276:0;;;;;:::i;:::-;;:::i;8740:112::-;;;;;;;;;;;;;:::i;2389:87::-;;;;;;;;;;-1:-1:-1;2435:7:0;2462:6;-1:-1:-1;;;;;2462:6:0;2389:87;;5711;;;;;;;;;;;;;:::i;9646:304::-;;;;;;;;;;-1:-1:-1;9646:304:0;;;;;:::i;:::-;;:::i;8384:348::-;;;;;;;;;;;;;:::i;7531:465::-;;;;;;;;;;-1:-1:-1;7531:465:0;;;;;:::i;:::-;;:::i;6114:199::-;;;;;;;;;;-1:-1:-1;6114:199:0;;;;;:::i;:::-;;:::i;4284:57::-;;;;;;;;;;-1:-1:-1;4284:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3844:33;;;;;;;;;;-1:-1:-1;3844:33:0;;;;;;;;;;;9456:182;;;;;;;;;;-1:-1:-1;9456:182:0;;;;;:::i;:::-;;:::i;3655:35::-;;;;;;;;;;;;;;;;4122:32;;;;;;;;;;;;;;;;3976:27;;;;;;;;;;;;;;;;3924:43;;;;;;;;;;-1:-1:-1;3924:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6321:184;;;;;;;;;;-1:-1:-1;6321:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;6470:18:0;;;6438:7;6470:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6321:184;4163:51;;;;;;;;;;-1:-1:-1;4163:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3697:33;;;;;;;;;;;;;;;;2723:238;;;;;;;;;;-1:-1:-1;2723:238:0;;;;;:::i;:::-;;:::i;3737:24::-;;;;;;;;;;;;;;;;5620:83;5657:13;5690:5;5683:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5620:83;:::o;6513:193::-;6615:4;6637:39;1990:10;6660:7;6669:6;6637:8;:39::i;:::-;-1:-1:-1;6694:4:0;6513:193;;;;;:::o;6714:521::-;6846:4;6863:36;6873:6;6881:9;6892:6;6863:9;:36::i;:::-;-1:-1:-1;;;;;6939:19:0;;6912:24;6939:19;;;:11;:19;;;;;;;;1990:10;6939:33;;;;;;;;7005:26;;;;6983:116;;;;-1:-1:-1;;;6983:116:0;;4483:2:1;6983:116:0;;;4465:21:1;4522:2;4502:18;;;4495:30;4561:34;4541:18;;;4534:62;-1:-1:-1;;;4612:18:1;;;4605:38;4660:19;;6983:116:0;;;;;;;;;7135:57;7144:6;1990:10;7185:6;7166:16;:25;7135:8;:57::i;:::-;7223:4;7216:11;;;6714:521;;;;;;:::o;7243:280::-;1990:10;7341:4;7435:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7435:34:0;;;;;;;;;;7341:4;;7363:130;;7413:7;;7435:47;;7472:10;;7435:47;:::i;:::-;7363:8;:130::i;16126:159::-;2435:7;2462:6;-1:-1:-1;;;;;2462:6:0;1990:10;2524:23;2516:68;;;;-1:-1:-1;;;2516:68:0;;;;;;;:::i;:::-;16187:12:::1;16205:6;-1:-1:-1::0;;;;;16205:11:0::1;16224:21;16205:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16186:64;;;16269:7;16261:16;;;::::0;::::1;;16175:110;16126:159:::0;:::o;9155:293::-;2435:7;2462:6;-1:-1:-1;;;;;2462:6:0;1990:10;2524:23;2516:68;;;;-1:-1:-1;;;2516:68:0;;;;;;;:::i;:::-;9279:14:::1;:32:::0;;;9322:12:::1;:29:::0;;;;9364:15:::1;:34:::0;;;9409:13:::1;:31:::0;9155:293::o;2612:103::-;2435:7;2462:6;-1:-1:-1;;;;;2462:6:0;1990:10;2524:23;2516:68;;;;-1:-1:-1;;;2516:68:0;;;;;;;:::i;:::-;2677:30:::1;2704:1;2677:18;:30::i;:::-;2612:103::o:0;8860:121::-;8912:4;2462:6;;-1:-1:-1;;;;;2462:6:0;1990:10;2524:23;2516:68;;;;-1:-1:-1;;;2516:68:0;;;;;;;:::i;:::-;-1:-1:-1;8929:14:0::1;:22:::0;;-1:-1:-1;;8929:22:0::1;::::0;;;8860:121;:::o;8989:158::-;2435:7;2462:6;-1:-1:-1;;;;;2462:6:0;1990:10;2524:23;2516:68;;;;-1:-1:-1;;;2516:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9102:30:0;;;::::1;;::::0;;;:22:::1;:30;::::0;;;;:37;;-1:-1:-1;;9102:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8989:158::o;10154:177::-;2435:7;2462:6;-1:-1:-1;;;;;2462:6:0;1990:10;2524:23;2516:68;;;;-1:-1:-1;;;2516:68:0;;;;;;;:::i;:::-;10271:14:::1;::::0;10238:48:::1;::::0;-1:-1:-1;;;;;10271:14:0;;::::1;::::0;10238:48;::::1;::::0;::::1;::::0;10271:14:::1;::::0;10238:48:::1;10297:14;:26:::0;;-1:-1:-1;;;;;;10297:26:0::1;-1:-1:-1::0;;;;;10297:26:0;;;::::1;::::0;;;::::1;::::0;;10154:177::o;15842:276::-;2435:7;2462:6;-1:-1:-1;;;;;2462:6:0;1990:10;2524:23;2516:68;;;;-1:-1:-1;;;2516:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15925:20:0;::::1;15917:59;;;::::0;-1:-1:-1;;;15917:59:0;;5725:2:1;15917:59:0::1;::::0;::::1;5707:21:1::0;5764:2;5744:18;;;5737:30;5803:28;5783:18;;;5776:56;5849:18;;15917:59:0::1;5523:350:1::0;15917:59:0::1;16014:39;::::0;-1:-1:-1;;;16014:39:0;;16047:4:::1;16014:39;::::0;::::1;2445:51:1::0;15987:24:0::1;::::0;-1:-1:-1;;;;;16014:24:0;::::1;::::0;::::1;::::0;2418:18:1;;16014:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16064:46;::::0;-1:-1:-1;;;16064:46:0;;-1:-1:-1;;;;;6259:32:1;;;16064:46:0::1;::::0;::::1;6241:51:1::0;6308:18;;;6301:34;;;15987:66:0;;-1:-1:-1;16064:23:0;;::::1;::::0;::::1;::::0;6214:18:1;;16064:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15906:212;15842:276:::0;;:::o;8740:112::-;2435:7;2462:6;-1:-1:-1;;;;;2462:6:0;1990:10;2524:23;2516:68;;;;-1:-1:-1;;;2516:68:0;;;;;;;:::i;:::-;8795:13:::1;:20:::0;;-1:-1:-1;;8826:18:0;;;;;8740:112::o;5711:87::-;5750:13;5783:7;5776:14;;;;;:::i;9646:304::-;2435:7;2462:6;-1:-1:-1;;;;;2462:6:0;1990:10;2524:23;2516:68;;;;-1:-1:-1;;;2516:68:0;;;;;;;:::i;:::-;9790:13:::1;::::0;-1:-1:-1;;;;;9790:13:0::1;::::0;;::::1;::::0;::::1;9782:21:::0;;::::1;::::0;9760:128:::1;;;::::0;-1:-1:-1;;;9760:128:0;;6798:2:1;9760:128:0::1;::::0;::::1;6780:21:1::0;6837:2;6817:18;;;6810:30;6876:34;6856:18;;;6849:62;6947:27;6927:18;;;6920:55;6992:19;;9760:128:0::1;6596:421:1::0;9760:128:0::1;9901:41;9930:4;9936:5;9901:28;:41::i;8384:348::-:0;2435:7;2462:6;-1:-1:-1;;;;;2462:6:0;1990:10;2524:23;2516:68;;;;-1:-1:-1;;;2516:68:0;;;;;;;:::i;:::-;8470:13:::1;-1:-1:-1::0;;;;;8470:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8452:53:0::1;;8528:4;8548:13;-1:-1:-1::0;;;;;8548:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8452:127;::::0;-1:-1:-1;;;;;;8452:127:0::1;::::0;;;;;;-1:-1:-1;;;;;7508:15:1;;;8452:127:0::1;::::0;::::1;7490:34:1::0;7560:15;;7540:18;;;7533:43;7425:18;;8452:127:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8436:13;:143:::0;;-1:-1:-1;;;;;;8436:143:0::1;;-1:-1:-1::0;;;;;8436:143:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;8592:58:::1;::::0;8629:13;::::1;;-1:-1:-1::0;8592:28:0::1;:58::i;:::-;8694:4;6053:7:::0;6080:18;;;:9;:18;;;;;;8663:61:::1;::::0;8702:21:::1;8663:12;:61::i;7531:465::-:0;1990:10;7634:4;7683:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7683:34:0;;;;;;;;;;7750:35;;;;7728:122;;;;-1:-1:-1;;;7728:122:0;;7789:2:1;7728:122:0;;;7771:21:1;7828:2;7808:18;;;7801:30;7867:34;7847:18;;;7840:62;-1:-1:-1;;;7918:18:1;;;7911:35;7963:19;;7728:122:0;7587:401:1;7728:122:0;7886:67;1990:10;7909:7;7937:15;7918:16;:34;7886:8;:67::i;:::-;-1:-1:-1;7984:4:0;;7531:465;-1:-1:-1;;;7531:465:0:o;6114:199::-;6219:4;6241:42;1990:10;6265:9;6276:6;6241:9;:42::i;9456:182::-;2435:7;2462:6;-1:-1:-1;;;;;2462:6:0;1990:10;2524:23;2516:68;;;;-1:-1:-1;;;2516:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9541:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;9541:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;9596:34;;1163:41:1;;;9596:34:0::1;::::0;1136:18:1;9596:34:0::1;;;;;;;9456:182:::0;;:::o;2723:238::-;2435:7;2462:6;-1:-1:-1;;;;;2462:6:0;1990:10;2524:23;2516:68;;;;-1:-1:-1;;;2516:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2826:22:0;::::1;2804:110;;;::::0;-1:-1:-1;;;2804:110:0;;8195:2:1;2804:110:0::1;::::0;::::1;8177:21:1::0;8234:2;8214:18;;;8207:30;8273:34;8253:18;;;8246:62;-1:-1:-1;;;8324:18:1;;;8317:36;8370:19;;2804:110:0::1;7993:402:1::0;2804:110:0::1;2925:28;2944:8;2925:18;:28::i;:::-;2723:238:::0;:::o;8004:372::-;-1:-1:-1;;;;;8132:19:0;;8124:68;;;;-1:-1:-1;;;8124:68:0;;8602:2:1;8124:68:0;;;8584:21:1;8641:2;8621:18;;;8614:30;8680:34;8660:18;;;8653:62;-1:-1:-1;;;8731:18:1;;;8724:34;8775:19;;8124:68:0;8400:400:1;8124:68:0;-1:-1:-1;;;;;8211:21:0;;8203:68;;;;-1:-1:-1;;;8203:68:0;;9007:2:1;8203:68:0;;;8989:21:1;9046:2;9026:18;;;9019:30;9085:34;9065:18;;;9058:62;-1:-1:-1;;;9136:18:1;;;9129:32;9178:19;;8203:68:0;8805:398:1;8203:68:0;-1:-1:-1;;;;;8284:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8336:32;;1361:25:1;;;8336:32:0;;1334:18:1;8336:32:0;;;;;;;8004:372;;;:::o;10339:2486::-;-1:-1:-1;;;;;10462:18:0;;10454:68;;;;-1:-1:-1;;;10454:68:0;;9410:2:1;10454:68:0;;;9392:21:1;9449:2;9429:18;;;9422:30;9488:34;9468:18;;;9461:62;-1:-1:-1;;;9539:18:1;;;9532:35;9584:19;;10454:68:0;9208:401:1;10454:68:0;-1:-1:-1;;;;;10541:16:0;;10533:64;;;;-1:-1:-1;;;10533:64:0;;9816:2:1;10533:64:0;;;9798:21:1;9855:2;9835:18;;;9828:30;9894:34;9874:18;;;9867:62;-1:-1:-1;;;9945:18:1;;;9938:33;9988:19;;10533:64:0;9614:399:1;10533:64:0;10625:1;10616:6;:10;10608:46;;;;-1:-1:-1;;;10608:46:0;;10220:2:1;10608:46:0;;;10202:21:1;10259:2;10239:18;;;10232:30;10298:25;10278:18;;;10271:53;10341:18;;10608:46:0;10018:347:1;10608:46:0;10671:14;;;;10667:1681;;;2435:7;2462:6;-1:-1:-1;;;;;10724:15:0;;;2462:6;;10724:15;;;;:49;;-1:-1:-1;2435:7:0;2462:6;-1:-1:-1;;;;;10760:13:0;;;2462:6;;10760:13;;10724:49;:86;;;;-1:-1:-1;;;;;;10794:16:0;;;;10724:86;:116;;;;-1:-1:-1;10832:8:0;;-1:-1:-1;;;10832:8:0;;;;10831:9;10724:116;10702:1635;;;10880:13;;;;;;;10875:258;;-1:-1:-1;;;;;10952:28:0;;;;;;:22;:28;;;;;;;;;:87;;-1:-1:-1;;;;;;11013:26:0;;;;;;:22;:26;;;;;;;;10952:87;10918:195;;;;-1:-1:-1;;;10918:195:0;;10572:2:1;10918:195:0;;;10554:21:1;10611:2;10591:18;;;10584:30;-1:-1:-1;;;10630:18:1;;;10623:52;10692:18;;10918:195:0;10370:346:1;10918:195:0;-1:-1:-1;;;;;11179:31:0;;;;;;:25;:31;;;;;;;;:83;;;;-1:-1:-1;;;;;;11236:26:0;;;;;;:22;:26;;;;;;;;11235:27;11179:83;11153:1169;;;11349:20;;11339:6;:30;;11305:169;;;;-1:-1:-1;;;11305:169:0;;10923:2:1;11305:169:0;;;10905:21:1;10962:2;10942:18;;;10935:30;11001:34;10981:18;;;10974:62;-1:-1:-1;;;11052:18:1;;;11045:51;11113:19;;11305:169:0;10721:417:1;11305:169:0;11557:9;;-1:-1:-1;;;;;6080:18:0;;6053:7;6080:18;;;:9;:18;;;;;;11531:22;;:6;:22;:::i;:::-;:35;;11497:140;;;;-1:-1:-1;;;11497:140:0;;11345:2:1;11497:140:0;;;11327:21:1;11384:2;11364:18;;;11357:30;-1:-1:-1;;;11403:18:1;;;11396:49;11462:18;;11497:140:0;11143:343:1;11497:140:0;11153:1169;;;-1:-1:-1;;;;;11689:29:0;;;;;;:25;:29;;;;;;;;:83;;;;-1:-1:-1;;;;;;11744:28:0;;;;;;:22;:28;;;;;;;;11743:29;11689:83;11663:659;;;11859:20;;11849:6;:30;;11815:170;;;;-1:-1:-1;;;11815:170:0;;11693:2:1;11815:170:0;;;11675:21:1;11732:2;11712:18;;;11705:30;11771:34;11751:18;;;11744:62;-1:-1:-1;;;11822:18:1;;;11815:52;11884:19;;11815:170:0;11491:418:1;11663:659:0;-1:-1:-1;;;;;12038:26:0;;;;;;:22;:26;;;;;;;;12037:27;:82;;;;-1:-1:-1;;;;;;12090:29:0;;;;;;:25;:29;;;;;;;;12089:30;12037:82;12011:311;;;12222:9;;-1:-1:-1;;;;;6080:18:0;;6053:7;6080:18;;;:9;:18;;;;;;12196:22;;:6;:22;:::i;:::-;:35;;12162:140;;;;-1:-1:-1;;;12162:140:0;;11345:2:1;12162:140:0;;;11327:21:1;11384:2;11364:18;;;11357:30;-1:-1:-1;;;11403:18:1;;;11396:49;11462:18;;12162:140:0;11143:343:1;12162:140:0;12385:18;;12375:28;;;;;;;12434:35;;-1:-1:-1;12458:11:0;;;;;;;12434:35;:61;;;;-1:-1:-1;12487:8:0;;-1:-1:-1;;;12487:8:0;;;;12486:9;12434:61;:107;;;;-1:-1:-1;;;;;;12512:29:0;;;;;;:25;:29;;;;;;;;12434:107;:150;;;;-1:-1:-1;;;;;;12559:25:0;;;;;;:19;:25;;;;;;;;12558:26;12434:150;12416:217;;;12611:10;:8;:10::i;:::-;12645:17;12665:32;12680:4;12686:2;12690:6;12665:14;:32::i;:::-;-1:-1:-1;;;;;12710:15:0;;;;;;:9;:15;;;;;:25;;12645:52;;-1:-1:-1;12729:6:0;;12710:15;;;:25;;12729:6;;12710:25;:::i;:::-;;;;-1:-1:-1;;;;;;;12746:13:0;;;;;;:9;:13;;;;;:26;;12763:9;;12746:13;:26;;12763:9;;12746:26;:::i;:::-;;;;;;;;12803:2;-1:-1:-1;;;;;12788:29:0;12797:4;-1:-1:-1;;;;;12788:29:0;;12807:9;12788:29;;;;1361:25:1;;1349:2;1334:18;;1215:177;12788:29:0;;;;;;;;10443:2382;;10339:2486;;;:::o;2969:191::-;3043:16;3062:6;;-1:-1:-1;;;;;3079:17:0;;;-1:-1:-1;;;;;;3079:17:0;;;;;;3112:40;;3062:6;;;;;;;3112:40;;3043:16;3112:40;3032:128;2969:191;:::o;9958:188::-;-1:-1:-1;;;;;10041:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;10041:39:0;;;;;;;;;;10098:40;;10041:39;;:31;10098:40;;;9958:188;;:::o;14946:412::-;15027:60;15044:4;15059:13;15075:11;15027:8;:60::i;:::-;15100:13;-1:-1:-1;;;;;15100:29:0;;15137:9;15170:4;15190:11;15216:1;15259;15302:7;2435;2462:6;-1:-1:-1;;;;;2462:6:0;;2389:87;15302:7;15100:250;;;;;;-1:-1:-1;;;;;;15100:250:0;;;-1:-1:-1;;;;;12406:15:1;;;15100:250:0;;;12388:34:1;12438:18;;;12431:34;;;;12481:18;;;12474:34;;;;12524:18;;;12517:34;12588:15;;;12567:19;;;12560:44;15324:15:0;12620:19:1;;;12613:35;12322:19;;15100:250:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14946:412;;:::o;15366:468::-;15449:4;15405:23;6080:18;;;:9;:18;;;;;;15490:12;;15472:30;;15468:93;;;-1:-1:-1;15537:12:0;;15468:93;15655:18;;15602:15;;15634:39;;15630:94;;;15688:36;15705:18;15688:16;:36::i;:::-;15757:1;15737:17;:21;;;15779:14;;15771:55;;-1:-1:-1;;;;;15779:14:0;;;;15804:21;15771:55;;;;;15804:21;;15771:55;15757:1;15771:55;15804:21;15779:14;15771:55;;;;;;;;;;;;;;;;;;;;;15394:440;;15366:468::o;12833:1547::-;13023:14;;-1:-1:-1;;;;;13055:25:0;;;12951:7;13055:25;;;:19;:25;;;;;;12951:7;;12986:6;;13023:14;;13055:25;;13054:26;:54;;;;-1:-1:-1;;;;;;13085:23:0;;;;;;:19;:23;;;;;;;;13084:24;13054:54;13050:1323;;;2435:7;2462:6;-1:-1:-1;;;;;13147:15:0;;;2462:6;;13147:15;;:49;;-1:-1:-1;2435:7:0;2462:6;-1:-1:-1;;;;;13183:13:0;;;2462:6;;13183:13;13147:49;:91;;;-1:-1:-1;;;;;;13217:21:0;;13233:4;13217:21;13147:91;:131;;;-1:-1:-1;;;;;;13259:19:0;;13273:4;13259:19;13147:131;13125:955;;;13320:1;13313:8;;13125:955;;;-1:-1:-1;;;;;13366:29:0;;;;;;:25;:29;;;;;;;;13362:703;;;13457:3;13438:13;;13428:6;:24;;;;:::i;:::-;13427:34;;;;:::i;:::-;13420:41;;13495:1;13488:4;:8;:29;;;;;13516:1;13500:13;;:17;13488:29;13484:179;;;13650:13;;13602:15;;13595:22;;:4;:22;:::i;:::-;13594:69;;;;:::i;:::-;13544:17;;:119;;;;;;;:::i;:::-;;;;-1:-1:-1;;13484:179:0;13362:703;;;-1:-1:-1;;;;;13693:31:0;;;;;;:25;:31;;;;;;;;13689:376;;;13785:3;13767:12;;13757:6;:23;;;;:::i;:::-;13756:33;;;;:::i;:::-;13749:40;;13823:1;13816:4;:8;:28;;;;;13843:1;13828:12;;:16;13816:28;13812:176;;;13976:12;;13929:14;;13922:21;;:4;:21;:::i;13689:376::-;14044:1;14037:8;;13689:376;14100:8;;14096:140;;14147:4;14129:24;;;;:9;:24;;;;;:32;;14157:4;;14129:24;:32;;14157:4;;14129:32;:::i;:::-;;;;-1:-1:-1;;14185:35:0;;1361:25:1;;;14208:4:0;;-1:-1:-1;;;;;14185:35:0;;;;;1349:2:1;1334:18;14185:35:0;;;;;;;14096:140;14259:13;14268:4;14259:6;:13;:::i;:::-;14252:20;;;;;;13050:1323;-1:-1:-1;;;;;14305:20:0;;;;;;:9;:20;;;;;:28;;14329:4;;14305:20;:28;;14329:4;;14305:28;:::i;:::-;;;;-1:-1:-1;14355:6:0;;-1:-1:-1;14348:13:0;;-1:-1:-1;;;14348:13:0;14388:550;14454:8;:15;;-1:-1:-1;;;;14454:15:0;-1:-1:-1;;;14454:15:0;;;14504:16;;;14518:1;14504:16;;;;;;;;-1:-1:-1;;14504:16:0;;;;;;;;;;-1:-1:-1;14504:16:0;14480:40;;14549:4;14531;14536:1;14531:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;14531:23:0;;;-1:-1:-1;;;;;14531:23:0;;;;;14575:13;-1:-1:-1;;;;;14575:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14565:4;14570:1;14565:7;;;;;;;;:::i;:::-;;;;;;:30;-1:-1:-1;;;;;14565:30:0;;;-1:-1:-1;;;;;14565:30:0;;;;;14608:60;14625:4;14640:13;14656:11;14608:8;:60::i;:::-;14681:222;;-1:-1:-1;;;14681:222:0;;-1:-1:-1;;;;;14681:13:0;:64;;;;:222;;14760:11;;14786:1;;14830:4;;14857;;14877:15;;14681:222;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14914:8:0;:16;;-1:-1:-1;;;;14914:16:0;;;-1:-1:-1;;;;14388:550:0: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;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:247::-;1456:6;1509:2;1497:9;1488:7;1484:23;1480:32;1477:52;;;1525:1;1522;1515:12;1477:52;1564:9;1551:23;1583:31;1608:5;1583:31;:::i;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2507:248::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;-1:-1:-1;;2675:23:1;;;2745:2;2730:18;;;2717:32;;-1:-1:-1;2507:248:1:o;2993:118::-;3079:5;3072:13;3065:21;3058:5;3055:32;3045:60;;3101:1;3098;3091:12;3116:382;3181:6;3189;3242:2;3230:9;3221:7;3217:23;3213:32;3210:52;;;3258:1;3255;3248:12;3210:52;3297:9;3284:23;3316:31;3341:5;3316:31;:::i;:::-;3366:5;-1:-1:-1;3423:2:1;3408:18;;3395:32;3436:30;3395:32;3436:30;:::i;:::-;3485:7;3475:17;;;3116:382;;;;;:::o;3503:388::-;3571:6;3579;3632:2;3620:9;3611:7;3607:23;3603:32;3600:52;;;3648:1;3645;3638:12;3600:52;3687:9;3674:23;3706:31;3731:5;3706:31;:::i;:::-;3756:5;-1:-1:-1;3813:2:1;3798:18;;3785:32;3826:33;3785:32;3826:33;:::i;3896:380::-;3975:1;3971:12;;;;4018;;;4039:61;;4093:4;4085:6;4081:17;4071:27;;4039:61;4146:2;4138:6;4135:14;4115:18;4112:38;4109:161;;4192:10;4187:3;4183:20;4180:1;4173:31;4227:4;4224:1;4217:15;4255:4;4252:1;4245:15;4109:161;;3896:380;;;:::o;4690:127::-;4751:10;4746:3;4742:20;4739:1;4732:31;4782:4;4779:1;4772:15;4806:4;4803:1;4796:15;4822:125;4887:9;;;4908:10;;;4905:36;;;4921:18;;:::i;4952:356::-;5154:2;5136:21;;;5173:18;;;5166:30;5232:34;5227:2;5212:18;;5205:62;5299:2;5284:18;;4952:356::o;5878:184::-;5948:6;6001:2;5989:9;5980:7;5976:23;5972:32;5969:52;;;6017:1;6014;6007:12;5969:52;-1:-1:-1;6040:16:1;;5878:184;-1:-1:-1;5878:184:1:o;6346:245::-;6413:6;6466:2;6454:9;6445:7;6441:23;6437:32;6434:52;;;6482:1;6479;6472:12;6434:52;6514:9;6508:16;6533:28;6555:5;6533:28;:::i;7022:251::-;7092:6;7145:2;7133:9;7124:7;7120:23;7116:32;7113:52;;;7161:1;7158;7151:12;7113:52;7193:9;7187:16;7212:31;7237:5;7212:31;:::i;11914:128::-;11981:9;;;12002:11;;;11999:37;;;12016:18;;:::i;12659:306::-;12747:6;12755;12763;12816:2;12804:9;12795:7;12791:23;12787:32;12784:52;;;12832:1;12829;12822:12;12784:52;12861:9;12855:16;12845:26;;12911:2;12900:9;12896:18;12890:25;12880:35;;12955:2;12944:9;12940:18;12934:25;12924:35;;12659:306;;;;;:::o;12970:168::-;13043:9;;;13074;;13091:15;;;13085:22;;13071:37;13061:71;;13112:18;;:::i;13143:217::-;13183:1;13209;13199:132;;13253:10;13248:3;13244:20;13241:1;13234:31;13288:4;13285:1;13278:15;13316:4;13313:1;13306:15;13199:132;-1:-1:-1;13345:9:1;;13143:217::o;13497:127::-;13558:10;13553:3;13549:20;13546:1;13539:31;13589:4;13586:1;13579:15;13613:4;13610:1;13603:15;13629:980;13891:4;13939:3;13928:9;13924:19;13970:6;13959:9;13952:25;13996:2;14034:6;14029:2;14018:9;14014:18;14007:34;14077:3;14072:2;14061:9;14057:18;14050:31;14101:6;14136;14130:13;14167:6;14159;14152:22;14205:3;14194:9;14190:19;14183:26;;14244:2;14236:6;14232:15;14218:29;;14265:1;14275:195;14289:6;14286:1;14283:13;14275:195;;;14354:13;;-1:-1:-1;;;;;14350:39:1;14338:52;;14445:15;;;;14410:12;;;;14386:1;14304:9;14275:195;;;-1:-1:-1;;;;;;;14526:32:1;;;;14521:2;14506:18;;14499:60;-1:-1:-1;;;14590:3:1;14575:19;14568:35;14487:3;13629:980;-1:-1:-1;;;13629:980:1:o

Swarm Source

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