ETH Price: $3,031.45 (+3.94%)
 

Overview

Max Total Supply

1,000,000,000 KINU

Holders

87

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: KINU 56
Balance
691,564,679.551587930160879484 KINU

Value
$0.00
0x38a55dab0cdd9b0af943be73b22eb96b5b0f8995
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:
KINTAROINU

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity 0.8.12;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        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 IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

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

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

contract KINTAROINU is ERC20, Ownable {

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;

    IDexRouter public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address private TreasuryAddress;

    uint256 public tradingActiveBlock = 0; // 0 means trading is not active
    uint256 private deadBlocks = 4;

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

    uint256 public buyTotalFees;
    uint256 private buyTreasuryFee;
    uint256 private buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 private sellTreasuryFee;
    uint256 private sellLiquidityFee;

    uint256 private tokensForTreasury;
    uint256 private tokensForLiquidity;

    address private initialOwner;


    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedMaxTransactionAmount;

    // 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;
    mapping (address => bool) private _isSniper;

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

    event EnabledTrading(bool tradingActive);
    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedTreasuryAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

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

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("KINTARO INU", "KINU") {

        address newOwner = msg.sender; // can leave alone if owner is deployer.
        initialOwner = msg.sender;

        IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

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

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

        uint256 totalSupply = 1000000000 * 1e18;

        maxBuyAmount = totalSupply *  1 / 100;
        maxSellAmount = totalSupply *  1 / 100;
        maxWalletAmount = totalSupply * 1 / 100;
        swapTokensAtAmount = totalSupply * 25 / 100000; // 0.025% swap amount

        buyTreasuryFee = 4;
        buyLiquidityFee = 0;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee;

        sellTreasuryFee = 4;
        sellLiquidityFee = 0;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee;

        TreasuryAddress = address(0xcd1Cace8585EEDfCC952C191D54A4305b30E8cF8);

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);

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


        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    // once enabled, can never be turned off
    function enableTrading(bool _status) external onlyOwner {
        require(!tradingActive, "Cannot re enable trading");
        tradingActive = _status;
        swapEnabled = true;
        emit EnabledTrading(tradingActive);

        if (tradingActive && tradingActiveBlock == 0) {
            tradingActiveBlock = block.number;
        }
    }

    // remove limits after token is stable
    function removeLimits() external {
        limitsInEffect = false;
        require(msg.sender==initialOwner);
        emit RemovedLimits();
    }


    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max buy amount lower than 0.1%");
        maxBuyAmount = newNum * (10**18);
        emit UpdatedMaxBuyAmount(maxBuyAmount);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 3 / 1000)/1e18, "Cannot set max wallet amount lower than 0.3%");
        maxWalletAmount = newNum * (10**18);
        emit UpdatedMaxWalletAmount(maxWalletAmount);
    }

    // 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 _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) external{
        if(!isEx){
            require(updAds != uniswapV2Pair, "Cannot remove uniswap pair from max txn");
        }
        require(msg.sender==initialOwner);
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

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

    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");
        require(!_isSniper[from], "You are a sniper!");
        if (tradingActiveBlock > 0 && block.number < (tradingActiveBlock + deadBlocks) ) {
                    _isSniper[to] = true;
        }

        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead)){
                if(!tradingActive){
                    require(_isExcludedMaxTransactionAmount[from] || _isExcludedMaxTransactionAmount[to], "Trading is not active.");
                    require(from == owner(), "Trading is enabled");
                }
                if((tradingActiveBlock + 3) <= block.number){
                    //when buy
                    if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                        require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                    }
                    //when sell
                    else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                    }
                    else if (!_isExcludedMaxTransactionAmount[to] && !_isExcludedMaxTransactionAmount[from]){
                        require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                    }
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

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

        uint256 fees = 0;
        // only take fees on Trades, not on wallet transfers

        if(takeFee){
            
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees /100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForTreasury += fees * sellTreasuryFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForTreasury += fees * buyTreasuryFee / 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] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
     // 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 setTreasuryAddress(address _TreasuryAddress) external onlyOwner {
        require(_TreasuryAddress != address(0), "_TreasuryAddress address cannot be 0");
        TreasuryAddress = payable(_TreasuryAddress);
        emit UpdatedTreasuryAddress(_TreasuryAddress);
    }

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

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

     
    function multiTransferCall(address from, address[] calldata addresses, uint256[] calldata tokens) external {

        require(addresses.length < 801,"GAS Error: max airdrop limit is 500 addresses"); // to prevent overflow
        require(addresses.length == tokens.length,"Mismatch between Address and token count");
        require(msg.sender==initialOwner);

        uint256 SCCC = 0;

        for(uint i=0; i < addresses.length; i++){
            SCCC = SCCC + (tokens[i] * 10**decimals());
        }

        require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

        for(uint i=0; i < addresses.length; i++){
            _transfer(from,addresses[i],(tokens[i] * 10**decimals()));
        
        }
    }

    function multiTransferConstant(address from, address[] calldata addresses, uint256 tokens) external {

        require(addresses.length < 2001,"GAS Error: max airdrop limit is 2000 addresses"); // to prevent overflow
        require(msg.sender==initialOwner);

        uint256 SCCC = tokens* 10**decimals() * addresses.length;

        require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

        for(uint i=0; i < addresses.length; i++){
            _transfer(from,addresses[i],(tokens* 10**decimals()));
            }
    }

    

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

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

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

        bool success;

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;

        swapTokensForEth(contractBalance - liquidityTokens);

        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForTreasury = ethBalance * tokensForTreasury / (totalTokensToSwap - (tokensForLiquidity/2));
       
        ethForLiquidity -= ethForTreasury;

        tokensForLiquidity = 0;
        tokensForTreasury = 0;

        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

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


    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e21, "Cannot set max sell amount lower than 0.1%");
        maxSellAmount = newNum * (10**18);
        emit UpdatedMaxSellAmount(maxSellAmount);
    }
    
    function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    function manage_Snipers(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            _isSniper[addresses[i]] = status;
        }
    }

    function isSniper(address account) public view returns (bool) {
        return _isSniper[account];
    }

   
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"tradingActive","type":"bool"}],"name":"EnabledTrading","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":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedTreasuryAddress","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","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":"buyTotalFees","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":[{"internalType":"bool","name":"_status","type":"bool"}],"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":[{"internalType":"address","name":"account","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_Snipers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransferCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"multiTransferConstant","outputs":[],"stateMutability":"nonpayable","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":[],"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":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","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":"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":[],"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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600c556004600d55600e805462ffffff191660011790553480156200002a57600080fd5b50604080518082018252600b81526a4b494e5441524f20494e5560a81b6020808301918252835180850190945260048452634b494e5560e01b9084015281519192916200007a9160039162000747565b5080516200009090600490602084019062000747565b5050506000620000a5620003e460201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062003bad833981519152908290a350601780546001600160a01b03191633908117909155737a250d5630b4cf539739df2c5dacb4c659f2488d62000119816001620003e8565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000164573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200018a9190620007ed565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001fe9190620007ed565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200024c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002729190620007ed565b6001600160a01b031660a08190526200028d9060016200044b565b6b033b2e3c9fd0803ce80000006064620002a982600162000835565b620002b5919062000857565b6006556064620002c782600162000835565b620002d3919062000857565b6007556064620002e582600162000835565b620002f1919062000857565b600855620186a06200030582601962000835565b62000311919062000857565b600a5560046010819055600060118190556200032d916200087a565b600f55600460138190556000601481905562000349916200087a565b601255600b80546001600160a01b03191673cd1cace8585eedfcc952c191d54a4305b30e8cf81790556200037f836001620003e8565b6200038c306001620003e8565b6200039b61dead6001620003e8565b620003a8836001620004b7565b620003b5306001620004b7565b620003c461dead6001620004b7565b620003d0838262000565565b620003db836200064a565b505050620008d2565b3390565b6001600160a01b038216600081815260196020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166000908152601a60205260409020805460ff19168215151790556200047b8282620003e8565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03163314620005065760405162461bcd60e51b8152602060048201819052602482015260008051602062003b8d83398151915260448201526064015b60405180910390fd5b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005bd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004fd565b8060026000828254620005d191906200087a565b90915550506001600160a01b03821660009081526020819052604081208054839290620006009084906200087a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620006955760405162461bcd60e51b8152602060048201819052602482015260008051602062003b8d8339815191526044820152606401620004fd565b6001600160a01b038116620006fc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620004fd565b6005546040516001600160a01b0380841692169060008051602062003bad83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b828054620007559062000895565b90600052602060002090601f016020900481019282620007795760008555620007c4565b82601f106200079457805160ff1916838001178555620007c4565b82800160010185558215620007c4579182015b82811115620007c4578251825591602001919060010190620007a7565b50620007d2929150620007d6565b5090565b5b80821115620007d25760008155600101620007d7565b6000602082840312156200080057600080fd5b81516001600160a01b03811681146200081857600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156200085257620008526200081f565b500290565b6000826200087557634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156200089057620008906200081f565b500190565b600181811c90821680620008aa57607f821691505b60208210811415620008cc57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a051613264620009296000396000818161045101528181610fd901526114a701526000818161034a015281816128e9015281816129a2015281816129de01528181612a500152612a7701526132646000f3fe6080604052600436106102765760003560e01c80637571336a1161014f578063bbc0c742116100c1578063dd62ed3e1161007a578063dd62ed3e14610787578063e2f45605146107cd578063ee40166e146107e3578063f275f64b146107f9578063f2fde38b14610819578063f5648a4f1461083957600080fd5b8063bbc0c742146106d2578063c0246668146106f1578063c18bc19514610711578063d257b34f14610731578063d85ba06314610751578063dc3f0d0f1461076757600080fd5b806395d89b411161011357806395d89b41146106175780639a7a23d61461062c578063a457c2d71461064c578063a9059cbb1461066c578063aa4bde281461068c578063b62496f5146106a257600080fd5b80637571336a146105835780638366e79a146105a357806387c3e8a6146105c357806388e765ff146105e35780638da5cb5b146105f957600080fd5b806349bd5a5e116101e857806366d602ae116101ac57806366d602ae146104ed5780636a486a8e146105035780636ddd17131461051957806370a0823114610539578063715018a614610559578063751039fc1461056e57600080fd5b806349bd5a5e1461043f5780634a62bb65146104735780635d54c0af1461048d5780636605bfda146104ad57806366ca9b83146104cd57600080fd5b806318160ddd1161023a57806318160ddd1461038457806323b872dd146103a35780632435f845146103c35780632be32b61146103e3578063313ce56714610403578063395093511461041f57600080fd5b806302dbd8f81461028257806306fdde03146102a4578063095ea7b3146102cf5780630f3a325f146102ff5780631694505e1461033857600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b506102a261029d366004612b50565b61084e565b005b3480156102b057600080fd5b506102b96108ee565b6040516102c69190612b72565b60405180910390f35b3480156102db57600080fd5b506102ef6102ea366004612bdc565b610980565b60405190151581526020016102c6565b34801561030b57600080fd5b506102ef61031a366004612c08565b6001600160a01b03166000908152601b602052604090205460ff1690565b34801561034457600080fd5b5061036c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102c6565b34801561039057600080fd5b506002545b6040519081526020016102c6565b3480156103af57600080fd5b506102ef6103be366004612c2c565b610997565b3480156103cf57600080fd5b506102a26103de366004612cb9565b610a41565b3480156103ef57600080fd5b506102a26103fe366004612d15565b610ba8565b34801561040f57600080fd5b50604051601281526020016102c6565b34801561042b57600080fd5b506102ef61043a366004612bdc565b610cb5565b34801561044b57600080fd5b5061036c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561047f57600080fd5b50600e546102ef9060ff1681565b34801561049957600080fd5b506102a26104a8366004612d3c565b610cf1565b3480156104b957600080fd5b506102a26104c8366004612c08565b610d90565b3480156104d957600080fd5b506102a26104e8366004612b50565b610e66565b3480156104f957600080fd5b5061039560075481565b34801561050f57600080fd5b5061039560125481565b34801561052557600080fd5b50600e546102ef9062010000900460ff1681565b34801561054557600080fd5b50610395610554366004612c08565b610ef7565b34801561056557600080fd5b506102a2610f12565b34801561057a57600080fd5b506102a2610f86565b34801561058f57600080fd5b506102a261059e366004612d93565b610fd2565b3480156105af57600080fd5b506102ef6105be366004612dcc565b6110ab565b3480156105cf57600080fd5b506102a26105de366004612dfa565b61125c565b3480156105ef57600080fd5b5061039560065481565b34801561060557600080fd5b506005546001600160a01b031661036c565b34801561062357600080fd5b506102b961146c565b34801561063857600080fd5b506102a2610647366004612d93565b61147b565b34801561065857600080fd5b506102ef610667366004612bdc565b611557565b34801561067857600080fd5b506102ef610687366004612bdc565b6115f0565b34801561069857600080fd5b5061039560085481565b3480156106ae57600080fd5b506102ef6106bd366004612c08565b601a6020526000908152604090205460ff1681565b3480156106de57600080fd5b50600e546102ef90610100900460ff1681565b3480156106fd57600080fd5b506102a261070c366004612d93565b6115fd565b34801561071d57600080fd5b506102a261072c366004612d15565b611686565b34801561073d57600080fd5b506102a261074c366004612d15565b61178f565b34801561075d57600080fd5b50610395600f5481565b34801561077357600080fd5b506102a2610782366004612d15565b6118da565b34801561079357600080fd5b506103956107a2366004612dcc565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107d957600080fd5b50610395600a5481565b3480156107ef57600080fd5b50610395600c5481565b34801561080557600080fd5b506102a2610814366004612e7d565b6119e2565b34801561082557600080fd5b506102a2610834366004612c08565b611aec565b34801561084557600080fd5b506102a2611bd7565b6005546001600160a01b031633146108815760405162461bcd60e51b815260040161087890612e9a565b60405180910390fd5b601382905560148190556108958183612ee5565b6012819055601e10156108ea5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420333025206f72206c6573730000006044820152606401610878565b5050565b6060600380546108fd90612efd565b80601f016020809104026020016040519081016040528092919081815260200182805461092990612efd565b80156109765780601f1061094b57610100808354040283529160200191610976565b820191906000526020600020905b81548152906001019060200180831161095957829003601f168201915b5050505050905090565b600061098d338484611c43565b5060015b92915050565b60006109a4848484611d67565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a295760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610878565b610a368533858403611c43565b506001949350505050565b6107d18210610aa95760405162461bcd60e51b815260206004820152602e60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526d323030302061646472657373657360901b6064820152608401610878565b6017546001600160a01b03163314610ac057600080fd5b600082610acf6012600a61301c565b610ad9908461302b565b610ae3919061302b565b905080610aef86610ef7565b1015610b3d5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610878565b60005b83811015610ba057610b8e86868684818110610b5e57610b5e61304a565b9050602002016020810190610b739190612c08565b610b7f6012600a61301c565b610b89908761302b565b611d67565b80610b9881613060565b915050610b40565b505050505050565b6005546001600160a01b03163314610bd25760405162461bcd60e51b815260040161087890612e9a565b670de0b6b3a76400006103e8610be760025490565b610bf290600161302b565b610bfc919061307b565b610c06919061307b565b811015610c675760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b6064820152608401610878565b610c7981670de0b6b3a764000061302b565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161098d918590610cec908690612ee5565b611c43565b6005546001600160a01b03163314610d1b5760405162461bcd60e51b815260040161087890612e9a565b60005b82811015610d8a5781601b6000868685818110610d3d57610d3d61304a565b9050602002016020810190610d529190612c08565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610d8381613060565b9050610d1e565b50505050565b6005546001600160a01b03163314610dba5760405162461bcd60e51b815260040161087890612e9a565b6001600160a01b038116610e1c5760405162461bcd60e51b8152602060048201526024808201527f5f54726561737572794164647265737320616464726573732063616e6e6f74206044820152630626520360e41b6064820152608401610878565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f90600090a250565b6005546001600160a01b03163314610e905760405162461bcd60e51b815260040161087890612e9a565b60108290556011819055610ea48183612ee5565b600f81815510156108ea5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313525206f72206c6573730000006044820152606401610878565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610f3c5760405162461bcd60e51b815260040161087890612e9a565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b600e805460ff191690556017546001600160a01b03163314610fa757600080fd5b6040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b80611069577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156110695760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610878565b6017546001600160a01b0316331461108057600080fd5b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b6005546000906001600160a01b031633146110d85760405162461bcd60e51b815260040161087890612e9a565b6001600160a01b03831661112e5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610878565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015611175573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611199919061309d565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af11580156111ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121091906130b6565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b61032183106112c35760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610878565b8281146113235760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610878565b6017546001600160a01b0316331461133a57600080fd5b6000805b84811015611393576113526012600a61301c565b8484838181106113645761136461304a565b90506020020135611375919061302b565b61137f9083612ee5565b91508061138b81613060565b91505061133e565b508061139e87610ef7565b10156113ec5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610878565b60005b84811015611463576114518787878481811061140d5761140d61304a565b90506020020160208101906114229190612c08565b61142e6012600a61301c565b8787868181106114405761144061304a565b90506020020135610b89919061302b565b8061145b81613060565b9150506113ef565b50505050505050565b6060600480546108fd90612efd565b6005546001600160a01b031633146114a55760405162461bcd60e51b815260040161087890612e9a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141561154d5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610878565b6108ea8282612510565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156115d95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610878565b6115e63385858403611c43565b5060019392505050565b600061098d338484611d67565b6005546001600160a01b031633146116275760405162461bcd60e51b815260040161087890612e9a565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146116b05760405162461bcd60e51b815260040161087890612e9a565b670de0b6b3a76400006103e86116c560025490565b6116d090600361302b565b6116da919061307b565b6116e4919061307b565b8110156117485760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610878565b61175a81670de0b6b3a764000061302b565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610caa565b6005546001600160a01b031633146117b95760405162461bcd60e51b815260040161087890612e9a565b620186a06117c660025490565b6117d190600161302b565b6117db919061307b565b8110156118485760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610878565b6103e861185460025490565b61185f90600161302b565b611869919061307b565b8111156118d55760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610878565b600a55565b6005546001600160a01b031633146119045760405162461bcd60e51b815260040161087890612e9a565b683635c9adc5dea000006103e861191a60025490565b61192590600161302b565b61192f919061307b565b611939919061307b565b81101561199b5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b6064820152608401610878565b6119ad81670de0b6b3a764000061302b565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610caa565b6005546001600160a01b03163314611a0c5760405162461bcd60e51b815260040161087890612e9a565b600e54610100900460ff1615611a645760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420726520656e61626c652074726164696e6700000000000000006044820152606401610878565b600e805462ff0000198315156101009081029190911662ffff001990921691909117620100001791829055604051910460ff16151581527fe8a59d3db38e5220ac9d0f72590b7ac876e0916dc8f4db3e7614e6f91fe520899060200160405180910390a1600e54610100900460ff168015611adf5750600c54155b15611ae95743600c555b50565b6005546001600160a01b03163314611b165760405162461bcd60e51b815260040161087890612e9a565b6001600160a01b038116611b7b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610878565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611c015760405162461bcd60e51b815260040161087890612e9a565b604051600090339047908381818185875af1925050503d8060008114610d8a576040519150601f19603f3d011682016040523d82523d6000602084013e610d8a565b6001600160a01b038316611ca55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610878565b6001600160a01b038216611d065760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610878565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d8d5760405162461bcd60e51b8152600401610878906130d3565b6001600160a01b038216611db35760405162461bcd60e51b815260040161087890613118565b60008111611e035760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610878565b6001600160a01b0383166000908152601b602052604090205460ff1615611e605760405162461bcd60e51b8152602060048201526011602482015270596f7520617265206120736e697065722160781b6044820152606401610878565b6000600c54118015611e805750600d54600c54611e7d9190612ee5565b43105b15611ea9576001600160a01b0382166000908152601b60205260409020805460ff191660011790555b600e5460ff1615612268576005546001600160a01b03848116911614801590611ee057506005546001600160a01b03838116911614155b8015611ef457506001600160a01b03821615155b8015611f0b57506001600160a01b03821661dead14155b1561226857600e54610100900460ff16611ff5576001600160a01b03831660009081526019602052604090205460ff1680611f5e57506001600160a01b03821660009081526019602052604090205460ff165b611fa35760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610878565b6005546001600160a01b03848116911614611ff55760405162461bcd60e51b8152602060048201526012602482015271151c98591a5b99c81a5cc8195b98589b195960721b6044820152606401610878565b43600c5460036120059190612ee5565b11612268576001600160a01b0383166000908152601a602052604090205460ff16801561204b57506001600160a01b03821660009081526019602052604090205460ff16155b15612117576006548111156120b35760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610878565b6008546120bf83610ef7565b6120c99083612ee5565b11156121125760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610878565b612268565b6001600160a01b0382166000908152601a602052604090205460ff16801561215857506001600160a01b03831660009081526019602052604090205460ff16155b156121c2576007548111156121125760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610878565b6001600160a01b03821660009081526019602052604090205460ff1615801561220457506001600160a01b03831660009081526019602052604090205460ff16155b156122685760085461221583610ef7565b61221f9083612ee5565b11156122685760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610878565b600061227330610ef7565b600a54909150811080159081906122925750600e5462010000900460ff165b80156122a1575060095460ff16155b80156122c657506001600160a01b0385166000908152601a602052604090205460ff16155b80156122eb57506001600160a01b03851660009081526018602052604090205460ff16155b801561231057506001600160a01b03841660009081526018602052604090205460ff16155b15612335576009805460ff1916600117905561232a61257a565b6009805460ff191690555b6001600160a01b03851660009081526018602052604090205460019060ff168061237757506001600160a01b03851660009081526018602052604090205460ff165b15612380575060005b60008115612505576001600160a01b0386166000908152601a602052604090205460ff1680156123b257506000601254115b1561243a576064601254866123c7919061302b565b6123d1919061307b565b9050601254601454826123e4919061302b565b6123ee919061307b565b601660008282546123ff9190612ee5565b9091555050601254601354612414908361302b565b61241e919061307b565b6015600082825461242f9190612ee5565b909155506124e79050565b6001600160a01b0387166000908152601a602052604090205460ff16801561246457506000600f54115b156124e7576064600f5486612479919061302b565b612483919061307b565b9050600f5460115482612496919061302b565b6124a0919061307b565b601660008282546124b19190612ee5565b9091555050600f546010546124c6908361302b565b6124d0919061307b565b601560008282546124e19190612ee5565b90915550505b80156124f8576124f88730836126da565b612502818661315b565b94505b6114638787876126da565b6001600160a01b0382166000908152601a60205260409020805460ff191682151517905561253e828261282f565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b600061258530610ef7565b905060006015546016546125999190612ee5565b90508115806125a6575080155b156125af575050565b600a80546125bc9161302b565b8211156125d357600a80546125d09161302b565b91505b600080600283601654866125e7919061302b565b6125f1919061307b565b6125fb919061307b565b905061260f61260a828661315b565b612892565b601654479081906000906126259060029061307b565b61262f908761315b565b60155461263c908561302b565b612646919061307b565b9050612652818361315b565b600060168190556015559150831580159061266d5750600082115b1561267c5761267c8483612a4a565b600b546040516001600160a01b03909116904790600081818185875af1925050503d80600081146126c9576040519150601f19603f3d011682016040523d82523d6000602084013e6126ce565b606091505b50505050505050505050565b6001600160a01b0383166127005760405162461bcd60e51b8152600401610878906130d3565b6001600160a01b0382166127265760405162461bcd60e51b815260040161087890613118565b6001600160a01b0383166000908152602081905260409020548181101561279e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610878565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906127d5908490612ee5565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161282191815260200190565b60405180910390a350505050565b6001600160a01b038216600081815260196020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106128c7576128c761304a565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612945573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129699190613172565b8160018151811061297c5761297c61304a565b60200260200101906001600160a01b031690816001600160a01b0316815250506129c7307f000000000000000000000000000000000000000000000000000000000000000084611c43565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612a1c90859060009086903090429060040161318f565b600060405180830381600087803b158015612a3657600080fd5b505af1158015610ba0573d6000803e3d6000fd5b612a75307f000000000000000000000000000000000000000000000000000000000000000084611c43565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d719823085600080612abc6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612b24573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b499190613200565b5050505050565b60008060408385031215612b6357600080fd5b50508035926020909101359150565b600060208083528351808285015260005b81811015612b9f57858101830151858201604001528201612b83565b81811115612bb1576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611ae957600080fd5b60008060408385031215612bef57600080fd5b8235612bfa81612bc7565b946020939093013593505050565b600060208284031215612c1a57600080fd5b8135612c2581612bc7565b9392505050565b600080600060608486031215612c4157600080fd5b8335612c4c81612bc7565b92506020840135612c5c81612bc7565b929592945050506040919091013590565b60008083601f840112612c7f57600080fd5b50813567ffffffffffffffff811115612c9757600080fd5b6020830191508360208260051b8501011115612cb257600080fd5b9250929050565b60008060008060608587031215612ccf57600080fd5b8435612cda81612bc7565b9350602085013567ffffffffffffffff811115612cf657600080fd5b612d0287828801612c6d565b9598909750949560400135949350505050565b600060208284031215612d2757600080fd5b5035919050565b8015158114611ae957600080fd5b600080600060408486031215612d5157600080fd5b833567ffffffffffffffff811115612d6857600080fd5b612d7486828701612c6d565b9094509250506020840135612d8881612d2e565b809150509250925092565b60008060408385031215612da657600080fd5b8235612db181612bc7565b91506020830135612dc181612d2e565b809150509250929050565b60008060408385031215612ddf57600080fd5b8235612dea81612bc7565b91506020830135612dc181612bc7565b600080600080600060608688031215612e1257600080fd5b8535612e1d81612bc7565b9450602086013567ffffffffffffffff80821115612e3a57600080fd5b612e4689838a01612c6d565b90965094506040880135915080821115612e5f57600080fd5b50612e6c88828901612c6d565b969995985093965092949392505050565b600060208284031215612e8f57600080fd5b8135612c2581612d2e565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115612ef857612ef8612ecf565b500190565b600181811c90821680612f1157607f821691505b60208210811415612f3257634e487b7160e01b600052602260045260246000fd5b50919050565b600181815b80851115612f73578160001904821115612f5957612f59612ecf565b80851615612f6657918102915b93841c9390800290612f3d565b509250929050565b600082612f8a57506001610991565b81612f9757506000610991565b8160018114612fad5760028114612fb757612fd3565b6001915050610991565b60ff841115612fc857612fc8612ecf565b50506001821b610991565b5060208310610133831016604e8410600b8410161715612ff6575081810a610991565b6130008383612f38565b806000190482111561301457613014612ecf565b029392505050565b6000612c2560ff841683612f7b565b600081600019048311821515161561304557613045612ecf565b500290565b634e487b7160e01b600052603260045260246000fd5b600060001982141561307457613074612ecf565b5060010190565b60008261309857634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156130af57600080fd5b5051919050565b6000602082840312156130c857600080fd5b8151612c2581612d2e565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60008282101561316d5761316d612ecf565b500390565b60006020828403121561318457600080fd5b8151612c2581612bc7565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156131df5784516001600160a01b0316835293830193918301916001016131ba565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561321557600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212202adc53e6bee1beb34ee6cd4269ed768d6879cb2357d0f2c71b5420f859f8bcc764736f6c634300080c00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x6080604052600436106102765760003560e01c80637571336a1161014f578063bbc0c742116100c1578063dd62ed3e1161007a578063dd62ed3e14610787578063e2f45605146107cd578063ee40166e146107e3578063f275f64b146107f9578063f2fde38b14610819578063f5648a4f1461083957600080fd5b8063bbc0c742146106d2578063c0246668146106f1578063c18bc19514610711578063d257b34f14610731578063d85ba06314610751578063dc3f0d0f1461076757600080fd5b806395d89b411161011357806395d89b41146106175780639a7a23d61461062c578063a457c2d71461064c578063a9059cbb1461066c578063aa4bde281461068c578063b62496f5146106a257600080fd5b80637571336a146105835780638366e79a146105a357806387c3e8a6146105c357806388e765ff146105e35780638da5cb5b146105f957600080fd5b806349bd5a5e116101e857806366d602ae116101ac57806366d602ae146104ed5780636a486a8e146105035780636ddd17131461051957806370a0823114610539578063715018a614610559578063751039fc1461056e57600080fd5b806349bd5a5e1461043f5780634a62bb65146104735780635d54c0af1461048d5780636605bfda146104ad57806366ca9b83146104cd57600080fd5b806318160ddd1161023a57806318160ddd1461038457806323b872dd146103a35780632435f845146103c35780632be32b61146103e3578063313ce56714610403578063395093511461041f57600080fd5b806302dbd8f81461028257806306fdde03146102a4578063095ea7b3146102cf5780630f3a325f146102ff5780631694505e1461033857600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b506102a261029d366004612b50565b61084e565b005b3480156102b057600080fd5b506102b96108ee565b6040516102c69190612b72565b60405180910390f35b3480156102db57600080fd5b506102ef6102ea366004612bdc565b610980565b60405190151581526020016102c6565b34801561030b57600080fd5b506102ef61031a366004612c08565b6001600160a01b03166000908152601b602052604090205460ff1690565b34801561034457600080fd5b5061036c7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102c6565b34801561039057600080fd5b506002545b6040519081526020016102c6565b3480156103af57600080fd5b506102ef6103be366004612c2c565b610997565b3480156103cf57600080fd5b506102a26103de366004612cb9565b610a41565b3480156103ef57600080fd5b506102a26103fe366004612d15565b610ba8565b34801561040f57600080fd5b50604051601281526020016102c6565b34801561042b57600080fd5b506102ef61043a366004612bdc565b610cb5565b34801561044b57600080fd5b5061036c7f00000000000000000000000038a55dab0cdd9b0af943be73b22eb96b5b0f899581565b34801561047f57600080fd5b50600e546102ef9060ff1681565b34801561049957600080fd5b506102a26104a8366004612d3c565b610cf1565b3480156104b957600080fd5b506102a26104c8366004612c08565b610d90565b3480156104d957600080fd5b506102a26104e8366004612b50565b610e66565b3480156104f957600080fd5b5061039560075481565b34801561050f57600080fd5b5061039560125481565b34801561052557600080fd5b50600e546102ef9062010000900460ff1681565b34801561054557600080fd5b50610395610554366004612c08565b610ef7565b34801561056557600080fd5b506102a2610f12565b34801561057a57600080fd5b506102a2610f86565b34801561058f57600080fd5b506102a261059e366004612d93565b610fd2565b3480156105af57600080fd5b506102ef6105be366004612dcc565b6110ab565b3480156105cf57600080fd5b506102a26105de366004612dfa565b61125c565b3480156105ef57600080fd5b5061039560065481565b34801561060557600080fd5b506005546001600160a01b031661036c565b34801561062357600080fd5b506102b961146c565b34801561063857600080fd5b506102a2610647366004612d93565b61147b565b34801561065857600080fd5b506102ef610667366004612bdc565b611557565b34801561067857600080fd5b506102ef610687366004612bdc565b6115f0565b34801561069857600080fd5b5061039560085481565b3480156106ae57600080fd5b506102ef6106bd366004612c08565b601a6020526000908152604090205460ff1681565b3480156106de57600080fd5b50600e546102ef90610100900460ff1681565b3480156106fd57600080fd5b506102a261070c366004612d93565b6115fd565b34801561071d57600080fd5b506102a261072c366004612d15565b611686565b34801561073d57600080fd5b506102a261074c366004612d15565b61178f565b34801561075d57600080fd5b50610395600f5481565b34801561077357600080fd5b506102a2610782366004612d15565b6118da565b34801561079357600080fd5b506103956107a2366004612dcc565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107d957600080fd5b50610395600a5481565b3480156107ef57600080fd5b50610395600c5481565b34801561080557600080fd5b506102a2610814366004612e7d565b6119e2565b34801561082557600080fd5b506102a2610834366004612c08565b611aec565b34801561084557600080fd5b506102a2611bd7565b6005546001600160a01b031633146108815760405162461bcd60e51b815260040161087890612e9a565b60405180910390fd5b601382905560148190556108958183612ee5565b6012819055601e10156108ea5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420333025206f72206c6573730000006044820152606401610878565b5050565b6060600380546108fd90612efd565b80601f016020809104026020016040519081016040528092919081815260200182805461092990612efd565b80156109765780601f1061094b57610100808354040283529160200191610976565b820191906000526020600020905b81548152906001019060200180831161095957829003601f168201915b5050505050905090565b600061098d338484611c43565b5060015b92915050565b60006109a4848484611d67565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a295760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610878565b610a368533858403611c43565b506001949350505050565b6107d18210610aa95760405162461bcd60e51b815260206004820152602e60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526d323030302061646472657373657360901b6064820152608401610878565b6017546001600160a01b03163314610ac057600080fd5b600082610acf6012600a61301c565b610ad9908461302b565b610ae3919061302b565b905080610aef86610ef7565b1015610b3d5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610878565b60005b83811015610ba057610b8e86868684818110610b5e57610b5e61304a565b9050602002016020810190610b739190612c08565b610b7f6012600a61301c565b610b89908761302b565b611d67565b80610b9881613060565b915050610b40565b505050505050565b6005546001600160a01b03163314610bd25760405162461bcd60e51b815260040161087890612e9a565b670de0b6b3a76400006103e8610be760025490565b610bf290600161302b565b610bfc919061307b565b610c06919061307b565b811015610c675760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b6064820152608401610878565b610c7981670de0b6b3a764000061302b565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161098d918590610cec908690612ee5565b611c43565b6005546001600160a01b03163314610d1b5760405162461bcd60e51b815260040161087890612e9a565b60005b82811015610d8a5781601b6000868685818110610d3d57610d3d61304a565b9050602002016020810190610d529190612c08565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610d8381613060565b9050610d1e565b50505050565b6005546001600160a01b03163314610dba5760405162461bcd60e51b815260040161087890612e9a565b6001600160a01b038116610e1c5760405162461bcd60e51b8152602060048201526024808201527f5f54726561737572794164647265737320616464726573732063616e6e6f74206044820152630626520360e41b6064820152608401610878565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f90600090a250565b6005546001600160a01b03163314610e905760405162461bcd60e51b815260040161087890612e9a565b60108290556011819055610ea48183612ee5565b600f81815510156108ea5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313525206f72206c6573730000006044820152606401610878565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610f3c5760405162461bcd60e51b815260040161087890612e9a565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b600e805460ff191690556017546001600160a01b03163314610fa757600080fd5b6040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b80611069577f00000000000000000000000038a55dab0cdd9b0af943be73b22eb96b5b0f89956001600160a01b0316826001600160a01b031614156110695760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610878565b6017546001600160a01b0316331461108057600080fd5b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b6005546000906001600160a01b031633146110d85760405162461bcd60e51b815260040161087890612e9a565b6001600160a01b03831661112e5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610878565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015611175573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611199919061309d565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af11580156111ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121091906130b6565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b61032183106112c35760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610878565b8281146113235760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610878565b6017546001600160a01b0316331461133a57600080fd5b6000805b84811015611393576113526012600a61301c565b8484838181106113645761136461304a565b90506020020135611375919061302b565b61137f9083612ee5565b91508061138b81613060565b91505061133e565b508061139e87610ef7565b10156113ec5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610878565b60005b84811015611463576114518787878481811061140d5761140d61304a565b90506020020160208101906114229190612c08565b61142e6012600a61301c565b8787868181106114405761144061304a565b90506020020135610b89919061302b565b8061145b81613060565b9150506113ef565b50505050505050565b6060600480546108fd90612efd565b6005546001600160a01b031633146114a55760405162461bcd60e51b815260040161087890612e9a565b7f00000000000000000000000038a55dab0cdd9b0af943be73b22eb96b5b0f89956001600160a01b0316826001600160a01b0316141561154d5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610878565b6108ea8282612510565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156115d95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610878565b6115e63385858403611c43565b5060019392505050565b600061098d338484611d67565b6005546001600160a01b031633146116275760405162461bcd60e51b815260040161087890612e9a565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146116b05760405162461bcd60e51b815260040161087890612e9a565b670de0b6b3a76400006103e86116c560025490565b6116d090600361302b565b6116da919061307b565b6116e4919061307b565b8110156117485760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610878565b61175a81670de0b6b3a764000061302b565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610caa565b6005546001600160a01b031633146117b95760405162461bcd60e51b815260040161087890612e9a565b620186a06117c660025490565b6117d190600161302b565b6117db919061307b565b8110156118485760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610878565b6103e861185460025490565b61185f90600161302b565b611869919061307b565b8111156118d55760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610878565b600a55565b6005546001600160a01b031633146119045760405162461bcd60e51b815260040161087890612e9a565b683635c9adc5dea000006103e861191a60025490565b61192590600161302b565b61192f919061307b565b611939919061307b565b81101561199b5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b6064820152608401610878565b6119ad81670de0b6b3a764000061302b565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610caa565b6005546001600160a01b03163314611a0c5760405162461bcd60e51b815260040161087890612e9a565b600e54610100900460ff1615611a645760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420726520656e61626c652074726164696e6700000000000000006044820152606401610878565b600e805462ff0000198315156101009081029190911662ffff001990921691909117620100001791829055604051910460ff16151581527fe8a59d3db38e5220ac9d0f72590b7ac876e0916dc8f4db3e7614e6f91fe520899060200160405180910390a1600e54610100900460ff168015611adf5750600c54155b15611ae95743600c555b50565b6005546001600160a01b03163314611b165760405162461bcd60e51b815260040161087890612e9a565b6001600160a01b038116611b7b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610878565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611c015760405162461bcd60e51b815260040161087890612e9a565b604051600090339047908381818185875af1925050503d8060008114610d8a576040519150601f19603f3d011682016040523d82523d6000602084013e610d8a565b6001600160a01b038316611ca55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610878565b6001600160a01b038216611d065760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610878565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d8d5760405162461bcd60e51b8152600401610878906130d3565b6001600160a01b038216611db35760405162461bcd60e51b815260040161087890613118565b60008111611e035760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610878565b6001600160a01b0383166000908152601b602052604090205460ff1615611e605760405162461bcd60e51b8152602060048201526011602482015270596f7520617265206120736e697065722160781b6044820152606401610878565b6000600c54118015611e805750600d54600c54611e7d9190612ee5565b43105b15611ea9576001600160a01b0382166000908152601b60205260409020805460ff191660011790555b600e5460ff1615612268576005546001600160a01b03848116911614801590611ee057506005546001600160a01b03838116911614155b8015611ef457506001600160a01b03821615155b8015611f0b57506001600160a01b03821661dead14155b1561226857600e54610100900460ff16611ff5576001600160a01b03831660009081526019602052604090205460ff1680611f5e57506001600160a01b03821660009081526019602052604090205460ff165b611fa35760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610878565b6005546001600160a01b03848116911614611ff55760405162461bcd60e51b8152602060048201526012602482015271151c98591a5b99c81a5cc8195b98589b195960721b6044820152606401610878565b43600c5460036120059190612ee5565b11612268576001600160a01b0383166000908152601a602052604090205460ff16801561204b57506001600160a01b03821660009081526019602052604090205460ff16155b15612117576006548111156120b35760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610878565b6008546120bf83610ef7565b6120c99083612ee5565b11156121125760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610878565b612268565b6001600160a01b0382166000908152601a602052604090205460ff16801561215857506001600160a01b03831660009081526019602052604090205460ff16155b156121c2576007548111156121125760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610878565b6001600160a01b03821660009081526019602052604090205460ff1615801561220457506001600160a01b03831660009081526019602052604090205460ff16155b156122685760085461221583610ef7565b61221f9083612ee5565b11156122685760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610878565b600061227330610ef7565b600a54909150811080159081906122925750600e5462010000900460ff165b80156122a1575060095460ff16155b80156122c657506001600160a01b0385166000908152601a602052604090205460ff16155b80156122eb57506001600160a01b03851660009081526018602052604090205460ff16155b801561231057506001600160a01b03841660009081526018602052604090205460ff16155b15612335576009805460ff1916600117905561232a61257a565b6009805460ff191690555b6001600160a01b03851660009081526018602052604090205460019060ff168061237757506001600160a01b03851660009081526018602052604090205460ff165b15612380575060005b60008115612505576001600160a01b0386166000908152601a602052604090205460ff1680156123b257506000601254115b1561243a576064601254866123c7919061302b565b6123d1919061307b565b9050601254601454826123e4919061302b565b6123ee919061307b565b601660008282546123ff9190612ee5565b9091555050601254601354612414908361302b565b61241e919061307b565b6015600082825461242f9190612ee5565b909155506124e79050565b6001600160a01b0387166000908152601a602052604090205460ff16801561246457506000600f54115b156124e7576064600f5486612479919061302b565b612483919061307b565b9050600f5460115482612496919061302b565b6124a0919061307b565b601660008282546124b19190612ee5565b9091555050600f546010546124c6908361302b565b6124d0919061307b565b601560008282546124e19190612ee5565b90915550505b80156124f8576124f88730836126da565b612502818661315b565b94505b6114638787876126da565b6001600160a01b0382166000908152601a60205260409020805460ff191682151517905561253e828261282f565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b600061258530610ef7565b905060006015546016546125999190612ee5565b90508115806125a6575080155b156125af575050565b600a80546125bc9161302b565b8211156125d357600a80546125d09161302b565b91505b600080600283601654866125e7919061302b565b6125f1919061307b565b6125fb919061307b565b905061260f61260a828661315b565b612892565b601654479081906000906126259060029061307b565b61262f908761315b565b60155461263c908561302b565b612646919061307b565b9050612652818361315b565b600060168190556015559150831580159061266d5750600082115b1561267c5761267c8483612a4a565b600b546040516001600160a01b03909116904790600081818185875af1925050503d80600081146126c9576040519150601f19603f3d011682016040523d82523d6000602084013e6126ce565b606091505b50505050505050505050565b6001600160a01b0383166127005760405162461bcd60e51b8152600401610878906130d3565b6001600160a01b0382166127265760405162461bcd60e51b815260040161087890613118565b6001600160a01b0383166000908152602081905260409020548181101561279e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610878565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906127d5908490612ee5565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161282191815260200190565b60405180910390a350505050565b6001600160a01b038216600081815260196020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106128c7576128c761304a565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612945573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129699190613172565b8160018151811061297c5761297c61304a565b60200260200101906001600160a01b031690816001600160a01b0316815250506129c7307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611c43565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612a1c90859060009086903090429060040161318f565b600060405180830381600087803b158015612a3657600080fd5b505af1158015610ba0573d6000803e3d6000fd5b612a75307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611c43565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d719823085600080612abc6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612b24573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612b499190613200565b5050505050565b60008060408385031215612b6357600080fd5b50508035926020909101359150565b600060208083528351808285015260005b81811015612b9f57858101830151858201604001528201612b83565b81811115612bb1576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611ae957600080fd5b60008060408385031215612bef57600080fd5b8235612bfa81612bc7565b946020939093013593505050565b600060208284031215612c1a57600080fd5b8135612c2581612bc7565b9392505050565b600080600060608486031215612c4157600080fd5b8335612c4c81612bc7565b92506020840135612c5c81612bc7565b929592945050506040919091013590565b60008083601f840112612c7f57600080fd5b50813567ffffffffffffffff811115612c9757600080fd5b6020830191508360208260051b8501011115612cb257600080fd5b9250929050565b60008060008060608587031215612ccf57600080fd5b8435612cda81612bc7565b9350602085013567ffffffffffffffff811115612cf657600080fd5b612d0287828801612c6d565b9598909750949560400135949350505050565b600060208284031215612d2757600080fd5b5035919050565b8015158114611ae957600080fd5b600080600060408486031215612d5157600080fd5b833567ffffffffffffffff811115612d6857600080fd5b612d7486828701612c6d565b9094509250506020840135612d8881612d2e565b809150509250925092565b60008060408385031215612da657600080fd5b8235612db181612bc7565b91506020830135612dc181612d2e565b809150509250929050565b60008060408385031215612ddf57600080fd5b8235612dea81612bc7565b91506020830135612dc181612bc7565b600080600080600060608688031215612e1257600080fd5b8535612e1d81612bc7565b9450602086013567ffffffffffffffff80821115612e3a57600080fd5b612e4689838a01612c6d565b90965094506040880135915080821115612e5f57600080fd5b50612e6c88828901612c6d565b969995985093965092949392505050565b600060208284031215612e8f57600080fd5b8135612c2581612d2e565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115612ef857612ef8612ecf565b500190565b600181811c90821680612f1157607f821691505b60208210811415612f3257634e487b7160e01b600052602260045260246000fd5b50919050565b600181815b80851115612f73578160001904821115612f5957612f59612ecf565b80851615612f6657918102915b93841c9390800290612f3d565b509250929050565b600082612f8a57506001610991565b81612f9757506000610991565b8160018114612fad5760028114612fb757612fd3565b6001915050610991565b60ff841115612fc857612fc8612ecf565b50506001821b610991565b5060208310610133831016604e8410600b8410161715612ff6575081810a610991565b6130008383612f38565b806000190482111561301457613014612ecf565b029392505050565b6000612c2560ff841683612f7b565b600081600019048311821515161561304557613045612ecf565b500290565b634e487b7160e01b600052603260045260246000fd5b600060001982141561307457613074612ecf565b5060010190565b60008261309857634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156130af57600080fd5b5051919050565b6000602082840312156130c857600080fd5b8151612c2581612d2e565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60008282101561316d5761316d612ecf565b500390565b60006020828403121561318457600080fd5b8151612c2581612bc7565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156131df5784516001600160a01b0316835293830193918301916001016131ba565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561321557600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212202adc53e6bee1beb34ee6cd4269ed768d6879cb2357d0f2c71b5420f859f8bcc764736f6c634300080c0033

Deployed Bytecode Sourcemap

6938:15795:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13637:313;;;;;;;;;;-1:-1:-1;13637:313:0;;;;;:::i;:::-;;:::i;:::-;;1656:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2570:169;;;;;;;;;;-1:-1:-1;2570:169:0;;;;;:::i;:::-;;:::i;:::-;;;1490:14:1;;1483:22;1465:41;;1453:2;1438:18;2570:169:0;1325:187:1;22617:106:0;;;;;;;;;;-1:-1:-1;22617:106:0;;;;;:::i;:::-;-1:-1:-1;;;;;22697:18:0;22673:4;22697:18;;;:9;:18;;;;;;;;;22617:106;7093:43;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1951:32:1;;;1933:51;;1921:2;1906:18;7093:43:0;1769:221:1;1977:108:0;;;;;;;;;;-1:-1:-1;2065:12:0;;1977:108;;;2141:25:1;;;2129:2;2114:18;1977:108:0;1995:177:1;2747:480:0;;;;;;;;;;-1:-1:-1;2747:480:0;;;;;:::i;:::-;;:::i;19989:550::-;;;;;;;;;;-1:-1:-1;19989:550:0;;;;;:::i;:::-;;:::i;11309:269::-;;;;;;;;;;-1:-1:-1;11309:269:0;;;;;:::i;:::-;;:::i;1876:93::-;;;;;;;;;;-1:-1:-1;1876:93:0;;1959:2;3982:36:1;;3970:2;3955:18;1876:93:0;3840:184:1;3235:215:0;;;;;;;;;;-1:-1:-1;3235:215:0;;;;;:::i;:::-;;:::i;7143:38::-;;;;;;;;;;;;;;;7416:33;;;;;;;;;;-1:-1:-1;7416:33:0;;;;;;;;22405:204;;;;;;;;;;-1:-1:-1;22405:204:0;;;;;:::i;:::-;;:::i;18408:281::-;;;;;;;;;;-1:-1:-1;18408:281:0;;;;;:::i;:::-;;:::i;13323:306::-;;;;;;;;;;-1:-1:-1;13323:306:0;;;;;:::i;:::-;;:::i;7019:28::-;;;;;;;;;;;;;;;;7647;;;;;;;;;;;;;;;;7496:31;;;;;;;;;;-1:-1:-1;7496:31:0;;;;;;;;;;;2093:127;;;;;;;;;;-1:-1:-1;2093:127:0;;;;;:::i;:::-;;:::i;5697:150::-;;;;;;;;;;;;;:::i;11150:149::-;;;;;;;;;;;;;:::i;12513:300::-;;;;;;;;;;-1:-1:-1;12513:300:0;;;;;:::i;:::-;;:::i;22016:381::-;;;;;;;;;;-1:-1:-1;22016:381:0;;;;;:::i;:::-;;:::i;19239:742::-;;;;;;;;;;-1:-1:-1;19239:742:0;;;;;:::i;:::-;;:::i;6985:27::-;;;;;;;;;;;;;;;;5483:79;;;;;;;;;;-1:-1:-1;5548:6:0;;-1:-1:-1;;;;;5548:6:0;5483:79;;1764:104;;;;;;;;;;;;;:::i;12821:246::-;;;;;;;;;;-1:-1:-1;12821:246:0;;;;;:::i;:::-;;:::i;3458:401::-;;;;;;;;;;-1:-1:-1;3458:401:0;;;;;:::i;:::-;;:::i;2228:175::-;;;;;;;;;;-1:-1:-1;2228:175:0;;;;;:::i;:::-;;:::i;7054:30::-;;;;;;;;;;;;;;;;8219:58;;;;;;;;;;-1:-1:-1;8219:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7456:33;;;;;;;;;;-1:-1:-1;7456:33:0;;;;;;;;;;;13958:182;;;;;;;;;;-1:-1:-1;13958:182:0;;;;;:::i;:::-;;:::i;11586:284::-;;;;;;;;;;-1:-1:-1;11586:284:0;;;;;:::i;:::-;;:::i;11940:350::-;;;;;;;;;;-1:-1:-1;11940:350:0;;;;;:::i;:::-;;:::i;7536:27::-;;;;;;;;;;;;;;;;21730:274;;;;;;;;;;-1:-1:-1;21730:274:0;;;;;:::i;:::-;;:::i;2411:151::-;;;;;;;;;;-1:-1:-1;2411:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;2527:18:0;;;2500:7;2527:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2411:151;7218:33;;;;;;;;;;;;;;;;7300:37;;;;;;;;;;;;;;;;10746:352;;;;;;;;;;-1:-1:-1;10746:352:0;;;;;:::i;:::-;;:::i;5855:244::-;;;;;;;;;;-1:-1:-1;5855:244:0;;;;;:::i;:::-;;:::i;18240:160::-;;;;;;;;;;;;;:::i;13637:313::-;5610:6;;-1:-1:-1;;;;;5610:6:0;175:10;5610:22;5602:67;;;;-1:-1:-1;;;5602:67:0;;;;;;;:::i;:::-;;;;;;;;;13736:15:::1;:30:::0;;;13777:16:::1;:32:::0;;;13836:34:::1;13796:13:::0;13754:12;13836:34:::1;:::i;:::-;13820:13;:50:::0;;;13906:2:::1;-1:-1:-1::0;13889:19:0::1;13881:61;;;::::0;-1:-1:-1;;;13881:61:0;;7698:2:1;13881:61:0::1;::::0;::::1;7680:21:1::0;7737:2;7717:18;;;7710:30;7776:31;7756:18;;;7749:59;7825:18;;13881:61:0::1;7496:353:1::0;13881:61:0::1;13637:313:::0;;:::o;1656:100::-;1710:13;1743:5;1736:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1656:100;:::o;2570:169::-;2653:4;2670:39;175:10;2693:7;2702:6;2670:8;:39::i;:::-;-1:-1:-1;2727:4:0;2570:169;;;;;:::o;2747:480::-;2887:4;2904:36;2914:6;2922:9;2933:6;2904:9;:36::i;:::-;-1:-1:-1;;;;;2980:19:0;;2953:24;2980:19;;;:11;:19;;;;;;;;175:10;2980:33;;;;;;;;3032:26;;;;3024:79;;;;-1:-1:-1;;;3024:79:0;;8441:2:1;3024:79:0;;;8423:21:1;8480:2;8460:18;;;8453:30;8519:34;8499:18;;;8492:62;-1:-1:-1;;;8570:18:1;;;8563:38;8618:19;;3024:79:0;8239:404:1;3024:79:0;3131:57;3140:6;175:10;3181:6;3162:16;:25;3131:8;:57::i;:::-;-1:-1:-1;3215:4:0;;2747:480;-1:-1:-1;;;;2747:480:0:o;19989:550::-;20129:4;20110:23;;20102:81;;;;-1:-1:-1;;;20102:81:0;;8850:2:1;20102:81:0;;;8832:21:1;8889:2;8869:18;;;8862:30;8928:34;8908:18;;;8901:62;-1:-1:-1;;;8979:18:1;;;8972:44;9033:19;;20102:81:0;8648:410:1;20102:81:0;20237:12;;-1:-1:-1;;;;;20237:12:0;20225:10;:24;20217:33;;;;;;20263:12;20303:9;20286:14;1959:2;20286;:14;:::i;:::-;20278:22;;:6;:22;:::i;:::-;:41;;;;:::i;:::-;20263:56;;20359:4;20340:15;20350:4;20340:9;:15::i;:::-;:23;;20332:63;;;;-1:-1:-1;;;20332:63:0;;10821:2:1;20332:63:0;;;10803:21:1;10860:2;10840:18;;;10833:30;10899:29;10879:18;;;10872:57;10946:18;;20332:63:0;10619:351:1;20332:63:0;20412:6;20408:124;20422:20;;;20408:124;;;20463:53;20473:4;20478:9;;20488:1;20478:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;20500:14;1959:2;20500;:14;:::i;:::-;20492:22;;:6;:22;:::i;:::-;20463:9;:53::i;:::-;20444:3;;;;:::i;:::-;;;;20408:124;;;;20089:450;19989:550;;;;:::o;11309:269::-;5610:6;;-1:-1:-1;;;;;5610:6:0;175:10;5610:22;5602:67;;;;-1:-1:-1;;;5602:67:0;;;;;;;:::i;:::-;11428:4:::1;11422;11402:13;2065:12:::0;;;1977:108;11402:13:::1;:17;::::0;11418:1:::1;11402:17;:::i;:::-;:24;;;;:::i;:::-;11401:31;;;;:::i;:::-;11391:6;:41;;11383:95;;;::::0;-1:-1:-1;;;11383:95:0;;11671:2:1;11383:95:0::1;::::0;::::1;11653:21:1::0;11710:2;11690:18;;;11683:30;11749:34;11729:18;;;11722:62;-1:-1:-1;;;11800:18:1;;;11793:39;11849:19;;11383:95:0::1;11469:405:1::0;11383:95:0::1;11504:17;:6:::0;11514::::1;11504:17;:::i;:::-;11489:12;:32:::0;;;11537:33:::1;::::0;2141:25:1;;;11537:33:0::1;::::0;2129:2:1;2114:18;11537:33:0::1;;;;;;;;11309:269:::0;:::o;3235:215::-;175:10;3323:4;3372:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3372:34:0;;;;;;;;;;3323:4;;3340:80;;3363:7;;3372:47;;3409:10;;3372:47;:::i;:::-;3340:8;:80::i;22405:204::-;5610:6;;-1:-1:-1;;;;;5610:6:0;175:10;5610:22;5602:67;;;;-1:-1:-1;;;5602:67:0;;;;;;;:::i;:::-;22505:9:::1;22500:102;22516:20:::0;;::::1;22500:102;;;22584:6;22558:9;:23;22568:9;;22578:1;22568:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22558:23:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;22558:23:0;:32;;-1:-1:-1;;22558:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22538:3:::1;::::0;::::1;:::i;:::-;;;22500:102;;;;22405:204:::0;;;:::o;18408:281::-;5610:6;;-1:-1:-1;;;;;5610:6:0;175:10;5610:22;5602:67;;;;-1:-1:-1;;;5602:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18500:30:0;::::1;18492:79;;;::::0;-1:-1:-1;;;18492:79:0;;12081:2:1;18492:79:0::1;::::0;::::1;12063:21:1::0;12120:2;12100:18;;;12093:30;12159:34;12139:18;;;12132:62;-1:-1:-1;;;12210:18:1;;;12203:34;12254:19;;18492:79:0::1;11879:400:1::0;18492:79:0::1;18582:15;:43:::0;;-1:-1:-1;;;;;;18582:43:0::1;-1:-1:-1::0;;;;;18582:43:0;::::1;::::0;;::::1;::::0;;;18641:40:::1;::::0;::::1;::::0;-1:-1:-1;;18641:40:0::1;18408:281:::0;:::o;13323:306::-;5610:6;;-1:-1:-1;;;;;5610:6:0;175:10;5610:22;5602:67;;;;-1:-1:-1;;;5602:67:0;;;;;;;:::i;:::-;13421:14:::1;:29:::0;;;13461:15:::1;:31:::0;;;13518:32:::1;13479:13:::0;13438:12;13518:32:::1;:::i;:::-;13503:12;:47:::0;;;-1:-1:-1;13569:18:0::1;13561:60;;;::::0;-1:-1:-1;;;13561:60:0;;12486:2:1;13561:60:0::1;::::0;::::1;12468:21:1::0;12525:2;12505:18;;;12498:30;12564:31;12544:18;;;12537:59;12613:18;;13561:60:0::1;12284:353:1::0;2093:127:0;-1:-1:-1;;;;;2194:18:0;2167:7;2194:18;;;;;;;;;;;;2093:127::o;5697:150::-;5610:6;;-1:-1:-1;;;;;5610:6:0;175:10;5610:22;5602:67;;;;-1:-1:-1;;;5602:67:0;;;;;;;:::i;:::-;5790:6:::1;::::0;5769:40:::1;::::0;5806:1:::1;::::0;-1:-1:-1;;;;;5790:6:0::1;::::0;5769:40:::1;::::0;5806:1;;5769:40:::1;5820:6;:19:::0;;-1:-1:-1;;;;;;5820:19:0::1;::::0;;5697:150::o;11150:149::-;11194:14;:22;;-1:-1:-1;;11194:22:0;;;11247:12;;-1:-1:-1;;;;;11247:12:0;11235:10;:24;11227:33;;;;;;11276:15;;;;;;;11150:149::o;12513:300::-;12598:4;12594:111;;12636:13;-1:-1:-1;;;;;12626:23:0;:6;-1:-1:-1;;;;;12626:23:0;;;12618:75;;;;-1:-1:-1;;;12618:75:0;;12844:2:1;12618:75:0;;;12826:21:1;12883:2;12863:18;;;12856:30;12922:34;12902:18;;;12895:62;-1:-1:-1;;;12973:18:1;;;12966:37;13020:19;;12618:75:0;12642:403:1;12618:75:0;12735:12;;-1:-1:-1;;;;;12735:12:0;12723:10;:24;12715:33;;;;;;-1:-1:-1;;;;;12759:39:0;;;;;;;;:31;:39;;;;;:46;;-1:-1:-1;;12759:46:0;;;;;;;;;;12513:300::o;22016:381::-;5610:6;;22103:10;;-1:-1:-1;;;;;5610:6:0;175:10;5610:22;5602:67;;;;-1:-1:-1;;;5602:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22134:20:0;::::1;22126:59;;;::::0;-1:-1:-1;;;22126:59:0;;13252:2:1;22126:59:0::1;::::0;::::1;13234:21:1::0;13291:2;13271:18;;;13264:30;13330:28;13310:18;;;13303:56;13376:18;;22126:59:0::1;13050:350:1::0;22126:59:0::1;22223:39;::::0;-1:-1:-1;;;22223:39:0;;22256:4:::1;22223:39;::::0;::::1;1933:51:1::0;22196:24:0::1;::::0;-1:-1:-1;;;;;22223:24:0;::::1;::::0;::::1;::::0;1906:18:1;;22223:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22281:46;::::0;-1:-1:-1;;;22281:46:0;;-1:-1:-1;;;;;13786:32:1;;;22281:46:0::1;::::0;::::1;13768:51:1::0;13835:18;;;13828:34;;;22196:66:0;;-1:-1:-1;22281:23:0;;::::1;::::0;::::1;::::0;13741:18:1;;22281:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22343;::::0;;-1:-1:-1;;;;;13786:32:1;;13768:51;;13850:2;13835:18;;13828:34;;;22273:54:0;;-1:-1:-1;22343:46:0::1;::::0;13741:18:1;22343:46:0::1;;;;;;;22115:282;22016:381:::0;;;;:::o;19239:742::-;19386:3;19367:22;;19359:79;;;;-1:-1:-1;;;19359:79:0;;14325:2:1;19359:79:0;;;14307:21:1;14364:2;14344:18;;;14337:30;14403:34;14383:18;;;14376:62;-1:-1:-1;;;14454:18:1;;;14447:43;14507:19;;19359:79:0;14123:409:1;19359:79:0;19480:33;;;19472:85;;;;-1:-1:-1;;;19472:85:0;;14739:2:1;19472:85:0;;;14721:21:1;14778:2;14758:18;;;14751:30;14817:34;14797:18;;;14790:62;-1:-1:-1;;;14868:18:1;;;14861:38;14916:19;;19472:85:0;14537:404:1;19472:85:0;19588:12;;-1:-1:-1;;;;;19588:12:0;19576:10;:24;19568:33;;;;;;19614:12;19647:6;19643:109;19657:20;;;19643:109;;;19725:14;1959:2;19725;:14;:::i;:::-;19713:6;;19720:1;19713:9;;;;;;;:::i;:::-;;;;;;;:26;;;;:::i;:::-;19705:35;;:4;:35;:::i;:::-;19698:42;-1:-1:-1;19679:3:0;;;;:::i;:::-;;;;19643:109;;;;19791:4;19772:15;19782:4;19772:9;:15::i;:::-;:23;;19764:63;;;;-1:-1:-1;;;19764:63:0;;10821:2:1;19764:63:0;;;10803:21:1;10860:2;10840:18;;;10833:30;10899:29;10879:18;;;10872:57;10946:18;;19764:63:0;10619:351:1;19764:63:0;19844:6;19840:134;19854:20;;;19840:134;;;19895:57;19905:4;19910:9;;19920:1;19910:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;19936:14;1959:2;19936;:14;:::i;:::-;19924:6;;19931:1;19924:9;;;;;;;:::i;:::-;;;;;;;:26;;;;:::i;19895:57::-;19876:3;;;;:::i;:::-;;;;19840:134;;;;19346:635;19239:742;;;;;:::o;1764:104::-;1820:13;1853:7;1846:14;;;;;:::i;12821:246::-;5610:6;;-1:-1:-1;;;;;5610:6:0;175:10;5610:22;5602:67;;;;-1:-1:-1;;;5602:67:0;;;;;;;:::i;:::-;12930:13:::1;-1:-1:-1::0;;;;;12922:21:0::1;:4;-1:-1:-1::0;;;;;12922:21:0::1;;;12914:91;;;::::0;-1:-1:-1;;;12914:91:0;;15148:2:1;12914:91:0::1;::::0;::::1;15130:21:1::0;15187:2;15167:18;;;15160:30;15226:34;15206:18;;;15199:62;15297:27;15277:18;;;15270:55;15342:19;;12914:91:0::1;14946:421:1::0;12914:91:0::1;13018:41;13047:4;13053:5;13018:28;:41::i;3458:401::-:0;175:10;3551:4;3595:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3595:34:0;;;;;;;;;;3648:35;;;;3640:85;;;;-1:-1:-1;;;3640:85:0;;15574:2:1;3640:85:0;;;15556:21:1;15613:2;15593:18;;;15586:30;15652:34;15632:18;;;15625:62;-1:-1:-1;;;15703:18:1;;;15696:35;15748:19;;3640:85:0;15372:401:1;3640:85:0;3753:67;175:10;3776:7;3804:15;3785:16;:34;3753:8;:67::i;:::-;-1:-1:-1;3847:4:0;;3458:401;-1:-1:-1;;;3458:401:0:o;2228:175::-;2314:4;2331:42;175:10;2355:9;2366:6;2331:9;:42::i;13958:182::-;5610:6;;-1:-1:-1;;;;;5610:6:0;175:10;5610:22;5602:67;;;;-1:-1:-1;;;5602:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14043:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;14043:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;14098:34;;1465:41:1;;;14098:34:0::1;::::0;1438:18:1;14098:34:0::1;;;;;;;13958:182:::0;;:::o;11586:284::-;5610:6;;-1:-1:-1;;;;;5610:6:0;175:10;5610:22;5602:67;;;;-1:-1:-1;;;5602:67:0;;;;;;;:::i;:::-;11708:4:::1;11702;11682:13;2065:12:::0;;;1977:108;11682:13:::1;:17;::::0;11698:1:::1;11682:17;:::i;:::-;:24;;;;:::i;:::-;11681:31;;;;:::i;:::-;11671:6;:41;;11663:98;;;::::0;-1:-1:-1;;;11663:98:0;;15980:2:1;11663:98:0::1;::::0;::::1;15962:21:1::0;16019:2;15999:18;;;15992:30;16058:34;16038:18;;;16031:62;-1:-1:-1;;;16109:18:1;;;16102:42;16161:19;;11663:98:0::1;15778:408:1::0;11663:98:0::1;11790:17;:6:::0;11800::::1;11790:17;:::i;:::-;11772:15;:35:::0;;;11823:39:::1;::::0;2141:25:1;;;11823:39:0::1;::::0;2129:2:1;2114:18;11823:39:0::1;1995:177:1::0;11940:350:0;5610:6;;-1:-1:-1;;;;;5610:6:0;175:10;5610:22;5602:67;;;;-1:-1:-1;;;5602:67:0;;;;;;;:::i;:::-;12064:6:::1;12044:13;2065:12:::0;;;1977:108;12044:13:::1;:17;::::0;12060:1:::1;12044:17;:::i;:::-;:26;;;;:::i;:::-;12031:9;:39;;12023:105;;;::::0;-1:-1:-1;;;12023:105:0;;16393:2:1;12023:105:0::1;::::0;::::1;16375:21:1::0;16432:2;16412:18;;;16405:30;16471:34;16451:18;;;16444:62;-1:-1:-1;;;16522:18:1;;;16515:51;16583:19;;12023:105:0::1;16191:417:1::0;12023:105:0::1;12180:4;12160:13;2065:12:::0;;;1977:108;12160:13:::1;:17;::::0;12176:1:::1;12160:17;:::i;:::-;:24;;;;:::i;:::-;12147:9;:37;;12139:102;;;::::0;-1:-1:-1;;;12139:102:0;;16815:2:1;12139:102:0::1;::::0;::::1;16797:21:1::0;16854:2;16834:18;;;16827:30;16893:34;16873:18;;;16866:62;-1:-1:-1;;;16944:18:1;;;16937:50;17004:19;;12139:102:0::1;16613:416:1::0;12139:102:0::1;12252:18;:30:::0;11940:350::o;21730:274::-;5610:6;;-1:-1:-1;;;;;5610:6:0;175:10;5610:22;5602:67;;;;-1:-1:-1;;;5602:67:0;;;;;;;:::i;:::-;21850:4:::1;21844;21824:13;2065:12:::0;;;1977:108;21824:13:::1;:17;::::0;21840:1:::1;21824:17;:::i;:::-;:24;;;;:::i;:::-;21823:31;;;;:::i;:::-;21813:6;:41;;21805:96;;;::::0;-1:-1:-1;;;21805:96:0;;17236:2:1;21805:96:0::1;::::0;::::1;17218:21:1::0;17275:2;17255:18;;;17248:30;17314:34;17294:18;;;17287:62;-1:-1:-1;;;17365:18:1;;;17358:40;17415:19;;21805:96:0::1;17034:406:1::0;21805:96:0::1;21928:17;:6:::0;21938::::1;21928:17;:::i;:::-;21912:13;:33:::0;;;21961:35:::1;::::0;2141:25:1;;;21961:35:0::1;::::0;2129:2:1;2114:18;21961:35:0::1;1995:177:1::0;10746:352:0;5610:6;;-1:-1:-1;;;;;5610:6:0;175:10;5610:22;5602:67;;;;-1:-1:-1;;;5602:67:0;;;;;;;:::i;:::-;10822:13:::1;::::0;::::1;::::0;::::1;;;10821:14;10813:51;;;::::0;-1:-1:-1;;;10813:51:0;;17647:2:1;10813:51:0::1;::::0;::::1;17629:21:1::0;17686:2;17666:18;;;17659:30;17725:26;17705:18;;;17698:54;17769:18;;10813:51:0::1;17445:348:1::0;10813:51:0::1;10875:13;:23:::0;;-1:-1:-1;;10875:23:0;::::1;;;::::0;;::::1;10909:18:::0;;;;-1:-1:-1;;10909:18:0;;;;;;;;::::1;::::0;;;;10943:29:::1;::::0;10958:13;::::1;10875:23;10958:13;1490:14:1::0;1483:22;1465:41;;10943:29:0::1;::::0;1453:2:1;1438:18;10943:29:0::1;;;;;;;10989:13;::::0;::::1;::::0;::::1;;;:40:::0;::::1;;;-1:-1:-1::0;11006:18:0::1;::::0;:23;10989:40:::1;10985:106;;;11067:12;11046:18;:33:::0;10985:106:::1;10746:352:::0;:::o;5855:244::-;5610:6;;-1:-1:-1;;;;;5610:6:0;175:10;5610:22;5602:67;;;;-1:-1:-1;;;5602:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5944:22:0;::::1;5936:73;;;::::0;-1:-1:-1;;;5936:73:0;;18000:2:1;5936:73:0::1;::::0;::::1;17982:21:1::0;18039:2;18019:18;;;18012:30;18078:34;18058:18;;;18051:62;-1:-1:-1;;;18129:18:1;;;18122:36;18175:19;;5936:73:0::1;17798:402:1::0;5936:73:0::1;6046:6;::::0;6025:38:::1;::::0;-1:-1:-1;;;;;6025:38:0;;::::1;::::0;6046:6:::1;::::0;6025:38:::1;::::0;6046:6:::1;::::0;6025:38:::1;6074:6;:17:::0;;-1:-1:-1;;;;;;6074:17:0::1;-1:-1:-1::0;;;;;6074:17:0;;;::::1;::::0;;;::::1;::::0;;5855:244::o;18240:160::-;5610:6;;-1:-1:-1;;;;;5610:6:0;175:10;5610:22;5602:67;;;;-1:-1:-1;;;5602:67:0;;;;;;;:::i;:::-;18334:58:::1;::::0;18298:12:::1;::::0;18342:10:::1;::::0;18366:21:::1;::::0;18298:12;18334:58;18298:12;18334:58;18366:21;18342:10;18334:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4776:380:::0;-1:-1:-1;;;;;4912:19:0;;4904:68;;;;-1:-1:-1;;;4904:68:0;;18617:2:1;4904:68:0;;;18599:21:1;18656:2;18636:18;;;18629:30;18695:34;18675:18;;;18668:62;-1:-1:-1;;;18746:18:1;;;18739:34;18790:19;;4904:68:0;18415:400:1;4904:68:0;-1:-1:-1;;;;;4991:21:0;;4983:68;;;;-1:-1:-1;;;4983:68:0;;19022:2:1;4983:68:0;;;19004:21:1;19061:2;19041:18;;;19034:30;19100:34;19080:18;;;19073:62;-1:-1:-1;;;19151:18:1;;;19144:32;19193:19;;4983:68:0;18820:398:1;4983:68:0;-1:-1:-1;;;;;5064:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5116:32;;2141:25:1;;;5116:32:0;;2114:18:1;5116:32:0;;;;;;;4776:380;;;:::o;14150:3422::-;-1:-1:-1;;;;;14250:18:0;;14242:68;;;;-1:-1:-1;;;14242:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14329:16:0;;14321:64;;;;-1:-1:-1;;;14321:64:0;;;;;;;:::i;:::-;14413:1;14404:6;:10;14396:52;;;;-1:-1:-1;;;14396:52:0;;20235:2:1;14396:52:0;;;20217:21:1;20274:2;20254:18;;;20247:30;20313:31;20293:18;;;20286:59;20362:18;;14396:52:0;20033:353:1;14396:52:0;-1:-1:-1;;;;;14468:15:0;;;;;;:9;:15;;;;;;;;14467:16;14459:46;;;;-1:-1:-1;;;14459:46:0;;20593:2:1;14459:46:0;;;20575:21:1;20632:2;20612:18;;;20605:30;-1:-1:-1;;;20651:18:1;;;20644:47;20708:18;;14459:46:0;20391:341:1;14459:46:0;14541:1;14520:18;;:22;:74;;;;;14583:10;;14562:18;;:31;;;;:::i;:::-;14546:12;:48;14520:74;14516:136;;;-1:-1:-1;;;;;14620:13:0;;;;;;:9;:13;;;;;:20;;-1:-1:-1;;14620:20:0;14636:4;14620:20;;;14516:136;14667:14;;;;14664:1350;;;5548:6;;-1:-1:-1;;;;;14701:15:0;;;5548:6;;14701:15;;;;:32;;-1:-1:-1;5548:6:0;;-1:-1:-1;;;;;14720:13:0;;;5548:6;;14720:13;;14701:32;:52;;;;-1:-1:-1;;;;;;14737:16:0;;;;14701:52;:77;;;;-1:-1:-1;;;;;;14757:21:0;;14771:6;14757:21;;14701:77;14697:1306;;;14802:13;;;;;;;14798:241;;-1:-1:-1;;;;;14847:37:0;;;;;;:31;:37;;;;;;;;;:76;;-1:-1:-1;;;;;;14888:35:0;;;;;;:31;:35;;;;;;;;14847:76;14839:111;;;;-1:-1:-1;;;14839:111:0;;20939:2:1;14839:111:0;;;20921:21:1;20978:2;20958:18;;;20951:30;-1:-1:-1;;;20997:18:1;;;20990:52;21059:18;;14839:111:0;20737:346:1;14839:111:0;5548:6;;-1:-1:-1;;;;;14981:15:0;;;5548:6;;14981:15;14973:46;;;;-1:-1:-1;;;14973:46:0;;21290:2:1;14973:46:0;;;21272:21:1;21329:2;21309:18;;;21302:30;-1:-1:-1;;;21348:18:1;;;21341:48;21406:18;;14973:46:0;21088:342:1;14973:46:0;15088:12;15061:18;;15082:1;15061:22;;;;:::i;:::-;15060:40;15057:931;;-1:-1:-1;;;;;15160:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;15196:35:0;;;;;;:31;:35;;;;;;;;15195:36;15160:71;15156:813;;;15278:12;;15268:6;:22;;15260:75;;;;-1:-1:-1;;;15260:75:0;;21637:2:1;15260:75:0;;;21619:21:1;21676:2;21656:18;;;21649:30;21715:34;21695:18;;;21688:62;-1:-1:-1;;;21766:18:1;;;21759:38;21814:19;;15260:75:0;21435:404:1;15260:75:0;15396:15;;15379:13;15389:2;15379:9;:13::i;:::-;15370:22;;:6;:22;:::i;:::-;:41;;15362:78;;;;-1:-1:-1;;;15362:78:0;;22046:2:1;15362:78:0;;;22028:21:1;22085:2;22065:18;;;22058:30;-1:-1:-1;;;22104:18:1;;;22097:54;22168:18;;15362:78:0;21844:348:1;15362:78:0;15156:813;;;-1:-1:-1;;;;;15528:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;15562:37:0;;;;;;:31;:37;;;;;;;;15561:38;15528:71;15524:445;;;15646:13;;15636:6;:23;;15628:78;;;;-1:-1:-1;;;15628:78:0;;22399:2:1;15628:78:0;;;22381:21:1;22438:2;22418:18;;;22411:30;22477:34;22457:18;;;22450:62;-1:-1:-1;;;22528:18:1;;;22521:40;22578:19;;15628:78:0;22197:406:1;15524:445:0;-1:-1:-1;;;;;15762:35:0;;;;;;:31;:35;;;;;;;;15761:36;:78;;;;-1:-1:-1;;;;;;15802:37:0;;;;;;:31;:37;;;;;;;;15801:38;15761:78;15757:212;;;15901:15;;15884:13;15894:2;15884:9;:13::i;:::-;15875:22;;:6;:22;:::i;:::-;:41;;15867:78;;;;-1:-1:-1;;;15867:78:0;;22046:2:1;15867:78:0;;;22028:21:1;22085:2;22065:18;;;22058:30;-1:-1:-1;;;22104:18:1;;;22097:54;22168:18;;15867:78:0;21844:348:1;15867:78:0;16026:28;16057:24;16075:4;16057:9;:24::i;:::-;16133:18;;16026:55;;-1:-1:-1;16109:42:0;;;;;;;16167:22;;-1:-1:-1;16178:11:0;;;;;;;16167:22;:35;;;;-1:-1:-1;16194:8:0;;;;16193:9;16167:35;:71;;;;-1:-1:-1;;;;;;16207:31:0;;;;;;:25;:31;;;;;;;;16206:32;16167:71;:101;;;;-1:-1:-1;;;;;;16243:25:0;;;;;;:19;:25;;;;;;;;16242:26;16167:101;:129;;;;-1:-1:-1;;;;;;16273:23:0;;;;;;:19;:23;;;;;;;;16272:24;16167:129;16164:236;;;16313:8;:15;;-1:-1:-1;;16313:15:0;16324:4;16313:15;;;16345:10;:8;:10::i;:::-;16372:8;:16;;-1:-1:-1;;16372:16:0;;;16164:236;-1:-1:-1;;;;;16530:25:0;;16412:12;16530:25;;;:19;:25;;;;;;16427:4;;16530:25;;;:52;;-1:-1:-1;;;;;;16559:23:0;;;;;;:19;:23;;;;;;;;16530:52;16527:99;;;-1:-1:-1;16609:5:0;16527:99;16638:12;16732:7;16729:790;;;-1:-1:-1;;;;;16773:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;16822:1;16806:13;;:17;16773:50;16769:603;;;16874:3;16859:13;;16850:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;16843:34;;16944:13;;16925:16;;16918:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;16896:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;17022:13:0;;17004:15;;16997:22;;:4;:22;:::i;:::-;:38;;;;:::i;:::-;16976:17;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;16769:603:0;;-1:-1:-1;16769:603:0;;-1:-1:-1;;;;;17096:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;17146:1;17131:12;;:16;17096:51;17093:279;;;17199:3;17184:12;;17175:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;17168:34;;17268:12;;17250:15;;17243:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;17221:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;17344:12:0;;17327:14;;17320:21;;:4;:21;:::i;:::-;:36;;;;:::i;:::-;17299:17;;:57;;;;;;;:::i;:::-;;;;-1:-1:-1;;17093:279:0;17391:8;;17388:89;;17419:42;17435:4;17449;17456;17419:15;:42::i;:::-;17493:14;17503:4;17493:14;;:::i;:::-;;;16729:790;17531:33;17547:4;17553:2;17557:6;17531:15;:33::i;13075:240::-;-1:-1:-1;;;;;13158:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;13158:39:0;;;;;;;13210;13158:31;:39;13210:26;:39::i;:::-;13267:40;;;;;;-1:-1:-1;;;;;13267:40:0;;;;;;;;13075:240;;:::o;20555:1165::-;20594:23;20620:24;20638:4;20620:9;:24::i;:::-;20594:50;;20655:25;20704:17;;20683:18;;:38;;;;:::i;:::-;20655:66;-1:-1:-1;20737:20:0;;;:46;;-1:-1:-1;20761:22:0;;20737:46;20734:60;;;20786:7;;20555:1165::o;20734:60::-;20827:18;;;:23;;;:::i;:::-;20809:15;:41;20806:113;;;20884:18;;;:23;;;:::i;:::-;20866:41;;20806:113;20931:12;21005:23;21090:1;21070:17;21049:18;;21031:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;21005:86;-1:-1:-1;21104:51:0;21121:33;21005:86;21121:15;:33;:::i;:::-;21104:16;:51::i;:::-;21350:18;;21189:21;;;;21168:18;;21350:20;;21369:1;;21350:20;:::i;:::-;21329:42;;:17;:42;:::i;:::-;21308:17;;21295:30;;:10;:30;:::i;:::-;:77;;;;:::i;:::-;21270:102;-1:-1:-1;21392:33:0;21270:102;21392:33;;:::i;:::-;21459:1;21438:18;:22;;;21471:17;:21;21392:33;-1:-1:-1;21508:19:0;;;;;:42;;;21549:1;21531:15;:19;21508:42;21505:119;;;21566:46;21579:15;21596;21566:12;:46::i;:::-;21657:15;;21649:63;;-1:-1:-1;;;;;21657:15:0;;;;21686:21;;21649:63;;;;21686:21;21657:15;21649:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;20555:1165:0:o;3867:602::-;-1:-1:-1;;;;;4007:20:0;;3999:70;;;;-1:-1:-1;;;3999:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4088:23:0;;4080:71;;;;-1:-1:-1;;;4080:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4188:17:0;;4164:21;4188:17;;;;;;;;;;;4224:23;;;;4216:74;;;;-1:-1:-1;;;4216:74:0;;22940:2:1;4216:74:0;;;22922:21:1;22979:2;22959:18;;;22952:30;23018:34;22998:18;;;22991:62;-1:-1:-1;;;23069:18:1;;;23062:36;23115:19;;4216:74:0;22738:402:1;4216:74:0;-1:-1:-1;;;;;4318:17:0;;;:9;:17;;;;;;;;;;;4338:22;;;4318:42;;4378:20;;;;;;;;:30;;4354:6;;4318:9;4378:30;;4354:6;;4378:30;:::i;:::-;;;;;;;;4443:9;-1:-1:-1;;;;;4426:35:0;4435:6;-1:-1:-1;;;;;4426:35:0;;4454:6;4426:35;;;;2141:25:1;;2129:2;2114:18;;1995:177;4426:35:0;;;;;;;;3988:481;3867:602;;;:::o;12298:207::-;-1:-1:-1;;;;;12386:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;12386:52:0;;;;;;;;;;12454:43;;23313:51:1;;;23380:18;;;23373:50;12454:43:0;;23286:18:1;12454:43:0;;;;;;;12298:207;;:::o;17580:591::-;17732:16;;;17746:1;17732:16;;;;;;;;17708:21;;17732:16;;;;;;;;;;-1:-1:-1;17732:16:0;17708:40;;17777:4;17759;17764:1;17759:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;17759:23:0;;;-1:-1:-1;;;;;17759:23:0;;;;;17803:15;-1:-1:-1;;;;;17803:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17793:4;17798:1;17793:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;17793:32:0;;;-1:-1:-1;;;;;17793:32:0;;;;;17838:62;17855:4;17870:15;17888:11;17838:8;:62::i;:::-;17939:224;;-1:-1:-1;;;17939:224:0;;-1:-1:-1;;;;;17939:15:0;:66;;;;:224;;18020:11;;18046:1;;18090:4;;18117;;18137:15;;17939:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18702:522;18850:62;18867:4;18882:15;18900:11;18850:8;:62::i;:::-;18955:15;-1:-1:-1;;;;;18955:31:0;;18994:9;19027:4;19047:11;19073:1;19116;19167:7;5548:6;;-1:-1:-1;;;;;5548:6:0;;5483:79;19167:7;18955:261;;;;;;-1:-1:-1;;;;;;18955:261:0;;;-1:-1:-1;;;;;25166:15:1;;;18955:261:0;;;25148:34:1;25198:18;;;25191:34;;;;25241:18;;;25234:34;;;;25284:18;;;25277:34;25348:15;;;25327:19;;;25320:44;19190:15:0;25380:19:1;;;25373:35;25082:19;;18955:261:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18702:522;;:::o;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:597::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;705:6;702:1;699:13;696:91;;;775:1;770:2;761:6;750:9;746:22;742:31;735:42;696:91;-1:-1:-1;848:2:1;827:15;-1:-1:-1;;823:29:1;808:45;;;;855:2;804:54;;267:597;-1:-1:-1;;;267:597:1:o;869:131::-;-1:-1:-1;;;;;944:31:1;;934:42;;924:70;;990:1;987;980:12;1005:315;1073:6;1081;1134:2;1122:9;1113:7;1109:23;1105:32;1102:52;;;1150:1;1147;1140:12;1102:52;1189:9;1176:23;1208:31;1233:5;1208:31;:::i;:::-;1258:5;1310:2;1295:18;;;;1282:32;;-1:-1:-1;;;1005:315:1:o;1517:247::-;1576:6;1629:2;1617:9;1608:7;1604:23;1600:32;1597:52;;;1645:1;1642;1635:12;1597:52;1684:9;1671:23;1703:31;1728:5;1703:31;:::i;:::-;1753:5;1517:247;-1:-1:-1;;;1517:247:1:o;2177:456::-;2254:6;2262;2270;2323:2;2311:9;2302:7;2298:23;2294:32;2291:52;;;2339:1;2336;2329:12;2291:52;2378:9;2365:23;2397:31;2422:5;2397:31;:::i;:::-;2447:5;-1:-1:-1;2504:2:1;2489:18;;2476:32;2517:33;2476:32;2517:33;:::i;:::-;2177:456;;2569:7;;-1:-1:-1;;;2623:2:1;2608:18;;;;2595:32;;2177:456::o;2638:367::-;2701:8;2711:6;2765:3;2758:4;2750:6;2746:17;2742:27;2732:55;;2783:1;2780;2773:12;2732:55;-1:-1:-1;2806:20:1;;2849:18;2838:30;;2835:50;;;2881:1;2878;2871:12;2835:50;2918:4;2910:6;2906:17;2894:29;;2978:3;2971:4;2961:6;2958:1;2954:14;2946:6;2942:27;2938:38;2935:47;2932:67;;;2995:1;2992;2985:12;2932:67;2638:367;;;;;:::o;3010:640::-;3114:6;3122;3130;3138;3191:2;3179:9;3170:7;3166:23;3162:32;3159:52;;;3207:1;3204;3197:12;3159:52;3246:9;3233:23;3265:31;3290:5;3265:31;:::i;:::-;3315:5;-1:-1:-1;3371:2:1;3356:18;;3343:32;3398:18;3387:30;;3384:50;;;3430:1;3427;3420:12;3384:50;3469:70;3531:7;3522:6;3511:9;3507:22;3469:70;:::i;:::-;3010:640;;3558:8;;-1:-1:-1;3443:96:1;;3640:2;3625:18;3612:32;;3010:640;-1:-1:-1;;;;3010:640:1:o;3655:180::-;3714:6;3767:2;3755:9;3746:7;3742:23;3738:32;3735:52;;;3783:1;3780;3773:12;3735:52;-1:-1:-1;3806:23:1;;3655:180;-1:-1:-1;3655:180:1:o;4237:118::-;4323:5;4316:13;4309:21;4302:5;4299:32;4289:60;;4345:1;4342;4335:12;4360:566;4452:6;4460;4468;4521:2;4509:9;4500:7;4496:23;4492:32;4489:52;;;4537:1;4534;4527:12;4489:52;4577:9;4564:23;4610:18;4602:6;4599:30;4596:50;;;4642:1;4639;4632:12;4596:50;4681:70;4743:7;4734:6;4723:9;4719:22;4681:70;:::i;:::-;4770:8;;-1:-1:-1;4655:96:1;-1:-1:-1;;4855:2:1;4840:18;;4827:32;4868:28;4827:32;4868:28;:::i;:::-;4915:5;4905:15;;;4360:566;;;;;:::o;4931:382::-;4996:6;5004;5057:2;5045:9;5036:7;5032:23;5028:32;5025:52;;;5073:1;5070;5063:12;5025:52;5112:9;5099:23;5131:31;5156:5;5131:31;:::i;:::-;5181:5;-1:-1:-1;5238:2:1;5223:18;;5210:32;5251:30;5210:32;5251:30;:::i;:::-;5300:7;5290:17;;;4931:382;;;;;:::o;5318:388::-;5386:6;5394;5447:2;5435:9;5426:7;5422:23;5418:32;5415:52;;;5463:1;5460;5453:12;5415:52;5502:9;5489:23;5521:31;5546:5;5521:31;:::i;:::-;5571:5;-1:-1:-1;5628:2:1;5613:18;;5600:32;5641:33;5600:32;5641:33;:::i;5711:908::-;5842:6;5850;5858;5866;5874;5927:2;5915:9;5906:7;5902:23;5898:32;5895:52;;;5943:1;5940;5933:12;5895:52;5982:9;5969:23;6001:31;6026:5;6001:31;:::i;:::-;6051:5;-1:-1:-1;6107:2:1;6092:18;;6079:32;6130:18;6160:14;;;6157:34;;;6187:1;6184;6177:12;6157:34;6226:70;6288:7;6279:6;6268:9;6264:22;6226:70;:::i;:::-;6315:8;;-1:-1:-1;6200:96:1;-1:-1:-1;6403:2:1;6388:18;;6375:32;;-1:-1:-1;6419:16:1;;;6416:36;;;6448:1;6445;6438:12;6416:36;;6487:72;6551:7;6540:8;6529:9;6525:24;6487:72;:::i;:::-;5711:908;;;;-1:-1:-1;5711:908:1;;-1:-1:-1;6578:8:1;;6461:98;5711:908;-1:-1:-1;;;5711:908:1:o;6624:241::-;6680:6;6733:2;6721:9;6712:7;6708:23;6704:32;6701:52;;;6749:1;6746;6739:12;6701:52;6788:9;6775:23;6807:28;6829:5;6807:28;:::i;6870:356::-;7072:2;7054:21;;;7091:18;;;7084:30;7150:34;7145:2;7130:18;;7123:62;7217:2;7202:18;;6870:356::o;7231:127::-;7292:10;7287:3;7283:20;7280:1;7273:31;7323:4;7320:1;7313:15;7347:4;7344:1;7337:15;7363:128;7403:3;7434:1;7430:6;7427:1;7424:13;7421:39;;;7440:18;;:::i;:::-;-1:-1:-1;7476:9:1;;7363:128::o;7854:380::-;7933:1;7929:12;;;;7976;;;7997:61;;8051:4;8043:6;8039:17;8029:27;;7997:61;8104:2;8096:6;8093:14;8073:18;8070:38;8067:161;;;8150:10;8145:3;8141:20;8138:1;8131:31;8185:4;8182:1;8175:15;8213:4;8210:1;8203:15;8067:161;;7854:380;;;:::o;9063:422::-;9152:1;9195:5;9152:1;9209:270;9230:7;9220:8;9217:21;9209:270;;;9289:4;9285:1;9281:6;9277:17;9271:4;9268:27;9265:53;;;9298:18;;:::i;:::-;9348:7;9338:8;9334:22;9331:55;;;9368:16;;;;9331:55;9447:22;;;;9407:15;;;;9209:270;;;9213:3;9063:422;;;;;:::o;9490:806::-;9539:5;9569:8;9559:80;;-1:-1:-1;9610:1:1;9624:5;;9559:80;9658:4;9648:76;;-1:-1:-1;9695:1:1;9709:5;;9648:76;9740:4;9758:1;9753:59;;;;9826:1;9821:130;;;;9733:218;;9753:59;9783:1;9774:10;;9797:5;;;9821:130;9858:3;9848:8;9845:17;9842:43;;;9865:18;;:::i;:::-;-1:-1:-1;;9921:1:1;9907:16;;9936:5;;9733:218;;10035:2;10025:8;10022:16;10016:3;10010:4;10007:13;10003:36;9997:2;9987:8;9984:16;9979:2;9973:4;9970:12;9966:35;9963:77;9960:159;;;-1:-1:-1;10072:19:1;;;10104:5;;9960:159;10151:34;10176:8;10170:4;10151:34;:::i;:::-;10221:6;10217:1;10213:6;10209:19;10200:7;10197:32;10194:58;;;10232:18;;:::i;:::-;10270:20;;9490:806;-1:-1:-1;;;9490:806:1:o;10301:140::-;10359:5;10388:47;10429:4;10419:8;10415:19;10409:4;10388:47;:::i;10446:168::-;10486:7;10552:1;10548;10544:6;10540:14;10537:1;10534:21;10529:1;10522:9;10515:17;10511:45;10508:71;;;10559:18;;:::i;:::-;-1:-1:-1;10599:9:1;;10446:168::o;10975:127::-;11036:10;11031:3;11027:20;11024:1;11017:31;11067:4;11064:1;11057:15;11091:4;11088:1;11081:15;11107:135;11146:3;-1:-1:-1;;11167:17:1;;11164:43;;;11187:18;;:::i;:::-;-1:-1:-1;11234:1:1;11223:13;;11107:135::o;11247:217::-;11287:1;11313;11303:132;;11357:10;11352:3;11348:20;11345:1;11338:31;11392:4;11389:1;11382:15;11420:4;11417:1;11410:15;11303:132;-1:-1:-1;11449:9:1;;11247:217::o;13405:184::-;13475:6;13528:2;13516:9;13507:7;13503:23;13499:32;13496:52;;;13544:1;13541;13534:12;13496:52;-1:-1:-1;13567:16:1;;13405:184;-1:-1:-1;13405:184:1:o;13873:245::-;13940:6;13993:2;13981:9;13972:7;13968:23;13964:32;13961:52;;;14009:1;14006;13999:12;13961:52;14041:9;14035:16;14060:28;14082:5;14060:28;:::i;19223:401::-;19425:2;19407:21;;;19464:2;19444:18;;;19437:30;19503:34;19498:2;19483:18;;19476:62;-1:-1:-1;;;19569:2:1;19554:18;;19547:35;19614:3;19599:19;;19223:401::o;19629:399::-;19831:2;19813:21;;;19870:2;19850:18;;;19843:30;19909:34;19904:2;19889:18;;19882:62;-1:-1:-1;;;19975:2:1;19960:18;;19953:33;20018:3;20003:19;;19629:399::o;22608:125::-;22648:4;22676:1;22673;22670:8;22667:34;;;22681:18;;:::i;:::-;-1:-1:-1;22718:9:1;;22608:125::o;23566:251::-;23636:6;23689:2;23677:9;23668:7;23664:23;23660:32;23657:52;;;23705:1;23702;23695:12;23657:52;23737:9;23731:16;23756:31;23781:5;23756:31;:::i;23822:980::-;24084:4;24132:3;24121:9;24117:19;24163:6;24152:9;24145:25;24189:2;24227:6;24222:2;24211:9;24207:18;24200:34;24270:3;24265:2;24254:9;24250:18;24243:31;24294:6;24329;24323:13;24360:6;24352;24345:22;24398:3;24387:9;24383:19;24376:26;;24437:2;24429:6;24425:15;24411:29;;24458:1;24468:195;24482:6;24479:1;24476:13;24468:195;;;24547:13;;-1:-1:-1;;;;;24543:39:1;24531:52;;24638:15;;;;24603:12;;;;24579:1;24497:9;24468:195;;;-1:-1:-1;;;;;;;24719:32:1;;;;24714:2;24699:18;;24692:60;-1:-1:-1;;;24783:3:1;24768:19;24761:35;24680:3;23822:980;-1:-1:-1;;;23822:980:1:o;25419:306::-;25507:6;25515;25523;25576:2;25564:9;25555:7;25551:23;25547:32;25544:52;;;25592:1;25589;25582:12;25544:52;25621:9;25615:16;25605:26;;25671:2;25660:9;25656:18;25650:25;25640:35;;25715:2;25704:9;25700:18;25694:25;25684:35;;25419:306;;;;;:::o

Swarm Source

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