ETH Price: $2,483.15 (-0.65%)

Token

Do you speak English? (VANECHKIN)
 

Overview

Max Total Supply

420,690,000,000,000 VANECHKIN

Holders

229

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
192,917,877,436.254796360833973065 VANECHKIN

Value
$0.00
0x467cdecde903bed562298e02b61e9868963c9dd2
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:
VANECHKIN

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-08
*/

//https://t.me/VANECHKIN_ERC

// SPDX-License-Identifier:MIT
pragma solidity ^0.8.18;

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
    );
}

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

// Dex Router contract interface
interface IDexRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

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

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = payable(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;
    }
}

contract VANECHKIN is Context, IERC20, Ownable {
    string private _name = "Do you speak English?";
    string private _symbol = "VANECHKIN";
    uint8 private _decimals = 18;
    uint256 private _totalSupply = 420_690_000_000_000 * 1e18;

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

    mapping(address => bool) public isExcludedFromFee;
    mapping(address => bool) public isExcludedFromMaxTxn;
    mapping(address => bool) public isExcludedFromMaxHolding;

    uint256 public minTokenToSwap = (_totalSupply * 5) / (1000); // this amount will trigger swap and distribute
    uint256 public maxHoldLimit = (_totalSupply * 2) / (100); // this is the max wallet holding limit
    uint256 public maxTxnLimit = (_totalSupply * 2) / (100); // this is the max transaction limit
    uint256 public percentDivider = 100;
    uint256 public launchedAt;

    bool public distributeAndLiquifyStatus; // should be true to turn on to liquidate the pool
    bool public feesStatus; // enable by default
    bool public trading; // once enable can't be disable afterwards

    IDexRouter public dexRouter; // router declaration

    address public dexPair; // pair address declaration
    address public marketingWallet; // marketing address declaration
    address private constant DEAD = address(0xdead);
    address private constant ZERO = address(0);

    uint256 public marketingFeeOnBuying = 30;

    uint256 public marketingFeeOnSelling = 30;

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

    constructor() {
        _balances[owner()] = _totalSupply;
        marketingWallet = address(0x0467AD7Afd76f9a1dcF7807664AE5cbD1296da29);

        dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        isExcludedFromFee[address(dexRouter)] = true;
        isExcludedFromMaxTxn[address(dexRouter)] = true;
        isExcludedFromMaxHolding[address(dexRouter)] = true;

        dexPair = IDexFactory(dexRouter.factory()).createPair(
            address(this),
            dexRouter.WETH()
        );
        isExcludedFromMaxHolding[dexPair] = true;

        //exclude owner and this contract from fee
        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;

        //exclude owner and this contract from max Txn
        isExcludedFromMaxTxn[owner()] = true;
        isExcludedFromMaxTxn[address(this)] = true;

        //exclude owner and this contract from max hold limit
        isExcludedFromMaxHolding[owner()] = true;
        isExcludedFromMaxHolding[address(this)] = true;
        isExcludedFromMaxHolding[marketingWallet] = true;

        emit Transfer(address(0), owner(), _totalSupply);
    }

    //to receive ETH from dexRouter when swapping
    receive() external payable {}

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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()] - 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) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] - subtractedValue
        );
        return true;
    }

    function includeOrExcludeFromFee(
        address account,
        bool value
    ) external onlyOwner {
        isExcludedFromFee[account] = value;
    }

    function includeOrExcludeFromMaxTxn(
        address account,
        bool value
    ) external onlyOwner {
        isExcludedFromMaxTxn[account] = value;
    }

    function includeOrExcludeFromMaxHolding(
        address account,
        bool value
    ) external onlyOwner {
        isExcludedFromMaxHolding[account] = value;
    }

    function setMinTokenToSwap(uint256 _amount) external onlyOwner {
        minTokenToSwap = _amount * 1e18;
    }

    function setMaxHoldLimit(uint256 _amount) external onlyOwner {
        maxHoldLimit = _amount * 1e18;
    }

    function setMaxTxnLimit(uint256 _amount) external onlyOwner {
        maxTxnLimit = _amount * 1e18;
    }

    function setBuyFeePercent(uint256 _marketingFee) external onlyOwner {
        marketingFeeOnBuying = _marketingFee;
    }

    function setSellFeePercent(uint256 _marketingFee) external onlyOwner {
        marketingFeeOnSelling = _marketingFee;
    }

    function setDistributionStatus(bool _value) public onlyOwner {
        distributeAndLiquifyStatus = _value;
    }

    function enableOrDisableFees(bool _value) external onlyOwner {
        feesStatus = _value;
    }

    function updateAddresses(address _marketingWallet) external onlyOwner {
        marketingWallet = _marketingWallet;
    }

    function enableTrading() external onlyOwner {
        require(!trading, ": already enabled");

        trading = true;
        feesStatus = true;
        distributeAndLiquifyStatus = true;
        launchedAt = block.timestamp;
    }

    function removeStuckEth(address _receiver) public onlyOwner {
        payable(_receiver).transfer(address(this).balance);
    }

    function totalBuyFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = (amount * marketingFeeOnBuying) / (percentDivider);
        return fee;
    }

    function totalSellFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = (amount * marketingFeeOnSelling) / (percentDivider);
        return fee;
    }

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "transfer from the zero address");
        require(to != address(0), "transfer to the zero address");
        require(amount > 0, "Amount must be greater than zero");
        if (!isExcludedFromMaxTxn[from] && !isExcludedFromMaxTxn[to]) {
            require(amount <= maxTxnLimit, " max txn limit exceeds");

            // trading disable till launch
            if (!trading) {
                require(
                    dexPair != from && dexPair != to,
                    ": trading is disable"
                );
            }
        }

        if (!isExcludedFromMaxHolding[to]) {
            require(
                (balanceOf(to) + amount) <= maxHoldLimit,
                ": max hold limit exceeds"
            );
        }

        // swap and liquify
        distributeAndLiquify(from, to);

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        //if any account belongs to isExcludedFromFee account then remove the fee
        if (isExcludedFromFee[from] || isExcludedFromFee[to] || !feesStatus) {
            takeFee = false;
        }

        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);
    }

    //this method is responsible for taking all fees, if takeFee is true
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (dexPair == sender && takeFee) {
            uint256 allFee;
            uint256 tTransferAmount;
            allFee = totalBuyFeePerTx(amount);
            tTransferAmount = amount - allFee;

            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + tTransferAmount;
            emit Transfer(sender, recipient, tTransferAmount);

            takeTokenFee(sender, allFee);
        } else if (dexPair == recipient && takeFee) {
            uint256 allFee = totalSellFeePerTx(amount);
            uint256 tTransferAmount = amount - allFee;
            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + tTransferAmount;
            emit Transfer(sender, recipient, tTransferAmount);

            takeTokenFee(sender, allFee);
        } else {
            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + (amount);
            emit Transfer(sender, recipient, amount);
        }
    }

    function takeTokenFee(address sender, uint256 amount) private {
        _balances[address(this)] = _balances[address(this)] + (amount);

        emit Transfer(sender, address(this), amount);
    }

    // to withdarw ETH from contract
    function withdrawETH(uint256 _amount) external onlyOwner {
        require(address(this).balance >= _amount, "Invalid Amount");
        payable(msg.sender).transfer(_amount);
    }

    // to withdraw ERC20 tokens from contract
    function withdrawToken(IERC20 _token, uint256 _amount) external onlyOwner {
        require(_token.balanceOf(address(this)) >= _amount, "Invalid Amount");
        _token.transfer(msg.sender, _amount);
    }

    function distributeAndLiquify(address from, address to) private {
        uint256 contractTokenBalance = balanceOf(address(this));

        bool shouldSell = contractTokenBalance >= minTokenToSwap;

        if (
            shouldSell &&
            from != dexPair &&
            distributeAndLiquifyStatus &&
            !(from == address(this) && to == dexPair) // swap 1 time
        ) {
            // approve contract
            _approve(address(this), address(dexRouter), minTokenToSwap);

            // now is to lock into liquidty pool
            Utils.swapTokensForEth(address(dexRouter), minTokenToSwap);
            uint256 ethForMarketing = address(this).balance;

            // sending Eth to Marketing wallet
            if (ethForMarketing > 0)
                payable(marketingWallet).transfer(ethForMarketing);
        }
    }
}

// Library for swapping on Dex
library Utils {
    function swapTokensForEth(
        address routerAddress,
        uint256 tokenAmount
    ) internal {
        IDexRouter dexRouter = IDexRouter(routerAddress);

        // generate the Dex pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

    function addLiquidity(
        address routerAddress,
        address owner,
        uint256 tokenAmount,
        uint256 ethAmount
    ) internal {
        IDexRouter dexRouter = IDexRouter(routerAddress);

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"tokensIntoLiqudity","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"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributeAndLiquifyStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"enableOrDisableFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxTxn","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":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxHolding","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokenToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"removeStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setBuyFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setDistributionStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxHoldLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxTxnLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMinTokenToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setSellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalBuyFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalSellFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"updateAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280601581526020017f446f20796f7520737065616b20456e676c6973683f0000000000000000000000815250600190816200004a919062000cbf565b506040518060400160405280600981526020017f56414e4543484b494e00000000000000000000000000000000000000000000008152506002908162000091919062000cbf565b506012600360006101000a81548160ff021916908360ff1602179055506d14bddab3e51a57cff87a500000006004556103e86005600454620000d4919062000dd5565b620000e0919062000e4f565b600a5560646002600454620000f6919062000dd5565b62000102919062000e4f565b600b556064600260045462000118919062000dd5565b62000124919062000e4f565b600c556064600d55601e601255601e6013553480156200014357600080fd5b506200015462000a1460201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600454600560006200022562000a1c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550730467ad7afd76f9a1dcf7807664ae5cbd1296da29601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600f60036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200050f919062000ef1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000599573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005bf919062000ef1565b6040518363ffffffff1660e01b8152600401620005de92919062000f34565b6020604051808303816000875af1158015620005fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000624919062000ef1565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000620006f462000a1c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000620007b362000a1c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960006200087262000a1c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620009a562000a1c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405162000a06919062000f72565b60405180910390a362000f8f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ac757607f821691505b60208210810362000add5762000adc62000a7f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b477fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b08565b62000b53868362000b08565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000ba062000b9a62000b948462000b6b565b62000b75565b62000b6b565b9050919050565b6000819050919050565b62000bbc8362000b7f565b62000bd462000bcb8262000ba7565b84845462000b15565b825550505050565b600090565b62000beb62000bdc565b62000bf881848462000bb1565b505050565b5b8181101562000c205762000c1460008262000be1565b60018101905062000bfe565b5050565b601f82111562000c6f5762000c398162000ae3565b62000c448462000af8565b8101602085101562000c54578190505b62000c6c62000c638562000af8565b83018262000bfd565b50505b505050565b600082821c905092915050565b600062000c946000198460080262000c74565b1980831691505092915050565b600062000caf838362000c81565b9150826002028217905092915050565b62000cca8262000a45565b67ffffffffffffffff81111562000ce65762000ce562000a50565b5b62000cf2825462000aae565b62000cff82828562000c24565b600060209050601f83116001811462000d37576000841562000d22578287015190505b62000d2e858262000ca1565b86555062000d9e565b601f19841662000d478662000ae3565b60005b8281101562000d715784890151825560018201915060208501945060208101905062000d4a565b8683101562000d91578489015162000d8d601f89168262000c81565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000de28262000b6b565b915062000def8362000b6b565b925082820262000dff8162000b6b565b9150828204841483151762000e195762000e1862000da6565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e5c8262000b6b565b915062000e698362000b6b565b92508262000e7c5762000e7b62000e20565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000eb98262000e8c565b9050919050565b62000ecb8162000eac565b811462000ed757600080fd5b50565b60008151905062000eeb8162000ec0565b92915050565b60006020828403121562000f0a5762000f0962000e87565b5b600062000f1a8482850162000eda565b91505092915050565b62000f2e8162000eac565b82525050565b600060408201905062000f4b600083018562000f23565b62000f5a602083018462000f23565b9392505050565b62000f6c8162000b6b565b82525050565b600060208201905062000f89600083018462000f61565b92915050565b6141068062000f9f6000396000f3fe60806040526004361061028c5760003560e01c80638da5cb5b1161015a578063b0bc2a2d116100c1578063f097ea1a1161007a578063f097ea1a14610a01578063f14210a614610a2a578063f242ab4114610a53578063f2fde38b14610a7e578063f4b3dbc314610aa7578063fe6f1b0514610ae457610293565b8063b0bc2a2d146108df578063bf56b37114610908578063dd62ed3e14610933578063ea5b9e8514610970578063ec44acf214610999578063ed421429146109c457610293565b80639e281a98116101135780639e281a98146107c1578063a2b8a947146107ea578063a457c2d714610813578063a643c1a014610850578063a7c29b4014610879578063a9059cbb146108a257610293565b80638da5cb5b146106b1578063950eb5d5146106dc57806395d89b411461070557806399b102b5146107305780639a36dfa11461076d5780639b6a27501461079857610293565b8063679a3c59116101fe5780637c6a9a9c116101b75780637c6a9a9c146105b3578063844af78e146105de57806384ea21bc146106095780638756aabd14610646578063879dd3c51461066f5780638a8c523c1461069a57610293565b8063679a3c59146104b5578063681aa362146104de57806370a0823114610509578063715018a61461054657806375f0a8741461055d57806379777b4e1461058857610293565b80631884f1e6116102505780631884f1e61461037f57806323b872dd146103aa5780632d129390146103e7578063313ce56714610410578063395093511461043b5780635342acb41461047857610293565b806306fdde03146102985780630758d924146102c3578063095ea7b3146102ee5780630a2d140c1461032b57806318160ddd1461035457610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610b0f565b6040516102ba9190613327565b60405180910390f35b3480156102cf57600080fd5b506102d8610ba1565b6040516102e591906133c8565b60405180910390f35b3480156102fa57600080fd5b506103156004803603810190610310919061345c565b610bc7565b60405161032291906134b7565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d91906134fe565b610be5565b005b34801561036057600080fd5b50610369610c97565b604051610376919061353a565b60405180910390f35b34801561038b57600080fd5b50610394610ca1565b6040516103a1919061353a565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc9190613555565b610ca7565b6040516103de91906134b7565b60405180910390f35b3480156103f357600080fd5b5061040e600480360381019061040991906135a8565b610d5f565b005b34801561041c57600080fd5b50610425610e4f565b6040516104329190613604565b60405180910390f35b34801561044757600080fd5b50610462600480360381019061045d919061345c565b610e66565b60405161046f91906134b7565b60405180910390f35b34801561048457600080fd5b5061049f600480360381019061049a919061361f565b610f12565b6040516104ac91906134b7565b60405180910390f35b3480156104c157600080fd5b506104dc60048036038101906104d7919061361f565b610f32565b005b3480156104ea57600080fd5b506104f3611011565b604051610500919061353a565b60405180910390f35b34801561051557600080fd5b50610530600480360381019061052b919061361f565b611017565b60405161053d919061353a565b60405180910390f35b34801561055257600080fd5b5061055b611060565b005b34801561056957600080fd5b506105726111b3565b60405161057f919061365b565b60405180910390f35b34801561059457600080fd5b5061059d6111d9565b6040516105aa91906134b7565b60405180910390f35b3480156105bf57600080fd5b506105c86111ec565b6040516105d5919061353a565b60405180910390f35b3480156105ea57600080fd5b506105f36111f2565b604051610600919061353a565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b919061361f565b6111f8565b60405161063d91906134b7565b60405180910390f35b34801561065257600080fd5b5061066d60048036038101906106689190613676565b611218565b005b34801561067b57600080fd5b506106846112ca565b60405161069191906134b7565b60405180910390f35b3480156106a657600080fd5b506106af6112dd565b005b3480156106bd57600080fd5b506106c661141c565b6040516106d3919061365b565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe9190613676565b611445565b005b34801561071157600080fd5b5061071a6114e4565b6040516107279190613327565b60405180910390f35b34801561073c57600080fd5b506107576004803603810190610752919061361f565b611576565b60405161076491906134b7565b60405180910390f35b34801561077957600080fd5b50610782611596565b60405161078f919061353a565b60405180910390f35b3480156107a457600080fd5b506107bf60048036038101906107ba9190613676565b61159c565b005b3480156107cd57600080fd5b506107e860048036038101906107e391906136e1565b61164e565b005b3480156107f657600080fd5b50610811600480360381019061080c9190613676565b611822565b005b34801561081f57600080fd5b5061083a6004803603810190610835919061345c565b6118c1565b60405161084791906134b7565b60405180910390f35b34801561085c57600080fd5b506108776004803603810190610872919061361f565b61196d565b005b34801561088557600080fd5b506108a0600480360381019061089b91906135a8565b611a46565b005b3480156108ae57600080fd5b506108c960048036038101906108c4919061345c565b611b36565b6040516108d691906134b7565b60405180910390f35b3480156108eb57600080fd5b50610906600480360381019061090191906134fe565b611b54565b005b34801561091457600080fd5b5061091d611c06565b60405161092a919061353a565b60405180910390f35b34801561093f57600080fd5b5061095a60048036038101906109559190613721565b611c0c565b604051610967919061353a565b60405180910390f35b34801561097c57600080fd5b50610997600480360381019061099291906135a8565b611c93565b005b3480156109a557600080fd5b506109ae611d83565b6040516109bb91906134b7565b60405180910390f35b3480156109d057600080fd5b506109eb60048036038101906109e69190613676565b611d96565b6040516109f8919061353a565b60405180910390f35b348015610a0d57600080fd5b50610a286004803603810190610a239190613676565b611dbf565b005b348015610a3657600080fd5b50610a516004803603810190610a4c9190613676565b611e71565b005b348015610a5f57600080fd5b50610a68611f93565b604051610a75919061365b565b60405180910390f35b348015610a8a57600080fd5b50610aa56004803603810190610aa0919061361f565b611fb9565b005b348015610ab357600080fd5b50610ace6004803603810190610ac99190613676565b61217a565b604051610adb919061353a565b60405180910390f35b348015610af057600080fd5b50610af96121a3565b604051610b06919061353a565b60405180910390f35b606060018054610b1e90613790565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4a90613790565b8015610b975780601f10610b6c57610100808354040283529160200191610b97565b820191906000526020600020905b815481529060010190602001808311610b7a57829003601f168201915b5050505050905090565b600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610bdb610bd46121a9565b84846121b1565b6001905092915050565b610bed6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c719061380d565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b6000600454905090565b600a5481565b6000610cb484848461237a565b610d5484610cc06121a9565b84600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d0a6121a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d4f919061385c565b6121b1565b600190509392505050565b610d676121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610deb9061380d565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600360009054906101000a900460ff16905090565b6000610f08610e736121a9565b848460066000610e816121a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f039190613890565b6121b1565b6001905092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b610f3a6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbe9061380d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561100d573d6000803e3d6000fd5b5050565b600c5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110686121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec9061380d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900460ff1681565b60125481565b60135481565b60096020528060005260406000206000915054906101000a900460ff1681565b6112206121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a49061380d565b60405180910390fd5b670de0b6b3a7640000816112c191906138c4565b600b8190555050565b600f60019054906101000a900460ff1681565b6112e56121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611372576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113699061380d565b60405180910390fd5b600f60029054906101000a900460ff16156113c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b990613952565b60405180910390fd5b6001600f60026101000a81548160ff0219169083151502179055506001600f60016101000a81548160ff0219169083151502179055506001600f60006101000a81548160ff02191690831515021790555042600e81905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61144d6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d19061380d565b60405180910390fd5b8060128190555050565b6060600280546114f390613790565b80601f016020809104026020016040519081016040528092919081815260200182805461151f90613790565b801561156c5780601f106115415761010080835404028352916020019161156c565b820191906000526020600020905b81548152906001019060200180831161154f57829003601f168201915b5050505050905090565b60086020528060005260406000206000915054906101000a900460ff1681565b600b5481565b6115a46121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611631576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116289061380d565b60405180910390fd5b670de0b6b3a76400008161164591906138c4565b600c8190555050565b6116566121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116da9061380d565b60405180910390fd5b808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161171d919061365b565b602060405180830381865afa15801561173a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175e9190613987565b101561179f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179690613a00565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016117da929190613a20565b6020604051808303816000875af11580156117f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181d9190613a5e565b505050565b61182a6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ae9061380d565b60405180910390fd5b8060138190555050565b60006119636118ce6121a9565b8484600660006118dc6121a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461195e919061385c565b6121b1565b6001905092915050565b6119756121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f99061380d565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a4e6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad29061380d565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611b4a611b436121a9565b848461237a565b6001905092915050565b611b5c6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be09061380d565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b600e5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c9b6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f9061380d565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60029054906101000a900460ff1681565b600080600d5460125484611daa91906138c4565b611db49190613aba565b905080915050919050565b611dc76121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4b9061380d565b60405180910390fd5b670de0b6b3a764000081611e6891906138c4565b600a8190555050565b611e796121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efd9061380d565b60405180910390fd5b80471015611f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4090613a00565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f8f573d6000803e3d6000fd5b5050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611fc16121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461204e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120459061380d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b490613b5d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600d546013548461218e91906138c4565b6121989190613aba565b905080915050919050565b600d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612220576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221790613bc9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361228f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228690613c35565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161236d919061353a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e090613ca1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244f90613d0d565b60405180910390fd5b6000811161249b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249290613d79565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561253f5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561268a57600c54811115612589576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258090613de5565b60405180910390fd5b600f60029054906101000a900460ff16612689578273ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561264957508173ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b612688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267f90613e51565b60405180910390fd5b5b5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661273457600b54816126e884611017565b6126f29190613890565b1115612733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272a90613ebd565b60405180910390fd5b5b61273e8383612819565b600060019050600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127e55750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806127fd5750600f60019054906101000a900460ff16155b1561280757600090505b61281384848484612a16565b50505050565b600061282430611017565b90506000600a54821015905080801561288b5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156128a35750600f60009054906101000a900460ff165b801561293457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156129325750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b15612a105761296830600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a546121b1565b612996600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a54612fba565b60004790506000811115612a0e57601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612a0c573d6000803e3d6000fd5b505b505b50505050565b8373ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612a705750805b15612c2357600080612a8184611d96565b91508184612a8f919061385c565b905083600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612adc919061385c565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b6a9190613890565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c0a919061353a565b60405180910390a3612c1c86836131a0565b5050612fb4565b8273ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612c7d5750805b15612e31576000612c8d8361217a565b905060008184612c9d919061385c565b905083600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cea919061385c565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d789190613890565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e18919061353a565b60405180910390a3612e2a86836131a0565b5050612fb3565b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e7c919061385c565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f0a9190613890565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612faa919061353a565b60405180910390a35b5b50505050565b60008290506000600267ffffffffffffffff811115612fdc57612fdb613edd565b5b60405190808252806020026020018201604052801561300a5781602001602082028036833780820191505090505b509050308160008151811061302257613021613f0c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130cb9190613f50565b816001815181106130df576130de613f0c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c426131489190613890565b6040518663ffffffff1660e01b8152600401613168959493929190614076565b600060405180830381600087803b15801561318257600080fd5b505af1158015613196573d6000803e3d6000fd5b5050505050505050565b80600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131eb9190613890565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161328b919061353a565b60405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b838110156132d15780820151818401526020810190506132b6565b60008484015250505050565b6000601f19601f8301169050919050565b60006132f982613297565b61330381856132a2565b93506133138185602086016132b3565b61331c816132dd565b840191505092915050565b6000602082019050818103600083015261334181846132ee565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061338e61338961338484613349565b613369565b613349565b9050919050565b60006133a082613373565b9050919050565b60006133b282613395565b9050919050565b6133c2816133a7565b82525050565b60006020820190506133dd60008301846133b9565b92915050565b600080fd5b60006133f382613349565b9050919050565b613403816133e8565b811461340e57600080fd5b50565b600081359050613420816133fa565b92915050565b6000819050919050565b61343981613426565b811461344457600080fd5b50565b60008135905061345681613430565b92915050565b60008060408385031215613473576134726133e3565b5b600061348185828601613411565b925050602061349285828601613447565b9150509250929050565b60008115159050919050565b6134b18161349c565b82525050565b60006020820190506134cc60008301846134a8565b92915050565b6134db8161349c565b81146134e657600080fd5b50565b6000813590506134f8816134d2565b92915050565b600060208284031215613514576135136133e3565b5b6000613522848285016134e9565b91505092915050565b61353481613426565b82525050565b600060208201905061354f600083018461352b565b92915050565b60008060006060848603121561356e5761356d6133e3565b5b600061357c86828701613411565b935050602061358d86828701613411565b925050604061359e86828701613447565b9150509250925092565b600080604083850312156135bf576135be6133e3565b5b60006135cd85828601613411565b92505060206135de858286016134e9565b9150509250929050565b600060ff82169050919050565b6135fe816135e8565b82525050565b600060208201905061361960008301846135f5565b92915050565b600060208284031215613635576136346133e3565b5b600061364384828501613411565b91505092915050565b613655816133e8565b82525050565b6000602082019050613670600083018461364c565b92915050565b60006020828403121561368c5761368b6133e3565b5b600061369a84828501613447565b91505092915050565b60006136ae826133e8565b9050919050565b6136be816136a3565b81146136c957600080fd5b50565b6000813590506136db816136b5565b92915050565b600080604083850312156136f8576136f76133e3565b5b6000613706858286016136cc565b925050602061371785828601613447565b9150509250929050565b60008060408385031215613738576137376133e3565b5b600061374685828601613411565b925050602061375785828601613411565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806137a857607f821691505b6020821081036137bb576137ba613761565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137f76020836132a2565b9150613802826137c1565b602082019050919050565b60006020820190508181036000830152613826816137ea565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061386782613426565b915061387283613426565b925082820390508181111561388a5761388961382d565b5b92915050565b600061389b82613426565b91506138a683613426565b92508282019050808211156138be576138bd61382d565b5b92915050565b60006138cf82613426565b91506138da83613426565b92508282026138e881613426565b915082820484148315176138ff576138fe61382d565b5b5092915050565b7f3a20616c726561647920656e61626c6564000000000000000000000000000000600082015250565b600061393c6011836132a2565b915061394782613906565b602082019050919050565b6000602082019050818103600083015261396b8161392f565b9050919050565b60008151905061398181613430565b92915050565b60006020828403121561399d5761399c6133e3565b5b60006139ab84828501613972565b91505092915050565b7f496e76616c696420416d6f756e74000000000000000000000000000000000000600082015250565b60006139ea600e836132a2565b91506139f5826139b4565b602082019050919050565b60006020820190508181036000830152613a19816139dd565b9050919050565b6000604082019050613a35600083018561364c565b613a42602083018461352b565b9392505050565b600081519050613a58816134d2565b92915050565b600060208284031215613a7457613a736133e3565b5b6000613a8284828501613a49565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ac582613426565b9150613ad083613426565b925082613ae057613adf613a8b565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613b476026836132a2565b9150613b5282613aeb565b604082019050919050565b60006020820190508181036000830152613b7681613b3a565b9050919050565b7f20617070726f76652066726f6d20746865207a65726f20616464726573730000600082015250565b6000613bb3601e836132a2565b9150613bbe82613b7d565b602082019050919050565b60006020820190508181036000830152613be281613ba6565b9050919050565b7f617070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b6000613c1f601b836132a2565b9150613c2a82613be9565b602082019050919050565b60006020820190508181036000830152613c4e81613c12565b9050919050565b7f7472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b6000613c8b601e836132a2565b9150613c9682613c55565b602082019050919050565b60006020820190508181036000830152613cba81613c7e565b9050919050565b7f7472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b6000613cf7601c836132a2565b9150613d0282613cc1565b602082019050919050565b60006020820190508181036000830152613d2681613cea565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f600082015250565b6000613d636020836132a2565b9150613d6e82613d2d565b602082019050919050565b60006020820190508181036000830152613d9281613d56565b9050919050565b7f206d61782074786e206c696d6974206578636565647300000000000000000000600082015250565b6000613dcf6016836132a2565b9150613dda82613d99565b602082019050919050565b60006020820190508181036000830152613dfe81613dc2565b9050919050565b7f3a2074726164696e672069732064697361626c65000000000000000000000000600082015250565b6000613e3b6014836132a2565b9150613e4682613e05565b602082019050919050565b60006020820190508181036000830152613e6a81613e2e565b9050919050565b7f3a206d617820686f6c64206c696d697420657863656564730000000000000000600082015250565b6000613ea76018836132a2565b9150613eb282613e71565b602082019050919050565b60006020820190508181036000830152613ed681613e9a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613f4a816133fa565b92915050565b600060208284031215613f6657613f656133e3565b5b6000613f7484828501613f3b565b91505092915050565b6000819050919050565b6000613fa2613f9d613f9884613f7d565b613369565b613426565b9050919050565b613fb281613f87565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613fed816133e8565b82525050565b6000613fff8383613fe4565b60208301905092915050565b6000602082019050919050565b600061402382613fb8565b61402d8185613fc3565b935061403883613fd4565b8060005b838110156140695781516140508882613ff3565b975061405b8361400b565b92505060018101905061403c565b5085935050505092915050565b600060a08201905061408b600083018861352b565b6140986020830187613fa9565b81810360408301526140aa8186614018565b90506140b9606083018561364c565b6140c6608083018461352b565b969550505050505056fea264697066735822122012e00241dc32d6ee4f216e3a3d251db25ff51fc17f5023167c42f3deeb09603d64736f6c63430008120033

Deployed Bytecode

0x60806040526004361061028c5760003560e01c80638da5cb5b1161015a578063b0bc2a2d116100c1578063f097ea1a1161007a578063f097ea1a14610a01578063f14210a614610a2a578063f242ab4114610a53578063f2fde38b14610a7e578063f4b3dbc314610aa7578063fe6f1b0514610ae457610293565b8063b0bc2a2d146108df578063bf56b37114610908578063dd62ed3e14610933578063ea5b9e8514610970578063ec44acf214610999578063ed421429146109c457610293565b80639e281a98116101135780639e281a98146107c1578063a2b8a947146107ea578063a457c2d714610813578063a643c1a014610850578063a7c29b4014610879578063a9059cbb146108a257610293565b80638da5cb5b146106b1578063950eb5d5146106dc57806395d89b411461070557806399b102b5146107305780639a36dfa11461076d5780639b6a27501461079857610293565b8063679a3c59116101fe5780637c6a9a9c116101b75780637c6a9a9c146105b3578063844af78e146105de57806384ea21bc146106095780638756aabd14610646578063879dd3c51461066f5780638a8c523c1461069a57610293565b8063679a3c59146104b5578063681aa362146104de57806370a0823114610509578063715018a61461054657806375f0a8741461055d57806379777b4e1461058857610293565b80631884f1e6116102505780631884f1e61461037f57806323b872dd146103aa5780632d129390146103e7578063313ce56714610410578063395093511461043b5780635342acb41461047857610293565b806306fdde03146102985780630758d924146102c3578063095ea7b3146102ee5780630a2d140c1461032b57806318160ddd1461035457610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610b0f565b6040516102ba9190613327565b60405180910390f35b3480156102cf57600080fd5b506102d8610ba1565b6040516102e591906133c8565b60405180910390f35b3480156102fa57600080fd5b506103156004803603810190610310919061345c565b610bc7565b60405161032291906134b7565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d91906134fe565b610be5565b005b34801561036057600080fd5b50610369610c97565b604051610376919061353a565b60405180910390f35b34801561038b57600080fd5b50610394610ca1565b6040516103a1919061353a565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc9190613555565b610ca7565b6040516103de91906134b7565b60405180910390f35b3480156103f357600080fd5b5061040e600480360381019061040991906135a8565b610d5f565b005b34801561041c57600080fd5b50610425610e4f565b6040516104329190613604565b60405180910390f35b34801561044757600080fd5b50610462600480360381019061045d919061345c565b610e66565b60405161046f91906134b7565b60405180910390f35b34801561048457600080fd5b5061049f600480360381019061049a919061361f565b610f12565b6040516104ac91906134b7565b60405180910390f35b3480156104c157600080fd5b506104dc60048036038101906104d7919061361f565b610f32565b005b3480156104ea57600080fd5b506104f3611011565b604051610500919061353a565b60405180910390f35b34801561051557600080fd5b50610530600480360381019061052b919061361f565b611017565b60405161053d919061353a565b60405180910390f35b34801561055257600080fd5b5061055b611060565b005b34801561056957600080fd5b506105726111b3565b60405161057f919061365b565b60405180910390f35b34801561059457600080fd5b5061059d6111d9565b6040516105aa91906134b7565b60405180910390f35b3480156105bf57600080fd5b506105c86111ec565b6040516105d5919061353a565b60405180910390f35b3480156105ea57600080fd5b506105f36111f2565b604051610600919061353a565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b919061361f565b6111f8565b60405161063d91906134b7565b60405180910390f35b34801561065257600080fd5b5061066d60048036038101906106689190613676565b611218565b005b34801561067b57600080fd5b506106846112ca565b60405161069191906134b7565b60405180910390f35b3480156106a657600080fd5b506106af6112dd565b005b3480156106bd57600080fd5b506106c661141c565b6040516106d3919061365b565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe9190613676565b611445565b005b34801561071157600080fd5b5061071a6114e4565b6040516107279190613327565b60405180910390f35b34801561073c57600080fd5b506107576004803603810190610752919061361f565b611576565b60405161076491906134b7565b60405180910390f35b34801561077957600080fd5b50610782611596565b60405161078f919061353a565b60405180910390f35b3480156107a457600080fd5b506107bf60048036038101906107ba9190613676565b61159c565b005b3480156107cd57600080fd5b506107e860048036038101906107e391906136e1565b61164e565b005b3480156107f657600080fd5b50610811600480360381019061080c9190613676565b611822565b005b34801561081f57600080fd5b5061083a6004803603810190610835919061345c565b6118c1565b60405161084791906134b7565b60405180910390f35b34801561085c57600080fd5b506108776004803603810190610872919061361f565b61196d565b005b34801561088557600080fd5b506108a0600480360381019061089b91906135a8565b611a46565b005b3480156108ae57600080fd5b506108c960048036038101906108c4919061345c565b611b36565b6040516108d691906134b7565b60405180910390f35b3480156108eb57600080fd5b50610906600480360381019061090191906134fe565b611b54565b005b34801561091457600080fd5b5061091d611c06565b60405161092a919061353a565b60405180910390f35b34801561093f57600080fd5b5061095a60048036038101906109559190613721565b611c0c565b604051610967919061353a565b60405180910390f35b34801561097c57600080fd5b50610997600480360381019061099291906135a8565b611c93565b005b3480156109a557600080fd5b506109ae611d83565b6040516109bb91906134b7565b60405180910390f35b3480156109d057600080fd5b506109eb60048036038101906109e69190613676565b611d96565b6040516109f8919061353a565b60405180910390f35b348015610a0d57600080fd5b50610a286004803603810190610a239190613676565b611dbf565b005b348015610a3657600080fd5b50610a516004803603810190610a4c9190613676565b611e71565b005b348015610a5f57600080fd5b50610a68611f93565b604051610a75919061365b565b60405180910390f35b348015610a8a57600080fd5b50610aa56004803603810190610aa0919061361f565b611fb9565b005b348015610ab357600080fd5b50610ace6004803603810190610ac99190613676565b61217a565b604051610adb919061353a565b60405180910390f35b348015610af057600080fd5b50610af96121a3565b604051610b06919061353a565b60405180910390f35b606060018054610b1e90613790565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4a90613790565b8015610b975780601f10610b6c57610100808354040283529160200191610b97565b820191906000526020600020905b815481529060010190602001808311610b7a57829003601f168201915b5050505050905090565b600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610bdb610bd46121a9565b84846121b1565b6001905092915050565b610bed6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c719061380d565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b6000600454905090565b600a5481565b6000610cb484848461237a565b610d5484610cc06121a9565b84600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d0a6121a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d4f919061385c565b6121b1565b600190509392505050565b610d676121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610deb9061380d565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600360009054906101000a900460ff16905090565b6000610f08610e736121a9565b848460066000610e816121a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f039190613890565b6121b1565b6001905092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b610f3a6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbe9061380d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561100d573d6000803e3d6000fd5b5050565b600c5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110686121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec9061380d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900460ff1681565b60125481565b60135481565b60096020528060005260406000206000915054906101000a900460ff1681565b6112206121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a49061380d565b60405180910390fd5b670de0b6b3a7640000816112c191906138c4565b600b8190555050565b600f60019054906101000a900460ff1681565b6112e56121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611372576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113699061380d565b60405180910390fd5b600f60029054906101000a900460ff16156113c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b990613952565b60405180910390fd5b6001600f60026101000a81548160ff0219169083151502179055506001600f60016101000a81548160ff0219169083151502179055506001600f60006101000a81548160ff02191690831515021790555042600e81905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61144d6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d19061380d565b60405180910390fd5b8060128190555050565b6060600280546114f390613790565b80601f016020809104026020016040519081016040528092919081815260200182805461151f90613790565b801561156c5780601f106115415761010080835404028352916020019161156c565b820191906000526020600020905b81548152906001019060200180831161154f57829003601f168201915b5050505050905090565b60086020528060005260406000206000915054906101000a900460ff1681565b600b5481565b6115a46121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611631576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116289061380d565b60405180910390fd5b670de0b6b3a76400008161164591906138c4565b600c8190555050565b6116566121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116da9061380d565b60405180910390fd5b808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161171d919061365b565b602060405180830381865afa15801561173a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175e9190613987565b101561179f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179690613a00565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016117da929190613a20565b6020604051808303816000875af11580156117f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181d9190613a5e565b505050565b61182a6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ae9061380d565b60405180910390fd5b8060138190555050565b60006119636118ce6121a9565b8484600660006118dc6121a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461195e919061385c565b6121b1565b6001905092915050565b6119756121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f99061380d565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a4e6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad29061380d565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611b4a611b436121a9565b848461237a565b6001905092915050565b611b5c6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be09061380d565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b600e5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c9b6121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f9061380d565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60029054906101000a900460ff1681565b600080600d5460125484611daa91906138c4565b611db49190613aba565b905080915050919050565b611dc76121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4b9061380d565b60405180910390fd5b670de0b6b3a764000081611e6891906138c4565b600a8190555050565b611e796121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efd9061380d565b60405180910390fd5b80471015611f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4090613a00565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f8f573d6000803e3d6000fd5b5050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611fc16121a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461204e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120459061380d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b490613b5d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600d546013548461218e91906138c4565b6121989190613aba565b905080915050919050565b600d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612220576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221790613bc9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361228f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228690613c35565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161236d919061353a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e090613ca1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244f90613d0d565b60405180910390fd5b6000811161249b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249290613d79565b60405180910390fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561253f5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561268a57600c54811115612589576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258090613de5565b60405180910390fd5b600f60029054906101000a900460ff16612689578273ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561264957508173ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b612688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267f90613e51565b60405180910390fd5b5b5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661273457600b54816126e884611017565b6126f29190613890565b1115612733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272a90613ebd565b60405180910390fd5b5b61273e8383612819565b600060019050600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127e55750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806127fd5750600f60019054906101000a900460ff16155b1561280757600090505b61281384848484612a16565b50505050565b600061282430611017565b90506000600a54821015905080801561288b5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156128a35750600f60009054906101000a900460ff165b801561293457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156129325750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b15612a105761296830600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a546121b1565b612996600f60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a54612fba565b60004790506000811115612a0e57601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612a0c573d6000803e3d6000fd5b505b505b50505050565b8373ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612a705750805b15612c2357600080612a8184611d96565b91508184612a8f919061385c565b905083600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612adc919061385c565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b6a9190613890565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c0a919061353a565b60405180910390a3612c1c86836131a0565b5050612fb4565b8273ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612c7d5750805b15612e31576000612c8d8361217a565b905060008184612c9d919061385c565b905083600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612cea919061385c565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d789190613890565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e18919061353a565b60405180910390a3612e2a86836131a0565b5050612fb3565b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e7c919061385c565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f0a9190613890565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612faa919061353a565b60405180910390a35b5b50505050565b60008290506000600267ffffffffffffffff811115612fdc57612fdb613edd565b5b60405190808252806020026020018201604052801561300a5781602001602082028036833780820191505090505b509050308160008151811061302257613021613f0c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130cb9190613f50565b816001815181106130df576130de613f0c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c426131489190613890565b6040518663ffffffff1660e01b8152600401613168959493929190614076565b600060405180830381600087803b15801561318257600080fd5b505af1158015613196573d6000803e3d6000fd5b5050505050505050565b80600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131eb9190613890565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161328b919061353a565b60405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b838110156132d15780820151818401526020810190506132b6565b60008484015250505050565b6000601f19601f8301169050919050565b60006132f982613297565b61330381856132a2565b93506133138185602086016132b3565b61331c816132dd565b840191505092915050565b6000602082019050818103600083015261334181846132ee565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061338e61338961338484613349565b613369565b613349565b9050919050565b60006133a082613373565b9050919050565b60006133b282613395565b9050919050565b6133c2816133a7565b82525050565b60006020820190506133dd60008301846133b9565b92915050565b600080fd5b60006133f382613349565b9050919050565b613403816133e8565b811461340e57600080fd5b50565b600081359050613420816133fa565b92915050565b6000819050919050565b61343981613426565b811461344457600080fd5b50565b60008135905061345681613430565b92915050565b60008060408385031215613473576134726133e3565b5b600061348185828601613411565b925050602061349285828601613447565b9150509250929050565b60008115159050919050565b6134b18161349c565b82525050565b60006020820190506134cc60008301846134a8565b92915050565b6134db8161349c565b81146134e657600080fd5b50565b6000813590506134f8816134d2565b92915050565b600060208284031215613514576135136133e3565b5b6000613522848285016134e9565b91505092915050565b61353481613426565b82525050565b600060208201905061354f600083018461352b565b92915050565b60008060006060848603121561356e5761356d6133e3565b5b600061357c86828701613411565b935050602061358d86828701613411565b925050604061359e86828701613447565b9150509250925092565b600080604083850312156135bf576135be6133e3565b5b60006135cd85828601613411565b92505060206135de858286016134e9565b9150509250929050565b600060ff82169050919050565b6135fe816135e8565b82525050565b600060208201905061361960008301846135f5565b92915050565b600060208284031215613635576136346133e3565b5b600061364384828501613411565b91505092915050565b613655816133e8565b82525050565b6000602082019050613670600083018461364c565b92915050565b60006020828403121561368c5761368b6133e3565b5b600061369a84828501613447565b91505092915050565b60006136ae826133e8565b9050919050565b6136be816136a3565b81146136c957600080fd5b50565b6000813590506136db816136b5565b92915050565b600080604083850312156136f8576136f76133e3565b5b6000613706858286016136cc565b925050602061371785828601613447565b9150509250929050565b60008060408385031215613738576137376133e3565b5b600061374685828601613411565b925050602061375785828601613411565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806137a857607f821691505b6020821081036137bb576137ba613761565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137f76020836132a2565b9150613802826137c1565b602082019050919050565b60006020820190508181036000830152613826816137ea565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061386782613426565b915061387283613426565b925082820390508181111561388a5761388961382d565b5b92915050565b600061389b82613426565b91506138a683613426565b92508282019050808211156138be576138bd61382d565b5b92915050565b60006138cf82613426565b91506138da83613426565b92508282026138e881613426565b915082820484148315176138ff576138fe61382d565b5b5092915050565b7f3a20616c726561647920656e61626c6564000000000000000000000000000000600082015250565b600061393c6011836132a2565b915061394782613906565b602082019050919050565b6000602082019050818103600083015261396b8161392f565b9050919050565b60008151905061398181613430565b92915050565b60006020828403121561399d5761399c6133e3565b5b60006139ab84828501613972565b91505092915050565b7f496e76616c696420416d6f756e74000000000000000000000000000000000000600082015250565b60006139ea600e836132a2565b91506139f5826139b4565b602082019050919050565b60006020820190508181036000830152613a19816139dd565b9050919050565b6000604082019050613a35600083018561364c565b613a42602083018461352b565b9392505050565b600081519050613a58816134d2565b92915050565b600060208284031215613a7457613a736133e3565b5b6000613a8284828501613a49565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ac582613426565b9150613ad083613426565b925082613ae057613adf613a8b565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613b476026836132a2565b9150613b5282613aeb565b604082019050919050565b60006020820190508181036000830152613b7681613b3a565b9050919050565b7f20617070726f76652066726f6d20746865207a65726f20616464726573730000600082015250565b6000613bb3601e836132a2565b9150613bbe82613b7d565b602082019050919050565b60006020820190508181036000830152613be281613ba6565b9050919050565b7f617070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b6000613c1f601b836132a2565b9150613c2a82613be9565b602082019050919050565b60006020820190508181036000830152613c4e81613c12565b9050919050565b7f7472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b6000613c8b601e836132a2565b9150613c9682613c55565b602082019050919050565b60006020820190508181036000830152613cba81613c7e565b9050919050565b7f7472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b6000613cf7601c836132a2565b9150613d0282613cc1565b602082019050919050565b60006020820190508181036000830152613d2681613cea565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f600082015250565b6000613d636020836132a2565b9150613d6e82613d2d565b602082019050919050565b60006020820190508181036000830152613d9281613d56565b9050919050565b7f206d61782074786e206c696d6974206578636565647300000000000000000000600082015250565b6000613dcf6016836132a2565b9150613dda82613d99565b602082019050919050565b60006020820190508181036000830152613dfe81613dc2565b9050919050565b7f3a2074726164696e672069732064697361626c65000000000000000000000000600082015250565b6000613e3b6014836132a2565b9150613e4682613e05565b602082019050919050565b60006020820190508181036000830152613e6a81613e2e565b9050919050565b7f3a206d617820686f6c64206c696d697420657863656564730000000000000000600082015250565b6000613ea76018836132a2565b9150613eb282613e71565b602082019050919050565b60006020820190508181036000830152613ed681613e9a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613f4a816133fa565b92915050565b600060208284031215613f6657613f656133e3565b5b6000613f7484828501613f3b565b91505092915050565b6000819050919050565b6000613fa2613f9d613f9884613f7d565b613369565b613426565b9050919050565b613fb281613f87565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613fed816133e8565b82525050565b6000613fff8383613fe4565b60208301905092915050565b6000602082019050919050565b600061402382613fb8565b61402d8185613fc3565b935061403883613fd4565b8060005b838110156140695781516140508882613ff3565b975061405b8361400b565b92505060018101905061403c565b5085935050505092915050565b600060a08201905061408b600083018861352b565b6140986020830187613fa9565b81810360408301526140aa8186614018565b90506140b9606083018561364c565b6140c6608083018461352b565b969550505050505056fea264697066735822122012e00241dc32d6ee4f216e3a3d251db25ff51fc17f5023167c42f3deeb09603d64736f6c63430008120033

Deployed Bytecode Sourcemap

3170:11867:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6144:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4338:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7032:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9330:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6421:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3729:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7226:350;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8532:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6330:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7584:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3549:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9938:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3946:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6529:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2717:157;;;;;;;;;;;;;:::i;:::-;;4453:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4121:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4628:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4677:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3664:56;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8834:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4217:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9691:239;;;;;;;;;;;;;:::i;:::-;;2503:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9066:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6235:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3605:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3843:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8951:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13947:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9197:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7884:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9560:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8359:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6656:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9453:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4087:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6856:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8192:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4267:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10075:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8713:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13709:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4396:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2882:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10259:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4045:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6144:83;6181:13;6214:5;6207:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6144:83;:::o;4338:27::-;;;;;;;;;;;;;:::o;7032:186::-;7132:4;7149:39;7158:12;:10;:12::i;:::-;7172:7;7181:6;7149:8;:39::i;:::-;7206:4;7199:11;;7032:186;;;;:::o;9330:115::-;2640:12;:10;:12::i;:::-;2630:22;;:6;;;;;;;;;;:22;;;2622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9431:6:::1;9402:26;;:35;;;;;;;;;;;;;;;;;;9330:115:::0;:::o;6421:100::-;6474:7;6501:12;;6494:19;;6421:100;:::o;3729:59::-;;;;:::o;7226:350::-;7358:4;7375:36;7385:6;7393:9;7404:6;7375:9;:36::i;:::-;7422:124;7445:6;7466:12;:10;:12::i;:::-;7529:6;7493:11;:19;7505:6;7493:19;;;;;;;;;;;;;;;:33;7513:12;:10;:12::i;:::-;7493:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;7422:8;:124::i;:::-;7564:4;7557:11;;7226:350;;;;;:::o;8532:173::-;2640:12;:10;:12::i;:::-;2630:22;;:6;;;;;;;;;;:22;;;2622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8692:5:::1;8656:24;:33;8681:7;8656:33;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;8532:173:::0;;:::o;6330:83::-;6371:5;6396:9;;;;;;;;;;;6389:16;;6330:83;:::o;7584:292::-;7697:4;7714:132;7737:12;:10;:12::i;:::-;7764:7;7824:10;7786:11;:25;7798:12;:10;:12::i;:::-;7786:25;;;;;;;;;;;;;;;:34;7812:7;7786:34;;;;;;;;;;;;;;;;:49;;;;:::i;:::-;7714:8;:132::i;:::-;7864:4;7857:11;;7584:292;;;;:::o;3549:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;9938:129::-;2640:12;:10;:12::i;:::-;2630:22;;:6;;;;;;;;;;:22;;;2622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10017:9:::1;10009:27;;:50;10037:21;10009:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;9938:129:::0;:::o;3946:55::-;;;;:::o;6529:119::-;6595:7;6622:9;:18;6632:7;6622:18;;;;;;;;;;;;;;;;6615:25;;6529:119;;;:::o;2717:157::-;2640:12;:10;:12::i;:::-;2630:22;;:6;;;;;;;;;;:22;;;2622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2824:1:::1;2787:40;;2808:6;::::0;::::1;;;;;;;;2787:40;;;;;;;;;;;;2863:1;2838:6:::0;::::1;:28;;;;;;;;;;;;;;;;;;2717:157::o:0;4453:30::-;;;;;;;;;;;;;:::o;4121:38::-;;;;;;;;;;;;;:::o;4628:40::-;;;;:::o;4677:41::-;;;;:::o;3664:56::-;;;;;;;;;;;;;;;;;;;;;;:::o;8834:109::-;2640:12;:10;:12::i;:::-;2630:22;;:6;;;;;;;;;;:22;;;2622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8931:4:::1;8921:7;:14;;;;:::i;:::-;8906:12;:29;;;;8834:109:::0;:::o;4217:22::-;;;;;;;;;;;;;:::o;9691:239::-;2640:12;:10;:12::i;:::-;2630:22;;:6;;;;;;;;;;:22;;;2622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9755:7:::1;;;;;;;;;;;9754:8;9746:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9807:4;9797:7;;:14;;;;;;;;;;;;;;;;;;9835:4;9822:10;;:17;;;;;;;;;;;;;;;;;;9879:4;9850:26;;:33;;;;;;;;;;;;;;;;;;9907:15;9894:10;:28;;;;9691:239::o:0;2503:79::-;2541:7;2568:6;;;;;;;;;;;2561:13;;2503:79;:::o;9066:123::-;2640:12;:10;:12::i;:::-;2630:22;;:6;;;;;;;;;;:22;;;2622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9168:13:::1;9145:20;:36;;;;9066:123:::0;:::o;6235:87::-;6274:13;6307:7;6300:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6235:87;:::o;3605:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;3843:56::-;;;;:::o;8951:107::-;2640:12;:10;:12::i;:::-;2630:22;;:6;;;;;;;;;;:22;;;2622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9046:4:::1;9036:7;:14;;;;:::i;:::-;9022:11;:28;;;;8951:107:::0;:::o;13947:209::-;2640:12;:10;:12::i;:::-;2630:22;;:6;;;;;;;;;;:22;;;2622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14075:7:::1;14040:6;:16;;;14065:4;14040:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:42;;14032:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;14112:6;:15;;;14128:10;14140:7;14112:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13947:209:::0;;:::o;9197:125::-;2640:12;:10;:12::i;:::-;2630:22;;:6;;;;;;;;;;:22;;;2622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9301:13:::1;9277:21;:37;;;;9197:125:::0;:::o;7884:300::-;8002:4;8019:135;8042:12;:10;:12::i;:::-;8069:7;8128:15;8091:11;:25;8103:12;:10;:12::i;:::-;8091:25;;;;;;;;;;;;;;;:34;8117:7;8091:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;8019:8;:135::i;:::-;8172:4;8165:11;;7884:300;;;;:::o;9560:123::-;2640:12;:10;:12::i;:::-;2630:22;;:6;;;;;;;;;;:22;;;2622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9659:16:::1;9641:15;;:34;;;;;;;;;;;;;;;;;;9560:123:::0;:::o;8359:165::-;2640:12;:10;:12::i;:::-;2630:22;;:6;;;;;;;;;;:22;;;2622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8511:5:::1;8479:20;:29;8500:7;8479:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;8359:165:::0;;:::o;6656:192::-;6759:4;6776:42;6786:12;:10;:12::i;:::-;6800:9;6811:6;6776:9;:42::i;:::-;6836:4;6829:11;;6656:192;;;;:::o;9453:99::-;2640:12;:10;:12::i;:::-;2630:22;;:6;;;;;;;;;;:22;;;2622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9538:6:::1;9525:10;;:19;;;;;;;;;;;;;;;;;;9453:99:::0;:::o;4087:25::-;;;;:::o;6856:168::-;6962:7;6989:11;:18;7001:5;6989:18;;;;;;;;;;;;;;;:27;7008:7;6989:27;;;;;;;;;;;;;;;;6982:34;;6856:168;;;;:::o;8192:159::-;2640:12;:10;:12::i;:::-;2630:22;;:6;;;;;;;;;;:22;;;2622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8338:5:::1;8309:17;:26;8327:7;8309:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;8192:159:::0;;:::o;4267:19::-;;;;;;;;;;;;;:::o;10075:176::-;10138:7;10158:11;10207:14;;10182:20;;10173:6;:29;;;;:::i;:::-;10172:50;;;;:::i;:::-;10158:64;;10240:3;10233:10;;;10075:176;;;:::o;8713:113::-;2640:12;:10;:12::i;:::-;2630:22;;:6;;;;;;;;;;:22;;;2622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8814:4:::1;8804:7;:14;;;;:::i;:::-;8787;:31;;;;8713:113:::0;:::o;13709:183::-;2640:12;:10;:12::i;:::-;2630:22;;:6;;;;;;;;;;:22;;;2622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13810:7:::1;13785:21;:32;;13777:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13855:10;13847:28;;:37;13876:7;13847:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13709:183:::0;:::o;4396:22::-;;;;;;;;;;;;;:::o;2882:281::-;2640:12;:10;:12::i;:::-;2630:22;;:6;;;;;;;;;;:22;;;2622:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3005:1:::1;2985:22;;:8;:22;;::::0;2963:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3118:8;3089:38;;3110:6;::::0;::::1;;;;;;;;3089:38;;;;;;;;;;;;3147:8;3138:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2882:281:::0;:::o;10259:178::-;10323:7;10343:11;10393:14;;10367:21;;10358:6;:30;;;;:::i;:::-;10357:51;;;;:::i;:::-;10343:65;;10426:3;10419:10;;;10259:178;;;:::o;4045:35::-;;;;:::o;1839:115::-;1892:15;1935:10;1920:26;;1839:115;:::o;10445:324::-;10555:1;10538:19;;:5;:19;;;10530:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10630:1;10611:21;;:7;:21;;;10603:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;10707:6;10677:11;:18;10689:5;10677:18;;;;;;;;;;;;;;;:27;10696:7;10677:27;;;;;;;;;;;;;;;:36;;;;10745:7;10729:32;;10738:5;10729:32;;;10754:6;10729:32;;;;;;:::i;:::-;;;;;;;;10445:324;;;:::o;10777:1364::-;10881:1;10865:18;;:4;:18;;;10857:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;10951:1;10937:16;;:2;:16;;;10929:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11014:1;11005:6;:10;10997:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;11068:20;:26;11089:4;11068:26;;;;;;;;;;;;;;;;;;;;;;;;;11067:27;:56;;;;;11099:20;:24;11120:2;11099:24;;;;;;;;;;;;;;;;;;;;;;;;;11098:25;11067:56;11063:380;;;11158:11;;11148:6;:21;;11140:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;11262:7;;;;;;;;;;;11257:175;;11331:4;11320:15;;:7;;;;;;;;;;;:15;;;;:32;;;;;11350:2;11339:13;;:7;;;;;;;;;;;:13;;;;11320:32;11290:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;11257:175;11063:380;11460:24;:28;11485:2;11460:28;;;;;;;;;;;;;;;;;;;;;;;;;11455:188;;11559:12;;11548:6;11532:13;11542:2;11532:9;:13::i;:::-;:22;;;;:::i;:::-;11531:40;;11505:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;11455:188;11684:30;11705:4;11711:2;11684:20;:30::i;:::-;11788:12;11803:4;11788:19;;11907:17;:23;11925:4;11907:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;11934:17;:21;11952:2;11934:21;;;;;;;;;;;;;;;;;;;;;;;;;11907:48;:63;;;;11960:10;;;;;;;;;;;11959:11;11907:63;11903:111;;;11997:5;11987:15;;11903:111;12092:41;12107:4;12113:2;12117:6;12125:7;12092:14;:41::i;:::-;10846:1295;10777:1364;;;:::o;14164:870::-;14239:28;14270:24;14288:4;14270:9;:24::i;:::-;14239:55;;14307:15;14349:14;;14325:20;:38;;14307:56;;14394:10;:42;;;;;14429:7;;;;;;;;;;;14421:15;;:4;:15;;;;14394:42;:85;;;;;14453:26;;;;;;;;;;;14394:85;:143;;;;;14514:4;14498:21;;:4;:21;;;:38;;;;;14529:7;;;;;;;;;;;14523:13;;:2;:13;;;14498:38;14496:41;14394:143;14376:651;;;14612:59;14629:4;14644:9;;;;;;;;;;;14656:14;;14612:8;:59::i;:::-;14738:58;14769:9;;;;;;;;;;;14781:14;;14738:22;:58::i;:::-;14811:23;14837:21;14811:47;;14945:1;14927:15;:19;14923:92;;;14973:15;;;;;;;;;;;14965:33;;:50;14999:15;14965:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14923:92;14564:463;14376:651;14228:806;;14164:870;;:::o;12223:1232::-;12389:6;12378:17;;:7;;;;;;;;;;;:17;;;:28;;;;;12399:7;12378:28;12374:1074;;;12423:14;12452:23;12499:24;12516:6;12499:16;:24::i;:::-;12490:33;;12565:6;12556;:15;;;;:::i;:::-;12538:33;;12628:6;12608:9;:17;12618:6;12608:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;12588:9;:17;12598:6;12588:17;;;;;;;;;;;;;;;:46;;;;12695:15;12672:9;:20;12682:9;12672:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;12649:9;:20;12659:9;12649:20;;;;;;;;;;;;;;;:61;;;;12747:9;12730:44;;12739:6;12730:44;;;12758:15;12730:44;;;;;;:::i;:::-;;;;;;;;12791:28;12804:6;12812;12791:12;:28::i;:::-;12408:423;;12374:1074;;;12852:9;12841:20;;:7;;;;;;;;;;;:20;;;:31;;;;;12865:7;12841:31;12837:611;;;12889:14;12906:25;12924:6;12906:17;:25::i;:::-;12889:42;;12946:23;12981:6;12972;:15;;;;:::i;:::-;12946:41;;13042:6;13022:9;:17;13032:6;13022:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;13002:9;:17;13012:6;13002:17;;;;;;;;;;;;;;;:46;;;;13109:15;13086:9;:20;13096:9;13086:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;13063:9;:20;13073:9;13063:20;;;;;;;;;;;;;;;:61;;;;13161:9;13144:44;;13153:6;13144:44;;;13172:15;13144:44;;;;;;:::i;:::-;;;;;;;;13205:28;13218:6;13226;13205:12;:28::i;:::-;12874:371;;12837:611;;;13306:6;13286:9;:17;13296:6;13286:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;13266:9;:17;13276:6;13266:17;;;;;;;;;;;;;;;:46;;;;13374:6;13350:9;:20;13360:9;13350:20;;;;;;;;;;;;;;;;:31;;;;:::i;:::-;13327:9;:20;13337:9;13327:20;;;;;;;;;;;;;;;:54;;;;13418:9;13401:35;;13410:6;13401:35;;;13429:6;13401:35;;;;;;:::i;:::-;;;;;;;;12837:611;12374:1074;12223:1232;;;;:::o;15094:614::-;15209:20;15243:13;15209:48;;15326:21;15364:1;15350:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15326:40;;15395:4;15377;15382:1;15377:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15421:9;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15411:4;15416:1;15411:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;15476:9;:60;;;15551:11;15577:1;15621:4;15648;15686:3;15668:15;:21;;;;:::i;:::-;15476:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15198:510;;15094:614;;:::o;13463:200::-;13591:6;13563:9;:24;13581:4;13563:24;;;;;;;;;;;;;;;;:35;;;;:::i;:::-;13536:9;:24;13554:4;13536:24;;;;;;;;;;;;;;;:62;;;;13641:4;13616:39;;13625:6;13616:39;;;13648:6;13616:39;;;;;;:::i;:::-;;;;;;;;13463:200;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:126::-;1386:7;1426:42;1419:5;1415:54;1404:65;;1349:126;;;:::o;1481:60::-;1509:3;1530:5;1523:12;;1481:60;;;:::o;1547:142::-;1597:9;1630:53;1648:34;1657:24;1675:5;1657:24;:::i;:::-;1648:34;:::i;:::-;1630:53;:::i;:::-;1617:66;;1547:142;;;:::o;1695:126::-;1745:9;1778:37;1809:5;1778:37;:::i;:::-;1765:50;;1695:126;;;:::o;1827:144::-;1895:9;1928:37;1959:5;1928:37;:::i;:::-;1915:50;;1827:144;;;:::o;1977:167::-;2082:55;2131:5;2082:55;:::i;:::-;2077:3;2070:68;1977:167;;:::o;2150:258::-;2261:4;2299:2;2288:9;2284:18;2276:26;;2312:89;2398:1;2387:9;2383:17;2374:6;2312:89;:::i;:::-;2150:258;;;;:::o;2495:117::-;2604:1;2601;2594:12;2741:96;2778:7;2807:24;2825:5;2807:24;:::i;:::-;2796:35;;2741:96;;;:::o;2843:122::-;2916:24;2934:5;2916:24;:::i;:::-;2909:5;2906:35;2896:63;;2955:1;2952;2945:12;2896:63;2843:122;:::o;2971:139::-;3017:5;3055:6;3042:20;3033:29;;3071:33;3098:5;3071:33;:::i;:::-;2971:139;;;;:::o;3116:77::-;3153:7;3182:5;3171:16;;3116:77;;;:::o;3199:122::-;3272:24;3290:5;3272:24;:::i;:::-;3265:5;3262:35;3252:63;;3311:1;3308;3301:12;3252:63;3199:122;:::o;3327:139::-;3373:5;3411:6;3398:20;3389:29;;3427:33;3454:5;3427:33;:::i;:::-;3327:139;;;;:::o;3472:474::-;3540:6;3548;3597:2;3585:9;3576:7;3572:23;3568:32;3565:119;;;3603:79;;:::i;:::-;3565:119;3723:1;3748:53;3793:7;3784:6;3773:9;3769:22;3748:53;:::i;:::-;3738:63;;3694:117;3850:2;3876:53;3921:7;3912:6;3901:9;3897:22;3876:53;:::i;:::-;3866:63;;3821:118;3472:474;;;;;:::o;3952:90::-;3986:7;4029:5;4022:13;4015:21;4004:32;;3952:90;;;:::o;4048:109::-;4129:21;4144:5;4129:21;:::i;:::-;4124:3;4117:34;4048:109;;:::o;4163:210::-;4250:4;4288:2;4277:9;4273:18;4265:26;;4301:65;4363:1;4352:9;4348:17;4339:6;4301:65;:::i;:::-;4163:210;;;;:::o;4379:116::-;4449:21;4464:5;4449:21;:::i;:::-;4442:5;4439:32;4429:60;;4485:1;4482;4475:12;4429:60;4379:116;:::o;4501:133::-;4544:5;4582:6;4569:20;4560:29;;4598:30;4622:5;4598:30;:::i;:::-;4501:133;;;;:::o;4640:323::-;4696:6;4745:2;4733:9;4724:7;4720:23;4716:32;4713:119;;;4751:79;;:::i;:::-;4713:119;4871:1;4896:50;4938:7;4929:6;4918:9;4914:22;4896:50;:::i;:::-;4886:60;;4842:114;4640:323;;;;:::o;4969:118::-;5056:24;5074:5;5056:24;:::i;:::-;5051:3;5044:37;4969:118;;:::o;5093:222::-;5186:4;5224:2;5213:9;5209:18;5201:26;;5237:71;5305:1;5294:9;5290:17;5281:6;5237:71;:::i;:::-;5093:222;;;;:::o;5321:619::-;5398:6;5406;5414;5463:2;5451:9;5442:7;5438:23;5434:32;5431:119;;;5469:79;;:::i;:::-;5431:119;5589:1;5614:53;5659:7;5650:6;5639:9;5635:22;5614:53;:::i;:::-;5604:63;;5560:117;5716:2;5742:53;5787:7;5778:6;5767:9;5763:22;5742:53;:::i;:::-;5732:63;;5687:118;5844:2;5870:53;5915:7;5906:6;5895:9;5891:22;5870:53;:::i;:::-;5860:63;;5815:118;5321:619;;;;;:::o;5946:468::-;6011:6;6019;6068:2;6056:9;6047:7;6043:23;6039:32;6036:119;;;6074:79;;:::i;:::-;6036:119;6194:1;6219:53;6264:7;6255:6;6244:9;6240:22;6219:53;:::i;:::-;6209:63;;6165:117;6321:2;6347:50;6389:7;6380:6;6369:9;6365:22;6347:50;:::i;:::-;6337:60;;6292:115;5946:468;;;;;:::o;6420:86::-;6455:7;6495:4;6488:5;6484:16;6473:27;;6420:86;;;:::o;6512:112::-;6595:22;6611:5;6595:22;:::i;:::-;6590:3;6583:35;6512:112;;:::o;6630:214::-;6719:4;6757:2;6746:9;6742:18;6734:26;;6770:67;6834:1;6823:9;6819:17;6810:6;6770:67;:::i;:::-;6630:214;;;;:::o;6850:329::-;6909:6;6958:2;6946:9;6937:7;6933:23;6929:32;6926:119;;;6964:79;;:::i;:::-;6926:119;7084:1;7109:53;7154:7;7145:6;7134:9;7130:22;7109:53;:::i;:::-;7099:63;;7055:117;6850:329;;;;:::o;7185:118::-;7272:24;7290:5;7272:24;:::i;:::-;7267:3;7260:37;7185:118;;:::o;7309:222::-;7402:4;7440:2;7429:9;7425:18;7417:26;;7453:71;7521:1;7510:9;7506:17;7497:6;7453:71;:::i;:::-;7309:222;;;;:::o;7537:329::-;7596:6;7645:2;7633:9;7624:7;7620:23;7616:32;7613:119;;;7651:79;;:::i;:::-;7613:119;7771:1;7796:53;7841:7;7832:6;7821:9;7817:22;7796:53;:::i;:::-;7786:63;;7742:117;7537:329;;;;:::o;7872:109::-;7922:7;7951:24;7969:5;7951:24;:::i;:::-;7940:35;;7872:109;;;:::o;7987:148::-;8073:37;8104:5;8073:37;:::i;:::-;8066:5;8063:48;8053:76;;8125:1;8122;8115:12;8053:76;7987:148;:::o;8141:165::-;8200:5;8238:6;8225:20;8216:29;;8254:46;8294:5;8254:46;:::i;:::-;8141:165;;;;:::o;8312:500::-;8393:6;8401;8450:2;8438:9;8429:7;8425:23;8421:32;8418:119;;;8456:79;;:::i;:::-;8418:119;8576:1;8601:66;8659:7;8650:6;8639:9;8635:22;8601:66;:::i;:::-;8591:76;;8547:130;8716:2;8742:53;8787:7;8778:6;8767:9;8763:22;8742:53;:::i;:::-;8732:63;;8687:118;8312:500;;;;;:::o;8818:474::-;8886:6;8894;8943:2;8931:9;8922:7;8918:23;8914:32;8911:119;;;8949:79;;:::i;:::-;8911:119;9069:1;9094:53;9139:7;9130:6;9119:9;9115:22;9094:53;:::i;:::-;9084:63;;9040:117;9196:2;9222:53;9267:7;9258:6;9247:9;9243:22;9222:53;:::i;:::-;9212:63;;9167:118;8818:474;;;;;:::o;9298:180::-;9346:77;9343:1;9336:88;9443:4;9440:1;9433:15;9467:4;9464:1;9457:15;9484:320;9528:6;9565:1;9559:4;9555:12;9545:22;;9612:1;9606:4;9602:12;9633:18;9623:81;;9689:4;9681:6;9677:17;9667:27;;9623:81;9751:2;9743:6;9740:14;9720:18;9717:38;9714:84;;9770:18;;:::i;:::-;9714:84;9535:269;9484:320;;;:::o;9810:182::-;9950:34;9946:1;9938:6;9934:14;9927:58;9810:182;:::o;9998:366::-;10140:3;10161:67;10225:2;10220:3;10161:67;:::i;:::-;10154:74;;10237:93;10326:3;10237:93;:::i;:::-;10355:2;10350:3;10346:12;10339:19;;9998:366;;;:::o;10370:419::-;10536:4;10574:2;10563:9;10559:18;10551:26;;10623:9;10617:4;10613:20;10609:1;10598:9;10594:17;10587:47;10651:131;10777:4;10651:131;:::i;:::-;10643:139;;10370:419;;;:::o;10795:180::-;10843:77;10840:1;10833:88;10940:4;10937:1;10930:15;10964:4;10961:1;10954:15;10981:194;11021:4;11041:20;11059:1;11041:20;:::i;:::-;11036:25;;11075:20;11093:1;11075:20;:::i;:::-;11070:25;;11119:1;11116;11112:9;11104:17;;11143:1;11137:4;11134:11;11131:37;;;11148:18;;:::i;:::-;11131:37;10981:194;;;;:::o;11181:191::-;11221:3;11240:20;11258:1;11240:20;:::i;:::-;11235:25;;11274:20;11292:1;11274:20;:::i;:::-;11269:25;;11317:1;11314;11310:9;11303:16;;11338:3;11335:1;11332:10;11329:36;;;11345:18;;:::i;:::-;11329:36;11181:191;;;;:::o;11378:410::-;11418:7;11441:20;11459:1;11441:20;:::i;:::-;11436:25;;11475:20;11493:1;11475:20;:::i;:::-;11470:25;;11530:1;11527;11523:9;11552:30;11570:11;11552:30;:::i;:::-;11541:41;;11731:1;11722:7;11718:15;11715:1;11712:22;11692:1;11685:9;11665:83;11642:139;;11761:18;;:::i;:::-;11642:139;11426:362;11378:410;;;;:::o;11794:167::-;11934:19;11930:1;11922:6;11918:14;11911:43;11794:167;:::o;11967:366::-;12109:3;12130:67;12194:2;12189:3;12130:67;:::i;:::-;12123:74;;12206:93;12295:3;12206:93;:::i;:::-;12324:2;12319:3;12315:12;12308:19;;11967:366;;;:::o;12339:419::-;12505:4;12543:2;12532:9;12528:18;12520:26;;12592:9;12586:4;12582:20;12578:1;12567:9;12563:17;12556:47;12620:131;12746:4;12620:131;:::i;:::-;12612:139;;12339:419;;;:::o;12764:143::-;12821:5;12852:6;12846:13;12837:22;;12868:33;12895:5;12868:33;:::i;:::-;12764:143;;;;:::o;12913:351::-;12983:6;13032:2;13020:9;13011:7;13007:23;13003:32;13000:119;;;13038:79;;:::i;:::-;13000:119;13158:1;13183:64;13239:7;13230:6;13219:9;13215:22;13183:64;:::i;:::-;13173:74;;13129:128;12913:351;;;;:::o;13270:164::-;13410:16;13406:1;13398:6;13394:14;13387:40;13270:164;:::o;13440:366::-;13582:3;13603:67;13667:2;13662:3;13603:67;:::i;:::-;13596:74;;13679:93;13768:3;13679:93;:::i;:::-;13797:2;13792:3;13788:12;13781:19;;13440:366;;;:::o;13812:419::-;13978:4;14016:2;14005:9;14001:18;13993:26;;14065:9;14059:4;14055:20;14051:1;14040:9;14036:17;14029:47;14093:131;14219:4;14093:131;:::i;:::-;14085:139;;13812:419;;;:::o;14237:332::-;14358:4;14396:2;14385:9;14381:18;14373:26;;14409:71;14477:1;14466:9;14462:17;14453:6;14409:71;:::i;:::-;14490:72;14558:2;14547:9;14543:18;14534:6;14490:72;:::i;:::-;14237:332;;;;;:::o;14575:137::-;14629:5;14660:6;14654:13;14645:22;;14676:30;14700:5;14676:30;:::i;:::-;14575:137;;;;:::o;14718:345::-;14785:6;14834:2;14822:9;14813:7;14809:23;14805:32;14802:119;;;14840:79;;:::i;:::-;14802:119;14960:1;14985:61;15038:7;15029:6;15018:9;15014:22;14985:61;:::i;:::-;14975:71;;14931:125;14718:345;;;;:::o;15069:180::-;15117:77;15114:1;15107:88;15214:4;15211:1;15204:15;15238:4;15235:1;15228:15;15255:185;15295:1;15312:20;15330:1;15312:20;:::i;:::-;15307:25;;15346:20;15364:1;15346:20;:::i;:::-;15341:25;;15385:1;15375:35;;15390:18;;:::i;:::-;15375:35;15432:1;15429;15425:9;15420:14;;15255:185;;;;:::o;15446:225::-;15586:34;15582:1;15574:6;15570:14;15563:58;15655:8;15650:2;15642:6;15638:15;15631:33;15446:225;:::o;15677:366::-;15819:3;15840:67;15904:2;15899:3;15840:67;:::i;:::-;15833:74;;15916:93;16005:3;15916:93;:::i;:::-;16034:2;16029:3;16025:12;16018:19;;15677:366;;;:::o;16049:419::-;16215:4;16253:2;16242:9;16238:18;16230:26;;16302:9;16296:4;16292:20;16288:1;16277:9;16273:17;16266:47;16330:131;16456:4;16330:131;:::i;:::-;16322:139;;16049:419;;;:::o;16474:180::-;16614:32;16610:1;16602:6;16598:14;16591:56;16474:180;:::o;16660:366::-;16802:3;16823:67;16887:2;16882:3;16823:67;:::i;:::-;16816:74;;16899:93;16988:3;16899:93;:::i;:::-;17017:2;17012:3;17008:12;17001:19;;16660:366;;;:::o;17032:419::-;17198:4;17236:2;17225:9;17221:18;17213:26;;17285:9;17279:4;17275:20;17271:1;17260:9;17256:17;17249:47;17313:131;17439:4;17313:131;:::i;:::-;17305:139;;17032:419;;;:::o;17457:177::-;17597:29;17593:1;17585:6;17581:14;17574:53;17457:177;:::o;17640:366::-;17782:3;17803:67;17867:2;17862:3;17803:67;:::i;:::-;17796:74;;17879:93;17968:3;17879:93;:::i;:::-;17997:2;17992:3;17988:12;17981:19;;17640:366;;;:::o;18012:419::-;18178:4;18216:2;18205:9;18201:18;18193:26;;18265:9;18259:4;18255:20;18251:1;18240:9;18236:17;18229:47;18293:131;18419:4;18293:131;:::i;:::-;18285:139;;18012:419;;;:::o;18437:180::-;18577:32;18573:1;18565:6;18561:14;18554:56;18437:180;:::o;18623:366::-;18765:3;18786:67;18850:2;18845:3;18786:67;:::i;:::-;18779:74;;18862:93;18951:3;18862:93;:::i;:::-;18980:2;18975:3;18971:12;18964:19;;18623:366;;;:::o;18995:419::-;19161:4;19199:2;19188:9;19184:18;19176:26;;19248:9;19242:4;19238:20;19234:1;19223:9;19219:17;19212:47;19276:131;19402:4;19276:131;:::i;:::-;19268:139;;18995:419;;;:::o;19420:178::-;19560:30;19556:1;19548:6;19544:14;19537:54;19420:178;:::o;19604:366::-;19746:3;19767:67;19831:2;19826:3;19767:67;:::i;:::-;19760:74;;19843:93;19932:3;19843:93;:::i;:::-;19961:2;19956:3;19952:12;19945:19;;19604:366;;;:::o;19976:419::-;20142:4;20180:2;20169:9;20165:18;20157:26;;20229:9;20223:4;20219:20;20215:1;20204:9;20200:17;20193:47;20257:131;20383:4;20257:131;:::i;:::-;20249:139;;19976:419;;;:::o;20401:182::-;20541:34;20537:1;20529:6;20525:14;20518:58;20401:182;:::o;20589:366::-;20731:3;20752:67;20816:2;20811:3;20752:67;:::i;:::-;20745:74;;20828:93;20917:3;20828:93;:::i;:::-;20946:2;20941:3;20937:12;20930:19;;20589:366;;;:::o;20961:419::-;21127:4;21165:2;21154:9;21150:18;21142:26;;21214:9;21208:4;21204:20;21200:1;21189:9;21185:17;21178:47;21242:131;21368:4;21242:131;:::i;:::-;21234:139;;20961:419;;;:::o;21386:172::-;21526:24;21522:1;21514:6;21510:14;21503:48;21386:172;:::o;21564:366::-;21706:3;21727:67;21791:2;21786:3;21727:67;:::i;:::-;21720:74;;21803:93;21892:3;21803:93;:::i;:::-;21921:2;21916:3;21912:12;21905:19;;21564:366;;;:::o;21936:419::-;22102:4;22140:2;22129:9;22125:18;22117:26;;22189:9;22183:4;22179:20;22175:1;22164:9;22160:17;22153:47;22217:131;22343:4;22217:131;:::i;:::-;22209:139;;21936:419;;;:::o;22361:170::-;22501:22;22497:1;22489:6;22485:14;22478:46;22361:170;:::o;22537:366::-;22679:3;22700:67;22764:2;22759:3;22700:67;:::i;:::-;22693:74;;22776:93;22865:3;22776:93;:::i;:::-;22894:2;22889:3;22885:12;22878:19;;22537:366;;;:::o;22909:419::-;23075:4;23113:2;23102:9;23098:18;23090:26;;23162:9;23156:4;23152:20;23148:1;23137:9;23133:17;23126:47;23190:131;23316:4;23190:131;:::i;:::-;23182:139;;22909:419;;;:::o;23334:174::-;23474:26;23470:1;23462:6;23458:14;23451:50;23334:174;:::o;23514:366::-;23656:3;23677:67;23741:2;23736:3;23677:67;:::i;:::-;23670:74;;23753:93;23842:3;23753:93;:::i;:::-;23871:2;23866:3;23862:12;23855:19;;23514:366;;;:::o;23886:419::-;24052:4;24090:2;24079:9;24075:18;24067:26;;24139:9;24133:4;24129:20;24125:1;24114:9;24110:17;24103:47;24167:131;24293:4;24167:131;:::i;:::-;24159:139;;23886:419;;;:::o;24311:180::-;24359:77;24356:1;24349:88;24456:4;24453:1;24446:15;24480:4;24477:1;24470:15;24497:180;24545:77;24542:1;24535:88;24642:4;24639:1;24632:15;24666:4;24663:1;24656:15;24683:143;24740:5;24771:6;24765:13;24756:22;;24787:33;24814:5;24787:33;:::i;:::-;24683:143;;;;:::o;24832:351::-;24902:6;24951:2;24939:9;24930:7;24926:23;24922:32;24919:119;;;24957:79;;:::i;:::-;24919:119;25077:1;25102:64;25158:7;25149:6;25138:9;25134:22;25102:64;:::i;:::-;25092:74;;25048:128;24832:351;;;;:::o;25189:85::-;25234:7;25263:5;25252:16;;25189:85;;;:::o;25280:158::-;25338:9;25371:61;25389:42;25398:32;25424:5;25398:32;:::i;:::-;25389:42;:::i;:::-;25371:61;:::i;:::-;25358:74;;25280:158;;;:::o;25444:147::-;25539:45;25578:5;25539:45;:::i;:::-;25534:3;25527:58;25444:147;;:::o;25597:114::-;25664:6;25698:5;25692:12;25682:22;;25597:114;;;:::o;25717:184::-;25816:11;25850:6;25845:3;25838:19;25890:4;25885:3;25881:14;25866:29;;25717:184;;;;:::o;25907:132::-;25974:4;25997:3;25989:11;;26027:4;26022:3;26018:14;26010:22;;25907:132;;;:::o;26045:108::-;26122:24;26140:5;26122:24;:::i;:::-;26117:3;26110:37;26045:108;;:::o;26159:179::-;26228:10;26249:46;26291:3;26283:6;26249:46;:::i;:::-;26327:4;26322:3;26318:14;26304:28;;26159:179;;;;:::o;26344:113::-;26414:4;26446;26441:3;26437:14;26429:22;;26344:113;;;:::o;26493:732::-;26612:3;26641:54;26689:5;26641:54;:::i;:::-;26711:86;26790:6;26785:3;26711:86;:::i;:::-;26704:93;;26821:56;26871:5;26821:56;:::i;:::-;26900:7;26931:1;26916:284;26941:6;26938:1;26935:13;26916:284;;;27017:6;27011:13;27044:63;27103:3;27088:13;27044:63;:::i;:::-;27037:70;;27130:60;27183:6;27130:60;:::i;:::-;27120:70;;26976:224;26963:1;26960;26956:9;26951:14;;26916:284;;;26920:14;27216:3;27209:10;;26617:608;;;26493:732;;;;:::o;27231:831::-;27494:4;27532:3;27521:9;27517:19;27509:27;;27546:71;27614:1;27603:9;27599:17;27590:6;27546:71;:::i;:::-;27627:80;27703:2;27692:9;27688:18;27679:6;27627:80;:::i;:::-;27754:9;27748:4;27744:20;27739:2;27728:9;27724:18;27717:48;27782:108;27885:4;27876:6;27782:108;:::i;:::-;27774:116;;27900:72;27968:2;27957:9;27953:18;27944:6;27900:72;:::i;:::-;27982:73;28050:3;28039:9;28035:19;28026:6;27982:73;:::i;:::-;27231:831;;;;;;;;:::o

Swarm Source

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