ETH Price: $2,429.46 (-1.86%)
 

Overview

Max Total Supply

20,000,000,000 zkRAW

Holders

274

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
10,908,576 zkRAW

Value
$0.00
0xa18896d64486927a18194D11cCd3739e98d9eC56
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:
zkRAW

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-31
*/

/**
███    ███  █████  ██████  ██      ███████ ██    ██ 
████  ████ ██   ██ ██   ██ ██      ██       ██  ██  
██ ████ ██ ███████ ██████  ██      █████     ████   
██  ██  ██ ██   ██ ██   ██ ██      ██         ██    
██      ██ ██   ██ ██   ██ ███████ ███████    ██ 
*/

// SPDX-License-Identifier: MIT                                                                               
                                                    
pragma solidity 0.8.19;

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

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

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

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

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

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

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

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

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

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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

interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

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

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

contract zkRAW is ERC20, Ownable {

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

    IDexRouter public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address public marketingAddress;

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



    bool public tradingActive = false;
    bool public swapEnabled = false;
    
  

    uint256 private buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyBurnFee;


    uint256 private sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellBurnFee;


    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForBurn;

    uint256 public enableTime;

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

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


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

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

    event EnabledTrading();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedMarketingAddress(address indexed newWallet);




    event MaxTransactionExclusion(address _address, bool excluded);

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

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("zkRAW", "zkRAW") {
        
        address newOwner = msg.sender; // can leave alone if owner is deployer.
        
        IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        _excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        
        uniswapV2Pair = IDexFactory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
 
        uint256 totalSupply = 20000000000 * 1e18;
        
        maxBuyAmount = totalSupply * 100 / 100;
        maxSellAmount = totalSupply * 100 / 100;
        maxWalletAmount = totalSupply * 100 / 100;
        swapTokensAtAmount = totalSupply * 100 / 100000; // 0.1% swap amount

        buyMarketingFee = 4;
        buyLiquidityFee = 1;
        buyBurnFee = 1;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;

        sellMarketingFee = 4;
        sellLiquidityFee = 1;
        sellBurnFee = 1;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;

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

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

        marketingAddress = 0x5D282f41fc77A7514A9454669fE52BBe61758848;


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

    receive() external payable {}

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        enableTime = block.timestamp;
        emit EnabledTrading();
    }
         
    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 25 / 10000)/1e18, "Cannot set maxBuy lower than 0.25%");
        maxBuyAmount = newNum * (10**18);
        emit UpdatedMaxBuyAmount(maxBuyAmount);
    }
    
    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 25 / 10000)/1e18, "Cannot set maxSell lower than 0.25%");
        maxSellAmount = newNum * (10**18);
        emit UpdatedMaxSellAmount(maxSellAmount);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 25 / 10000)/1e18, "Cannot set maxWallet lower than 0.25%");
        maxWalletAmount = newNum * (10**18);
        emit UpdatedMaxWalletAmount(maxWalletAmount);
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
        require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= totalSupply() * 3 / 100, "Swap amount cannot be higher than 3% total supply.");
  	    swapTokensAtAmount = newAmount * (10**18);
  	}
    
    function _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _burnFee) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyBurnFee = _burnFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;
        require((buyTotalFees + buyBurnFee) <= 35,"Total buy fees cannot be greater than 35%");
    }

    function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _burnFee) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellBurnFee = _burnFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        require((sellTotalFees + sellBurnFee) <= 35,"Total sell fees cannot be greater than 35%");
    }

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

    function _transfer(address from, address to, uint256 amount) internal override {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");
                   
    
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead)){
                if(!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }
                            
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                        require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                } 
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                } 
                else if (!_isExcludedMaxTransactionAmount[to] && !_isExcludedMaxTransactionAmount[from]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        

        uint256 contractTokenBalance = balanceOf(address(this));
        
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        bool takeFee = true;
        uint256 penaltyAmount = 0;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        
        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
              // bot/sniper penalty.  Tokens get transferred to marketing wallet to allow potential refund.
            if(block.timestamp <= enableTime + 10 minutes && automatedMarketMakerPairs[from]){
                penaltyAmount = amount * 85 / 100;
                super._transfer(from, address(this), penaltyAmount);
            }
            // on sell
             if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees /100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
                tokensForBurn += amount * sellBurnFee / 100;

            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount * buyTotalFees / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
                tokensForBurn += amount * sellBurnFee / 100;
            }
            
            if(fees > 0){    
                 super._transfer(from, address(this), fees);
            }
                super._transfer(from, address(0xdead), tokensForBurn);


        	amount -= (fees + tokensForBurn + penaltyAmount);
            tokensForBurn = 0;
            penaltyAmount = 0;
        }
            
        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

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

        bool success;
        
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        
        swapTokensForEth(contractBalance - liquidityTokens); 
        
        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForMarketing = ethBalance * tokensForMarketing / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethForMarketing;
            
        tokensForLiquidity = 0;
        tokensForMarketing = 0;

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

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

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

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

    function setMarketingAddress(address _marketingAddress) external onlyOwner {
        require(_marketingAddress != address(0), "_marketingAddress address cannot be 0");
        marketingAddress = payable(_marketingAddress);
        emit UpdatedMarketingAddress(_marketingAddress);
    }

}

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":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedMarketingAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","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":"enableTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600c556000600d60006101000a81548160ff0219169083151502179055506000600d60016101000a81548160ff0219169083151502179055503480156200004c57600080fd5b506040518060400160405280600581526020017f7a6b5241570000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f7a6b5241570000000000000000000000000000000000000000000000000000008152508160039081620000ca919062000dd1565b508060049081620000dc919062000dd1565b5050506000620000f16200059560201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001c18160016200059d60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000241573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000267919062000f22565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f5919062000f22565b6040518363ffffffff1660e01b81526004016200031492919062000f65565b6020604051808303816000875af115801562000334573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035a919062000f22565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003a260a05160016200063360201b60201c565b60006b409f9cbc7c4a04c220000000905060648082620003c3919062000fc1565b620003cf91906200103b565b60068190555060648082620003e5919062000fc1565b620003f191906200103b565b6007819055506064808262000407919062000fc1565b6200041391906200103b565b600881905550620186a06064826200042c919062000fc1565b6200043891906200103b565b600a819055506004600f8190555060016010819055506001601181905550601054600f5462000468919062001073565b600e8190555060046013819055506001601481905550600160158190555060145460135462000498919062001073565b601281905550620004b18360016200059d60201b60201c565b620004c43060016200059d60201b60201c565b620004d961dead60016200059d60201b60201c565b620004ec836001620006e660201b60201c565b620004ff306001620006e660201b60201c565b6200051461dead6001620006e660201b60201c565b735d282f41fc77a7514a9454669fe52bbe61758848600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200057b83826200083360201b60201c565b6200058c836200098360201b60201c565b505050620012d0565b600033905090565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746828260405162000627929190620010cb565b60405180910390a15050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200069c82826200059d60201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b620006f66200059560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000788576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200077f9062001159565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200082791906200117b565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200089c90620011e8565b60405180910390fd5b8060026000828254620008b9919062001073565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000910919062001073565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200097791906200121b565b60405180910390a35050565b620009936200059560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a1c9062001159565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000a97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a8e90620012ae565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bd957607f821691505b60208210810362000bef5762000bee62000b91565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c597fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c1a565b62000c65868362000c1a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000cb262000cac62000ca68462000c7d565b62000c87565b62000c7d565b9050919050565b6000819050919050565b62000cce8362000c91565b62000ce662000cdd8262000cb9565b84845462000c27565b825550505050565b600090565b62000cfd62000cee565b62000d0a81848462000cc3565b505050565b5b8181101562000d325762000d2660008262000cf3565b60018101905062000d10565b5050565b601f82111562000d815762000d4b8162000bf5565b62000d568462000c0a565b8101602085101562000d66578190505b62000d7e62000d758562000c0a565b83018262000d0f565b50505b505050565b600082821c905092915050565b600062000da66000198460080262000d86565b1980831691505092915050565b600062000dc1838362000d93565b9150826002028217905092915050565b62000ddc8262000b57565b67ffffffffffffffff81111562000df85762000df762000b62565b5b62000e04825462000bc0565b62000e1182828562000d36565b600060209050601f83116001811462000e49576000841562000e34578287015190505b62000e40858262000db3565b86555062000eb0565b601f19841662000e598662000bf5565b60005b8281101562000e835784890151825560018201915060208501945060208101905062000e5c565b8683101562000ea3578489015162000e9f601f89168262000d93565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000eea8262000ebd565b9050919050565b62000efc8162000edd565b811462000f0857600080fd5b50565b60008151905062000f1c8162000ef1565b92915050565b60006020828403121562000f3b5762000f3a62000eb8565b5b600062000f4b8482850162000f0b565b91505092915050565b62000f5f8162000edd565b82525050565b600060408201905062000f7c600083018562000f54565b62000f8b602083018462000f54565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000fce8262000c7d565b915062000fdb8362000c7d565b925082820262000feb8162000c7d565b9150828204841483151762001005576200100462000f92565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010488262000c7d565b9150620010558362000c7d565b9250826200106857620010676200100c565b5b828204905092915050565b6000620010808262000c7d565b91506200108d8362000c7d565b9250828201905080821115620010a857620010a762000f92565b5b92915050565b60008115159050919050565b620010c581620010ae565b82525050565b6000604082019050620010e2600083018562000f54565b620010f16020830184620010ba565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062001141602083620010f8565b91506200114e8262001109565b602082019050919050565b60006020820190508181036000830152620011748162001132565b9050919050565b6000602082019050620011926000830184620010ba565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620011d0601f83620010f8565b9150620011dd8262001198565b602082019050919050565b600060208201905081810360008301526200120381620011c1565b9050919050565b620012158162000c7d565b82525050565b60006020820190506200123260008301846200120a565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600062001296602683620010f8565b9150620012a38262001238565b604082019050919050565b60006020820190508181036000830152620012c98162001287565b9050919050565b60805160a0516154a46200132760003960008181610f7d015281816111f60152611a8a015260008181610c2d01528181613a3101528181613b1201528181613b3901528181613bd50152613bfc01526154a46000f3fe6080604052600436106102b25760003560e01c8063906e9dd011610175578063c0246668116100dc578063e2f4560511610095578063f11a24d31161006f578063f11a24d314610ac5578063f2fde38b14610af0578063f5648a4f14610b19578063f637434214610b30576102b9565b8063e2f4560514610a44578063e71dc3f514610a6f578063ee40166e14610a9a576102b9565b8063c02466681461093a578063c17b5b8c14610963578063c18bc1951461098c578063d257b34f146109b5578063dc3f0d0f146109de578063dd62ed3e14610a07576102b9565b8063a9059cbb1161012e578063a9059cbb14610814578063aa4bde2814610851578063adb873bd1461087c578063b31fc8ca146108a7578063b62496f5146108d2578063bbc0c7421461090f576102b9565b8063906e9dd014610704578063921369131461072d57806395d89b41146107585780639a7a23d614610783578063a457c2d7146107ac578063a5ece941146107e9576102b9565b806349bd5a5e116102195780637bce5a04116101d25780637bce5a04146106065780638095d564146106315780638366e79a1461065a57806388e765ff146106975780638a8c523c146106c25780638da5cb5b146106d9576102b9565b806349bd5a5e1461050857806366d602ae146105335780636ddd17131461055e57806370a0823114610589578063715018a6146105c65780637571336a146105dd576102b9565b80631d7778561161026b5780631d777856146103e45780631f3fed8f1461040f57806323b872dd1461043a5780632be32b6114610477578063313ce567146104a057806339509351146104cb576102b9565b806306fdde03146102be578063095ea7b3146102e957806310d5de53146103265780631694505e1461036357806318160ddd1461038e5780631a8145bb146103b9576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3610b5b565b6040516102e09190613d40565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b9190613dfb565b610bed565b60405161031d9190613e56565b60405180910390f35b34801561033257600080fd5b5061034d60048036038101906103489190613e71565b610c0b565b60405161035a9190613e56565b60405180910390f35b34801561036f57600080fd5b50610378610c2b565b6040516103859190613efd565b60405180910390f35b34801561039a57600080fd5b506103a3610c4f565b6040516103b09190613f27565b60405180910390f35b3480156103c557600080fd5b506103ce610c59565b6040516103db9190613f27565b60405180910390f35b3480156103f057600080fd5b506103f9610c5f565b6040516104069190613f27565b60405180910390f35b34801561041b57600080fd5b50610424610c65565b6040516104319190613f27565b60405180910390f35b34801561044657600080fd5b50610461600480360381019061045c9190613f42565b610c6b565b60405161046e9190613e56565b60405180910390f35b34801561048357600080fd5b5061049e60048036038101906104999190613f95565b610d63565b005b3480156104ac57600080fd5b506104b5610ec6565b6040516104c29190613fde565b60405180910390f35b3480156104d757600080fd5b506104f260048036038101906104ed9190613dfb565b610ecf565b6040516104ff9190613e56565b60405180910390f35b34801561051457600080fd5b5061051d610f7b565b60405161052a9190614008565b60405180910390f35b34801561053f57600080fd5b50610548610f9f565b6040516105559190613f27565b60405180910390f35b34801561056a57600080fd5b50610573610fa5565b6040516105809190613e56565b60405180910390f35b34801561059557600080fd5b506105b060048036038101906105ab9190613e71565b610fb8565b6040516105bd9190613f27565b60405180910390f35b3480156105d257600080fd5b506105db611000565b005b3480156105e957600080fd5b5061060460048036038101906105ff919061404f565b611158565b005b34801561061257600080fd5b5061061b6112de565b6040516106289190613f27565b60405180910390f35b34801561063d57600080fd5b506106586004803603810190610653919061408f565b6112e4565b005b34801561066657600080fd5b50610681600480360381019061067c91906140e2565b6113fe565b60405161068e9190613e56565b60405180910390f35b3480156106a357600080fd5b506106ac611643565b6040516106b99190613f27565b60405180910390f35b3480156106ce57600080fd5b506106d7611649565b005b3480156106e557600080fd5b506106ee6117a2565b6040516106fb9190614008565b60405180910390f35b34801561071057600080fd5b5061072b60048036038101906107269190613e71565b6117cc565b005b34801561073957600080fd5b50610742611959565b60405161074f9190613f27565b60405180910390f35b34801561076457600080fd5b5061076d61195f565b60405161077a9190613d40565b60405180910390f35b34801561078f57600080fd5b506107aa60048036038101906107a5919061404f565b6119f1565b005b3480156107b857600080fd5b506107d360048036038101906107ce9190613dfb565b611b24565b6040516107e09190613e56565b60405180910390f35b3480156107f557600080fd5b506107fe611c0f565b60405161080b9190614008565b60405180910390f35b34801561082057600080fd5b5061083b60048036038101906108369190613dfb565b611c35565b6040516108489190613e56565b60405180910390f35b34801561085d57600080fd5b50610866611c53565b6040516108739190613f27565b60405180910390f35b34801561088857600080fd5b50610891611c59565b60405161089e9190613f27565b60405180910390f35b3480156108b357600080fd5b506108bc611c5f565b6040516108c99190613f27565b60405180910390f35b3480156108de57600080fd5b506108f960048036038101906108f49190613e71565b611c65565b6040516109069190613e56565b60405180910390f35b34801561091b57600080fd5b50610924611c85565b6040516109319190613e56565b60405180910390f35b34801561094657600080fd5b50610961600480360381019061095c919061404f565b611c98565b005b34801561096f57600080fd5b5061098a6004803603810190610985919061408f565b611dd8565b005b34801561099857600080fd5b506109b360048036038101906109ae9190613f95565b611ef2565b005b3480156109c157600080fd5b506109dc60048036038101906109d79190613f95565b612055565b005b3480156109ea57600080fd5b50610a056004803603810190610a009190613f95565b6121cf565b005b348015610a1357600080fd5b50610a2e6004803603810190610a2991906140e2565b612332565b604051610a3b9190613f27565b60405180910390f35b348015610a5057600080fd5b50610a596123b9565b604051610a669190613f27565b60405180910390f35b348015610a7b57600080fd5b50610a846123bf565b604051610a919190613f27565b60405180910390f35b348015610aa657600080fd5b50610aaf6123c5565b604051610abc9190613f27565b60405180910390f35b348015610ad157600080fd5b50610ada6123cb565b604051610ae79190613f27565b60405180910390f35b348015610afc57600080fd5b50610b176004803603810190610b129190613e71565b6123d1565b005b348015610b2557600080fd5b50610b2e612597565b005b348015610b3c57600080fd5b50610b4561269f565b604051610b529190613f27565b60405180910390f35b606060038054610b6a90614151565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9690614151565b8015610be35780601f10610bb857610100808354040283529160200191610be3565b820191906000526020600020905b815481529060010190602001808311610bc657829003601f168201915b5050505050905090565b6000610c01610bfa6126a5565b84846126ad565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60175481565b60185481565b60165481565b6000610c78848484612876565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cc36126a5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3a906141f4565b60405180910390fd5b610d5785610d4f6126a5565b8584036126ad565b60019150509392505050565b610d6b6126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df190614260565b60405180910390fd5b670de0b6b3a76400006127106019610e10610c4f565b610e1a91906142af565b610e249190614320565b610e2e9190614320565b811015610e70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e67906143c3565b60405180910390fd5b670de0b6b3a764000081610e8491906142af565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009600654604051610ebb9190613f27565b60405180910390a150565b60006012905090565b6000610f71610edc6126a5565b848460016000610eea6126a5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f6c91906143e3565b6126ad565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60075481565b600d60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110086126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90614260565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6111606126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e690614260565b60405180910390fd5b80611283577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611282576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127990614489565b60405180910390fd5b5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b6112ec6126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461137b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137290614260565b60405180910390fd5b82600f819055508160108190555080601181905550601054600f546113a091906143e3565b600e819055506023601154600e546113b891906143e3565b11156113f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f09061451b565b60405180910390fd5b505050565b60006114086126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148e90614260565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611505576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fc90614587565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115409190614008565b602060405180830381865afa15801561155d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158191906145bc565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b81526004016115be9291906145e9565b6020604051808303816000875af11580156115dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116019190614627565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e43884826040516116349291906145e9565b60405180910390a15092915050565b60065481565b6116516126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d790614260565b60405180910390fd5b600d60009054906101000a900460ff1615611730576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611727906146a0565b60405180910390fd5b6001600d60006101000a81548160ff0219169083151502179055506001600d60016101000a81548160ff02191690831515021790555043600c81905550426019819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6117d46126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185a90614260565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c990614732565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fd1e7d6a3390dd5008bd1c57798817b9f806e4c417264e7d3d67e42e784dc24a960405160405180910390a250565b60135481565b60606004805461196e90614151565b80601f016020809104026020016040519081016040528092919081815260200182805461199a90614151565b80156119e75780601f106119bc576101008083540402835291602001916119e7565b820191906000526020600020905b8154815290600101906020018083116119ca57829003601f168201915b5050505050905090565b6119f96126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7f90614260565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0d906147c4565b60405180910390fd5b611b208282613434565b5050565b60008060016000611b336126a5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be790614856565b60405180910390fd5b611c04611bfb6126a5565b858584036126ad565b600191505092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611c49611c426126a5565b8484612876565b6001905092915050565b60085481565b60155481565b60195481565b601c6020528060005260406000206000915054906101000a900460ff1681565b600d60009054906101000a900460ff1681565b611ca06126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2690614260565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611dcc9190613e56565b60405180910390a25050565b611de06126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6690614260565b60405180910390fd5b826013819055508160148190555080601581905550601454601354611e9491906143e3565b6012819055506023601554601254611eac91906143e3565b1115611eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee4906148e8565b60405180910390fd5b505050565b611efa6126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8090614260565b60405180910390fd5b670de0b6b3a76400006127106019611f9f610c4f565b611fa991906142af565b611fb39190614320565b611fbd9190614320565b811015611fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff69061497a565b60405180910390fd5b670de0b6b3a76400008161201391906142af565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc60085460405161204a9190613f27565b60405180910390a150565b61205d6126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e390614260565b60405180910390fd5b620186a060016120fa610c4f565b61210491906142af565b61210e9190614320565b811015612150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214790614a0c565b60405180910390fd5b6064600361215c610c4f565b61216691906142af565b6121709190614320565b8111156121b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a990614a9e565b60405180910390fd5b670de0b6b3a7640000816121c691906142af565b600a8190555050565b6121d76126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225d90614260565b60405180910390fd5b670de0b6b3a7640000612710601961227c610c4f565b61228691906142af565b6122909190614320565b61229a9190614320565b8110156122dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d390614b30565b60405180910390fd5b670de0b6b3a7640000816122f091906142af565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516123279190613f27565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b60115481565b600c5481565b60105481565b6123d96126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245f90614260565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ce90614bc2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61259f6126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461262e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262590614260565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161265490614c13565b60006040518083038185875af1925050503d8060008114612691576040519150601f19603f3d011682016040523d82523d6000602084013e612696565b606091505b50508091505050565b60145481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361271c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271390614c9a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361278b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278290614d2c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128699190613f27565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128dc90614dbe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294b90614e50565b60405180910390fd5b60008111612997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298e90614ebc565b60405180910390fd5b61299f6117a2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612a0d57506129dd6117a2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a465750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a80575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612ebb57600d60009054906101000a900460ff16612b7a57601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b3a5750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7090614f28565b60405180910390fd5b5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c1d5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612cc457600654811115612c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5e90614fba565b60405180910390fd5b600854612c7383610fb8565b82612c7e91906143e3565b1115612cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb690615026565b60405180910390fd5b612eba565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d675750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612db657600754811115612db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da8906150b8565b60405180910390fd5b612eb9565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612e5a5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612eb857600854612e6b83610fb8565b82612e7691906143e3565b1115612eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eae90615026565b60405180910390fd5b5b5b5b5b6000612ec630610fb8565b90506000600a548210159050808015612eeb5750600d60019054906101000a900460ff165b8015612f045750600960009054906101000a900460ff16155b8015612f5a5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612fb05750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130065750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561304a576001600960006101000a81548160ff02191690831515021790555061302e6134df565b6000600960006101000a81548160ff0219169083151502179055505b6000600190506000601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130f35750601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130fd57600091505b6000821561341f5761025860195461311591906143e3565b421115801561316d5750601c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561319957606460558761318191906142af565b61318b9190614320565b9150613198883084613695565b5b601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131f457506000601254115b156132b25760646012548761320991906142af565b6132139190614320565b90506012546014548261322691906142af565b6132309190614320565b6017600082825461324191906143e3565b925050819055506012546013548261325991906142af565b6132639190614320565b6016600082825461327491906143e3565b9250508190555060646015548761328b91906142af565b6132959190614320565b601860008282546132a691906143e3565b925050819055506133c8565b601c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561330d57506000600e54115b156133c7576064600e548761332291906142af565b61332c9190614320565b9050600e546010548261333f91906142af565b6133499190614320565b6017600082825461335a91906143e3565b92505081905550600e54600f548261337291906142af565b61337c9190614320565b6016600082825461338d91906143e3565b925050819055506064601554876133a491906142af565b6133ae9190614320565b601860008282546133bf91906143e3565b925050819055505b5b60008111156133dd576133dc883083613695565b5b6133ec8861dead601854613695565b81601854826133fb91906143e3565b61340591906143e3565b8661341091906150d8565b95506000601881905550600091505b61342a888888613695565b5050505050505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061349582826138fe565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60006134ea30610fb8565b905060006016546017546134fe91906143e3565b9050600082148061350f5750600081145b1561351b575050613693565b600a805461352991906142af565b82111561354157600a805461353e91906142af565b91505b6000806002836017548661355591906142af565b61355f9190614320565b6135699190614320565b905061357f818561357a91906150d8565b613992565b600047905060008190506000600260175461359a9190614320565b866135a591906150d8565b601654846135b391906142af565b6135bd9190614320565b905080826135cb91906150d8565b9150600060178190555060006016819055506000841180156135ed5750600082115b156135fd576135fc8483613bcf565b5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161364390614c13565b60006040518083038185875af1925050503d8060008114613680576040519150601f19603f3d011682016040523d82523d6000602084013e613685565b606091505b505080955050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136fb90614dbe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161376a90614e50565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156137f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137f09061517e565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461388c91906143e3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138f09190613f27565b60405180910390a350505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746828260405161398692919061519e565b60405180910390a15050565b6000600267ffffffffffffffff8111156139af576139ae6151c7565b5b6040519080825280602002602001820160405280156139dd5781602001602082028036833780820191505090505b50905030816000815181106139f5576139f46151f6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613abe919061523a565b81600181518110613ad257613ad16151f6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613b37307f0000000000000000000000000000000000000000000000000000000000000000846126ad565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613b99959493929190615360565b600060405180830381600087803b158015613bb357600080fd5b505af1158015613bc7573d6000803e3d6000fd5b505050505050565b613bfa307f0000000000000000000000000000000000000000000000000000000000000000846126ad565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613c446117a2565b426040518863ffffffff1660e01b8152600401613c66969594939291906153ba565b60606040518083038185885af1158015613c84573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613ca9919061541b565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613cea578082015181840152602081019050613ccf565b60008484015250505050565b6000601f19601f8301169050919050565b6000613d1282613cb0565b613d1c8185613cbb565b9350613d2c818560208601613ccc565b613d3581613cf6565b840191505092915050565b60006020820190508181036000830152613d5a8184613d07565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613d9282613d67565b9050919050565b613da281613d87565b8114613dad57600080fd5b50565b600081359050613dbf81613d99565b92915050565b6000819050919050565b613dd881613dc5565b8114613de357600080fd5b50565b600081359050613df581613dcf565b92915050565b60008060408385031215613e1257613e11613d62565b5b6000613e2085828601613db0565b9250506020613e3185828601613de6565b9150509250929050565b60008115159050919050565b613e5081613e3b565b82525050565b6000602082019050613e6b6000830184613e47565b92915050565b600060208284031215613e8757613e86613d62565b5b6000613e9584828501613db0565b91505092915050565b6000819050919050565b6000613ec3613ebe613eb984613d67565b613e9e565b613d67565b9050919050565b6000613ed582613ea8565b9050919050565b6000613ee782613eca565b9050919050565b613ef781613edc565b82525050565b6000602082019050613f126000830184613eee565b92915050565b613f2181613dc5565b82525050565b6000602082019050613f3c6000830184613f18565b92915050565b600080600060608486031215613f5b57613f5a613d62565b5b6000613f6986828701613db0565b9350506020613f7a86828701613db0565b9250506040613f8b86828701613de6565b9150509250925092565b600060208284031215613fab57613faa613d62565b5b6000613fb984828501613de6565b91505092915050565b600060ff82169050919050565b613fd881613fc2565b82525050565b6000602082019050613ff36000830184613fcf565b92915050565b61400281613d87565b82525050565b600060208201905061401d6000830184613ff9565b92915050565b61402c81613e3b565b811461403757600080fd5b50565b60008135905061404981614023565b92915050565b6000806040838503121561406657614065613d62565b5b600061407485828601613db0565b92505060206140858582860161403a565b9150509250929050565b6000806000606084860312156140a8576140a7613d62565b5b60006140b686828701613de6565b93505060206140c786828701613de6565b92505060406140d886828701613de6565b9150509250925092565b600080604083850312156140f9576140f8613d62565b5b600061410785828601613db0565b925050602061411885828601613db0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061416957607f821691505b60208210810361417c5761417b614122565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006141de602883613cbb565b91506141e982614182565b604082019050919050565b6000602082019050818103600083015261420d816141d1565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061424a602083613cbb565b915061425582614214565b602082019050919050565b600060208201905081810360008301526142798161423d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006142ba82613dc5565b91506142c583613dc5565b92508282026142d381613dc5565b915082820484148315176142ea576142e9614280565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061432b82613dc5565b915061433683613dc5565b925082614346576143456142f1565b5b828204905092915050565b7f43616e6e6f7420736574206d6178427579206c6f776572207468616e20302e3260008201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b60006143ad602283613cbb565b91506143b882614351565b604082019050919050565b600060208201905081810360008301526143dc816143a0565b9050919050565b60006143ee82613dc5565b91506143f983613dc5565b925082820190508082111561441157614410614280565b5b92915050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614473602783613cbb565b915061447e82614417565b604082019050919050565b600060208201905081810360008301526144a281614466565b9050919050565b7f546f74616c2062757920666565732063616e6e6f74206265206772656174657260008201527f207468616e203335250000000000000000000000000000000000000000000000602082015250565b6000614505602983613cbb565b9150614510826144a9565b604082019050919050565b60006020820190508181036000830152614534816144f8565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b6000614571601c83613cbb565b915061457c8261453b565b602082019050919050565b600060208201905081810360008301526145a081614564565b9050919050565b6000815190506145b681613dcf565b92915050565b6000602082840312156145d2576145d1613d62565b5b60006145e0848285016145a7565b91505092915050565b60006040820190506145fe6000830185613ff9565b61460b6020830184613f18565b9392505050565b60008151905061462181614023565b92915050565b60006020828403121561463d5761463c613d62565b5b600061464b84828501614612565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b600061468a601783613cbb565b915061469582614654565b602082019050919050565b600060208201905081810360008301526146b98161467d565b9050919050565b7f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f7460008201527f2062652030000000000000000000000000000000000000000000000000000000602082015250565b600061471c602583613cbb565b9150614727826146c0565b604082019050919050565b6000602082019050818103600083015261474b8161470f565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006147ae603983613cbb565b91506147b982614752565b604082019050919050565b600060208201905081810360008301526147dd816147a1565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614840602583613cbb565b915061484b826147e4565b604082019050919050565b6000602082019050818103600083015261486f81614833565b9050919050565b7f546f74616c2073656c6c20666565732063616e6e6f742062652067726561746560008201527f72207468616e2033352500000000000000000000000000000000000000000000602082015250565b60006148d2602a83613cbb565b91506148dd82614876565b604082019050919050565b60006020820190508181036000830152614901816148c5565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e323525000000000000000000000000000000000000000000000000000000602082015250565b6000614964602583613cbb565b915061496f82614908565b604082019050919050565b6000602082019050818103600083015261499381614957565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006149f6603583613cbb565b9150614a018261499a565b604082019050919050565b60006020820190508181036000830152614a25816149e9565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20332520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000614a88603283613cbb565b9150614a9382614a2c565b604082019050919050565b60006020820190508181036000830152614ab781614a7b565b9050919050565b7f43616e6e6f7420736574206d617853656c6c206c6f776572207468616e20302e60008201527f3235250000000000000000000000000000000000000000000000000000000000602082015250565b6000614b1a602383613cbb565b9150614b2582614abe565b604082019050919050565b60006020820190508181036000830152614b4981614b0d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614bac602683613cbb565b9150614bb782614b50565b604082019050919050565b60006020820190508181036000830152614bdb81614b9f565b9050919050565b600081905092915050565b50565b6000614bfd600083614be2565b9150614c0882614bed565b600082019050919050565b6000614c1e82614bf0565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614c84602483613cbb565b9150614c8f82614c28565b604082019050919050565b60006020820190508181036000830152614cb381614c77565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d16602283613cbb565b9150614d2182614cba565b604082019050919050565b60006020820190508181036000830152614d4581614d09565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614da8602583613cbb565b9150614db382614d4c565b604082019050919050565b60006020820190508181036000830152614dd781614d9b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614e3a602383613cbb565b9150614e4582614dde565b604082019050919050565b60006020820190508181036000830152614e6981614e2d565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b6000614ea6601d83613cbb565b9150614eb182614e70565b602082019050919050565b60006020820190508181036000830152614ed581614e99565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614f12601683613cbb565b9150614f1d82614edc565b602082019050919050565b60006020820190508181036000830152614f4181614f05565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000614fa4602883613cbb565b9150614faf82614f48565b604082019050919050565b60006020820190508181036000830152614fd381614f97565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b6000615010601883613cbb565b915061501b82614fda565b602082019050919050565b6000602082019050818103600083015261503f81615003565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b60006150a2602a83613cbb565b91506150ad82615046565b604082019050919050565b600060208201905081810360008301526150d181615095565b9050919050565b60006150e382613dc5565b91506150ee83613dc5565b925082820390508181111561510657615105614280565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615168602683613cbb565b91506151738261510c565b604082019050919050565b600060208201905081810360008301526151978161515b565b9050919050565b60006040820190506151b36000830185613ff9565b6151c06020830184613e47565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061523481613d99565b92915050565b6000602082840312156152505761524f613d62565b5b600061525e84828501615225565b91505092915050565b6000819050919050565b600061528c61528761528284615267565b613e9e565b613dc5565b9050919050565b61529c81615271565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6152d781613d87565b82525050565b60006152e983836152ce565b60208301905092915050565b6000602082019050919050565b600061530d826152a2565b61531781856152ad565b9350615322836152be565b8060005b8381101561535357815161533a88826152dd565b9750615345836152f5565b925050600181019050615326565b5085935050505092915050565b600060a0820190506153756000830188613f18565b6153826020830187615293565b81810360408301526153948186615302565b90506153a36060830185613ff9565b6153b06080830184613f18565b9695505050505050565b600060c0820190506153cf6000830189613ff9565b6153dc6020830188613f18565b6153e96040830187615293565b6153f66060830186615293565b6154036080830185613ff9565b61541060a0830184613f18565b979650505050505050565b60008060006060848603121561543457615433613d62565b5b6000615442868287016145a7565b9350506020615453868287016145a7565b9250506040615464868287016145a7565b915050925092509256fea264697066735822122006a0078fabf10dc1f9047b45ce22516b4c2f5662350b226710e409c704f61fd364736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102b25760003560e01c8063906e9dd011610175578063c0246668116100dc578063e2f4560511610095578063f11a24d31161006f578063f11a24d314610ac5578063f2fde38b14610af0578063f5648a4f14610b19578063f637434214610b30576102b9565b8063e2f4560514610a44578063e71dc3f514610a6f578063ee40166e14610a9a576102b9565b8063c02466681461093a578063c17b5b8c14610963578063c18bc1951461098c578063d257b34f146109b5578063dc3f0d0f146109de578063dd62ed3e14610a07576102b9565b8063a9059cbb1161012e578063a9059cbb14610814578063aa4bde2814610851578063adb873bd1461087c578063b31fc8ca146108a7578063b62496f5146108d2578063bbc0c7421461090f576102b9565b8063906e9dd014610704578063921369131461072d57806395d89b41146107585780639a7a23d614610783578063a457c2d7146107ac578063a5ece941146107e9576102b9565b806349bd5a5e116102195780637bce5a04116101d25780637bce5a04146106065780638095d564146106315780638366e79a1461065a57806388e765ff146106975780638a8c523c146106c25780638da5cb5b146106d9576102b9565b806349bd5a5e1461050857806366d602ae146105335780636ddd17131461055e57806370a0823114610589578063715018a6146105c65780637571336a146105dd576102b9565b80631d7778561161026b5780631d777856146103e45780631f3fed8f1461040f57806323b872dd1461043a5780632be32b6114610477578063313ce567146104a057806339509351146104cb576102b9565b806306fdde03146102be578063095ea7b3146102e957806310d5de53146103265780631694505e1461036357806318160ddd1461038e5780631a8145bb146103b9576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3610b5b565b6040516102e09190613d40565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b9190613dfb565b610bed565b60405161031d9190613e56565b60405180910390f35b34801561033257600080fd5b5061034d60048036038101906103489190613e71565b610c0b565b60405161035a9190613e56565b60405180910390f35b34801561036f57600080fd5b50610378610c2b565b6040516103859190613efd565b60405180910390f35b34801561039a57600080fd5b506103a3610c4f565b6040516103b09190613f27565b60405180910390f35b3480156103c557600080fd5b506103ce610c59565b6040516103db9190613f27565b60405180910390f35b3480156103f057600080fd5b506103f9610c5f565b6040516104069190613f27565b60405180910390f35b34801561041b57600080fd5b50610424610c65565b6040516104319190613f27565b60405180910390f35b34801561044657600080fd5b50610461600480360381019061045c9190613f42565b610c6b565b60405161046e9190613e56565b60405180910390f35b34801561048357600080fd5b5061049e60048036038101906104999190613f95565b610d63565b005b3480156104ac57600080fd5b506104b5610ec6565b6040516104c29190613fde565b60405180910390f35b3480156104d757600080fd5b506104f260048036038101906104ed9190613dfb565b610ecf565b6040516104ff9190613e56565b60405180910390f35b34801561051457600080fd5b5061051d610f7b565b60405161052a9190614008565b60405180910390f35b34801561053f57600080fd5b50610548610f9f565b6040516105559190613f27565b60405180910390f35b34801561056a57600080fd5b50610573610fa5565b6040516105809190613e56565b60405180910390f35b34801561059557600080fd5b506105b060048036038101906105ab9190613e71565b610fb8565b6040516105bd9190613f27565b60405180910390f35b3480156105d257600080fd5b506105db611000565b005b3480156105e957600080fd5b5061060460048036038101906105ff919061404f565b611158565b005b34801561061257600080fd5b5061061b6112de565b6040516106289190613f27565b60405180910390f35b34801561063d57600080fd5b506106586004803603810190610653919061408f565b6112e4565b005b34801561066657600080fd5b50610681600480360381019061067c91906140e2565b6113fe565b60405161068e9190613e56565b60405180910390f35b3480156106a357600080fd5b506106ac611643565b6040516106b99190613f27565b60405180910390f35b3480156106ce57600080fd5b506106d7611649565b005b3480156106e557600080fd5b506106ee6117a2565b6040516106fb9190614008565b60405180910390f35b34801561071057600080fd5b5061072b60048036038101906107269190613e71565b6117cc565b005b34801561073957600080fd5b50610742611959565b60405161074f9190613f27565b60405180910390f35b34801561076457600080fd5b5061076d61195f565b60405161077a9190613d40565b60405180910390f35b34801561078f57600080fd5b506107aa60048036038101906107a5919061404f565b6119f1565b005b3480156107b857600080fd5b506107d360048036038101906107ce9190613dfb565b611b24565b6040516107e09190613e56565b60405180910390f35b3480156107f557600080fd5b506107fe611c0f565b60405161080b9190614008565b60405180910390f35b34801561082057600080fd5b5061083b60048036038101906108369190613dfb565b611c35565b6040516108489190613e56565b60405180910390f35b34801561085d57600080fd5b50610866611c53565b6040516108739190613f27565b60405180910390f35b34801561088857600080fd5b50610891611c59565b60405161089e9190613f27565b60405180910390f35b3480156108b357600080fd5b506108bc611c5f565b6040516108c99190613f27565b60405180910390f35b3480156108de57600080fd5b506108f960048036038101906108f49190613e71565b611c65565b6040516109069190613e56565b60405180910390f35b34801561091b57600080fd5b50610924611c85565b6040516109319190613e56565b60405180910390f35b34801561094657600080fd5b50610961600480360381019061095c919061404f565b611c98565b005b34801561096f57600080fd5b5061098a6004803603810190610985919061408f565b611dd8565b005b34801561099857600080fd5b506109b360048036038101906109ae9190613f95565b611ef2565b005b3480156109c157600080fd5b506109dc60048036038101906109d79190613f95565b612055565b005b3480156109ea57600080fd5b50610a056004803603810190610a009190613f95565b6121cf565b005b348015610a1357600080fd5b50610a2e6004803603810190610a2991906140e2565b612332565b604051610a3b9190613f27565b60405180910390f35b348015610a5057600080fd5b50610a596123b9565b604051610a669190613f27565b60405180910390f35b348015610a7b57600080fd5b50610a846123bf565b604051610a919190613f27565b60405180910390f35b348015610aa657600080fd5b50610aaf6123c5565b604051610abc9190613f27565b60405180910390f35b348015610ad157600080fd5b50610ada6123cb565b604051610ae79190613f27565b60405180910390f35b348015610afc57600080fd5b50610b176004803603810190610b129190613e71565b6123d1565b005b348015610b2557600080fd5b50610b2e612597565b005b348015610b3c57600080fd5b50610b4561269f565b604051610b529190613f27565b60405180910390f35b606060038054610b6a90614151565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9690614151565b8015610be35780601f10610bb857610100808354040283529160200191610be3565b820191906000526020600020905b815481529060010190602001808311610bc657829003601f168201915b5050505050905090565b6000610c01610bfa6126a5565b84846126ad565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60175481565b60185481565b60165481565b6000610c78848484612876565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cc36126a5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3a906141f4565b60405180910390fd5b610d5785610d4f6126a5565b8584036126ad565b60019150509392505050565b610d6b6126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df190614260565b60405180910390fd5b670de0b6b3a76400006127106019610e10610c4f565b610e1a91906142af565b610e249190614320565b610e2e9190614320565b811015610e70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e67906143c3565b60405180910390fd5b670de0b6b3a764000081610e8491906142af565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009600654604051610ebb9190613f27565b60405180910390a150565b60006012905090565b6000610f71610edc6126a5565b848460016000610eea6126a5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f6c91906143e3565b6126ad565b6001905092915050565b7f00000000000000000000000000178ad7d9e6eb9c6e0463e2adee61008531302681565b60075481565b600d60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110086126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90614260565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6111606126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e690614260565b60405180910390fd5b80611283577f00000000000000000000000000178ad7d9e6eb9c6e0463e2adee61008531302673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611282576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127990614489565b60405180910390fd5b5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b6112ec6126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461137b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137290614260565b60405180910390fd5b82600f819055508160108190555080601181905550601054600f546113a091906143e3565b600e819055506023601154600e546113b891906143e3565b11156113f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f09061451b565b60405180910390fd5b505050565b60006114086126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148e90614260565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611505576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fc90614587565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115409190614008565b602060405180830381865afa15801561155d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158191906145bc565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b81526004016115be9291906145e9565b6020604051808303816000875af11580156115dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116019190614627565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e43884826040516116349291906145e9565b60405180910390a15092915050565b60065481565b6116516126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d790614260565b60405180910390fd5b600d60009054906101000a900460ff1615611730576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611727906146a0565b60405180910390fd5b6001600d60006101000a81548160ff0219169083151502179055506001600d60016101000a81548160ff02191690831515021790555043600c81905550426019819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6117d46126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185a90614260565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c990614732565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fd1e7d6a3390dd5008bd1c57798817b9f806e4c417264e7d3d67e42e784dc24a960405160405180910390a250565b60135481565b60606004805461196e90614151565b80601f016020809104026020016040519081016040528092919081815260200182805461199a90614151565b80156119e75780601f106119bc576101008083540402835291602001916119e7565b820191906000526020600020905b8154815290600101906020018083116119ca57829003601f168201915b5050505050905090565b6119f96126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7f90614260565b60405180910390fd5b7f00000000000000000000000000178ad7d9e6eb9c6e0463e2adee61008531302673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0d906147c4565b60405180910390fd5b611b208282613434565b5050565b60008060016000611b336126a5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be790614856565b60405180910390fd5b611c04611bfb6126a5565b858584036126ad565b600191505092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611c49611c426126a5565b8484612876565b6001905092915050565b60085481565b60155481565b60195481565b601c6020528060005260406000206000915054906101000a900460ff1681565b600d60009054906101000a900460ff1681565b611ca06126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2690614260565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611dcc9190613e56565b60405180910390a25050565b611de06126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6690614260565b60405180910390fd5b826013819055508160148190555080601581905550601454601354611e9491906143e3565b6012819055506023601554601254611eac91906143e3565b1115611eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee4906148e8565b60405180910390fd5b505050565b611efa6126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8090614260565b60405180910390fd5b670de0b6b3a76400006127106019611f9f610c4f565b611fa991906142af565b611fb39190614320565b611fbd9190614320565b811015611fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff69061497a565b60405180910390fd5b670de0b6b3a76400008161201391906142af565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc60085460405161204a9190613f27565b60405180910390a150565b61205d6126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e390614260565b60405180910390fd5b620186a060016120fa610c4f565b61210491906142af565b61210e9190614320565b811015612150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214790614a0c565b60405180910390fd5b6064600361215c610c4f565b61216691906142af565b6121709190614320565b8111156121b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a990614a9e565b60405180910390fd5b670de0b6b3a7640000816121c691906142af565b600a8190555050565b6121d76126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225d90614260565b60405180910390fd5b670de0b6b3a7640000612710601961227c610c4f565b61228691906142af565b6122909190614320565b61229a9190614320565b8110156122dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d390614b30565b60405180910390fd5b670de0b6b3a7640000816122f091906142af565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516123279190613f27565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b60115481565b600c5481565b60105481565b6123d96126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245f90614260565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ce90614bc2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61259f6126a5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461262e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262590614260565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161265490614c13565b60006040518083038185875af1925050503d8060008114612691576040519150601f19603f3d011682016040523d82523d6000602084013e612696565b606091505b50508091505050565b60145481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361271c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271390614c9a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361278b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278290614d2c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128699190613f27565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128dc90614dbe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294b90614e50565b60405180910390fd5b60008111612997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298e90614ebc565b60405180910390fd5b61299f6117a2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612a0d57506129dd6117a2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a465750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a80575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612ebb57600d60009054906101000a900460ff16612b7a57601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b3a5750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7090614f28565b60405180910390fd5b5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c1d5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612cc457600654811115612c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5e90614fba565b60405180910390fd5b600854612c7383610fb8565b82612c7e91906143e3565b1115612cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb690615026565b60405180910390fd5b612eba565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612d675750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612db657600754811115612db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da8906150b8565b60405180910390fd5b612eb9565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612e5a5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612eb857600854612e6b83610fb8565b82612e7691906143e3565b1115612eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eae90615026565b60405180910390fd5b5b5b5b5b6000612ec630610fb8565b90506000600a548210159050808015612eeb5750600d60019054906101000a900460ff165b8015612f045750600960009054906101000a900460ff16155b8015612f5a5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612fb05750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130065750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561304a576001600960006101000a81548160ff02191690831515021790555061302e6134df565b6000600960006101000a81548160ff0219169083151502179055505b6000600190506000601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130f35750601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130fd57600091505b6000821561341f5761025860195461311591906143e3565b421115801561316d5750601c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561319957606460558761318191906142af565b61318b9190614320565b9150613198883084613695565b5b601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131f457506000601254115b156132b25760646012548761320991906142af565b6132139190614320565b90506012546014548261322691906142af565b6132309190614320565b6017600082825461324191906143e3565b925050819055506012546013548261325991906142af565b6132639190614320565b6016600082825461327491906143e3565b9250508190555060646015548761328b91906142af565b6132959190614320565b601860008282546132a691906143e3565b925050819055506133c8565b601c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561330d57506000600e54115b156133c7576064600e548761332291906142af565b61332c9190614320565b9050600e546010548261333f91906142af565b6133499190614320565b6017600082825461335a91906143e3565b92505081905550600e54600f548261337291906142af565b61337c9190614320565b6016600082825461338d91906143e3565b925050819055506064601554876133a491906142af565b6133ae9190614320565b601860008282546133bf91906143e3565b925050819055505b5b60008111156133dd576133dc883083613695565b5b6133ec8861dead601854613695565b81601854826133fb91906143e3565b61340591906143e3565b8661341091906150d8565b95506000601881905550600091505b61342a888888613695565b5050505050505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061349582826138fe565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60006134ea30610fb8565b905060006016546017546134fe91906143e3565b9050600082148061350f5750600081145b1561351b575050613693565b600a805461352991906142af565b82111561354157600a805461353e91906142af565b91505b6000806002836017548661355591906142af565b61355f9190614320565b6135699190614320565b905061357f818561357a91906150d8565b613992565b600047905060008190506000600260175461359a9190614320565b866135a591906150d8565b601654846135b391906142af565b6135bd9190614320565b905080826135cb91906150d8565b9150600060178190555060006016819055506000841180156135ed5750600082115b156135fd576135fc8483613bcf565b5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161364390614c13565b60006040518083038185875af1925050503d8060008114613680576040519150601f19603f3d011682016040523d82523d6000602084013e613685565b606091505b505080955050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136fb90614dbe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161376a90614e50565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156137f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137f09061517e565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461388c91906143e3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138f09190613f27565b60405180910390a350505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746828260405161398692919061519e565b60405180910390a15050565b6000600267ffffffffffffffff8111156139af576139ae6151c7565b5b6040519080825280602002602001820160405280156139dd5781602001602082028036833780820191505090505b50905030816000815181106139f5576139f46151f6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613abe919061523a565b81600181518110613ad257613ad16151f6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613b37307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846126ad565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613b99959493929190615360565b600060405180830381600087803b158015613bb357600080fd5b505af1158015613bc7573d6000803e3d6000fd5b505050505050565b613bfa307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846126ad565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613c446117a2565b426040518863ffffffff1660e01b8152600401613c66969594939291906153ba565b60606040518083038185885af1158015613c84573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613ca9919061541b565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613cea578082015181840152602081019050613ccf565b60008484015250505050565b6000601f19601f8301169050919050565b6000613d1282613cb0565b613d1c8185613cbb565b9350613d2c818560208601613ccc565b613d3581613cf6565b840191505092915050565b60006020820190508181036000830152613d5a8184613d07565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613d9282613d67565b9050919050565b613da281613d87565b8114613dad57600080fd5b50565b600081359050613dbf81613d99565b92915050565b6000819050919050565b613dd881613dc5565b8114613de357600080fd5b50565b600081359050613df581613dcf565b92915050565b60008060408385031215613e1257613e11613d62565b5b6000613e2085828601613db0565b9250506020613e3185828601613de6565b9150509250929050565b60008115159050919050565b613e5081613e3b565b82525050565b6000602082019050613e6b6000830184613e47565b92915050565b600060208284031215613e8757613e86613d62565b5b6000613e9584828501613db0565b91505092915050565b6000819050919050565b6000613ec3613ebe613eb984613d67565b613e9e565b613d67565b9050919050565b6000613ed582613ea8565b9050919050565b6000613ee782613eca565b9050919050565b613ef781613edc565b82525050565b6000602082019050613f126000830184613eee565b92915050565b613f2181613dc5565b82525050565b6000602082019050613f3c6000830184613f18565b92915050565b600080600060608486031215613f5b57613f5a613d62565b5b6000613f6986828701613db0565b9350506020613f7a86828701613db0565b9250506040613f8b86828701613de6565b9150509250925092565b600060208284031215613fab57613faa613d62565b5b6000613fb984828501613de6565b91505092915050565b600060ff82169050919050565b613fd881613fc2565b82525050565b6000602082019050613ff36000830184613fcf565b92915050565b61400281613d87565b82525050565b600060208201905061401d6000830184613ff9565b92915050565b61402c81613e3b565b811461403757600080fd5b50565b60008135905061404981614023565b92915050565b6000806040838503121561406657614065613d62565b5b600061407485828601613db0565b92505060206140858582860161403a565b9150509250929050565b6000806000606084860312156140a8576140a7613d62565b5b60006140b686828701613de6565b93505060206140c786828701613de6565b92505060406140d886828701613de6565b9150509250925092565b600080604083850312156140f9576140f8613d62565b5b600061410785828601613db0565b925050602061411885828601613db0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061416957607f821691505b60208210810361417c5761417b614122565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006141de602883613cbb565b91506141e982614182565b604082019050919050565b6000602082019050818103600083015261420d816141d1565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061424a602083613cbb565b915061425582614214565b602082019050919050565b600060208201905081810360008301526142798161423d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006142ba82613dc5565b91506142c583613dc5565b92508282026142d381613dc5565b915082820484148315176142ea576142e9614280565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061432b82613dc5565b915061433683613dc5565b925082614346576143456142f1565b5b828204905092915050565b7f43616e6e6f7420736574206d6178427579206c6f776572207468616e20302e3260008201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b60006143ad602283613cbb565b91506143b882614351565b604082019050919050565b600060208201905081810360008301526143dc816143a0565b9050919050565b60006143ee82613dc5565b91506143f983613dc5565b925082820190508082111561441157614410614280565b5b92915050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614473602783613cbb565b915061447e82614417565b604082019050919050565b600060208201905081810360008301526144a281614466565b9050919050565b7f546f74616c2062757920666565732063616e6e6f74206265206772656174657260008201527f207468616e203335250000000000000000000000000000000000000000000000602082015250565b6000614505602983613cbb565b9150614510826144a9565b604082019050919050565b60006020820190508181036000830152614534816144f8565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b6000614571601c83613cbb565b915061457c8261453b565b602082019050919050565b600060208201905081810360008301526145a081614564565b9050919050565b6000815190506145b681613dcf565b92915050565b6000602082840312156145d2576145d1613d62565b5b60006145e0848285016145a7565b91505092915050565b60006040820190506145fe6000830185613ff9565b61460b6020830184613f18565b9392505050565b60008151905061462181614023565b92915050565b60006020828403121561463d5761463c613d62565b5b600061464b84828501614612565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b600061468a601783613cbb565b915061469582614654565b602082019050919050565b600060208201905081810360008301526146b98161467d565b9050919050565b7f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f7460008201527f2062652030000000000000000000000000000000000000000000000000000000602082015250565b600061471c602583613cbb565b9150614727826146c0565b604082019050919050565b6000602082019050818103600083015261474b8161470f565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006147ae603983613cbb565b91506147b982614752565b604082019050919050565b600060208201905081810360008301526147dd816147a1565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614840602583613cbb565b915061484b826147e4565b604082019050919050565b6000602082019050818103600083015261486f81614833565b9050919050565b7f546f74616c2073656c6c20666565732063616e6e6f742062652067726561746560008201527f72207468616e2033352500000000000000000000000000000000000000000000602082015250565b60006148d2602a83613cbb565b91506148dd82614876565b604082019050919050565b60006020820190508181036000830152614901816148c5565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e323525000000000000000000000000000000000000000000000000000000602082015250565b6000614964602583613cbb565b915061496f82614908565b604082019050919050565b6000602082019050818103600083015261499381614957565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006149f6603583613cbb565b9150614a018261499a565b604082019050919050565b60006020820190508181036000830152614a25816149e9565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20332520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000614a88603283613cbb565b9150614a9382614a2c565b604082019050919050565b60006020820190508181036000830152614ab781614a7b565b9050919050565b7f43616e6e6f7420736574206d617853656c6c206c6f776572207468616e20302e60008201527f3235250000000000000000000000000000000000000000000000000000000000602082015250565b6000614b1a602383613cbb565b9150614b2582614abe565b604082019050919050565b60006020820190508181036000830152614b4981614b0d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614bac602683613cbb565b9150614bb782614b50565b604082019050919050565b60006020820190508181036000830152614bdb81614b9f565b9050919050565b600081905092915050565b50565b6000614bfd600083614be2565b9150614c0882614bed565b600082019050919050565b6000614c1e82614bf0565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614c84602483613cbb565b9150614c8f82614c28565b604082019050919050565b60006020820190508181036000830152614cb381614c77565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d16602283613cbb565b9150614d2182614cba565b604082019050919050565b60006020820190508181036000830152614d4581614d09565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614da8602583613cbb565b9150614db382614d4c565b604082019050919050565b60006020820190508181036000830152614dd781614d9b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614e3a602383613cbb565b9150614e4582614dde565b604082019050919050565b60006020820190508181036000830152614e6981614e2d565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b6000614ea6601d83613cbb565b9150614eb182614e70565b602082019050919050565b60006020820190508181036000830152614ed581614e99565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614f12601683613cbb565b9150614f1d82614edc565b602082019050919050565b60006020820190508181036000830152614f4181614f05565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000614fa4602883613cbb565b9150614faf82614f48565b604082019050919050565b60006020820190508181036000830152614fd381614f97565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b6000615010601883613cbb565b915061501b82614fda565b602082019050919050565b6000602082019050818103600083015261503f81615003565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b60006150a2602a83613cbb565b91506150ad82615046565b604082019050919050565b600060208201905081810360008301526150d181615095565b9050919050565b60006150e382613dc5565b91506150ee83613dc5565b925082820390508181111561510657615105614280565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615168602683613cbb565b91506151738261510c565b604082019050919050565b600060208201905081810360008301526151978161515b565b9050919050565b60006040820190506151b36000830185613ff9565b6151c06020830184613e47565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061523481613d99565b92915050565b6000602082840312156152505761524f613d62565b5b600061525e84828501615225565b91505092915050565b6000819050919050565b600061528c61528761528284615267565b613e9e565b613dc5565b9050919050565b61529c81615271565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6152d781613d87565b82525050565b60006152e983836152ce565b60208301905092915050565b6000602082019050919050565b600061530d826152a2565b61531781856152ad565b9350615322836152be565b8060005b8381101561535357815161533a88826152dd565b9750615345836152f5565b925050600181019050615326565b5085935050505092915050565b600060a0820190506153756000830188613f18565b6153826020830187615293565b81810360408301526153948186615302565b90506153a36060830185613ff9565b6153b06080830184613f18565b9695505050505050565b600060c0820190506153cf6000830189613ff9565b6153dc6020830188613f18565b6153e96040830187615293565b6153f66060830186615293565b6154036080830185613ff9565b61541060a0830184613f18565b979650505050505050565b60008060006060848603121561543457615433613d62565b5b6000615442868287016145a7565b9350506020615453868287016145a7565b9250506040615464868287016145a7565b915050925092509256fea264697066735822122006a0078fabf10dc1f9047b45ce22516b4c2f5662350b226710e409c704f61fd364736f6c63430008130033

Deployed Bytecode Sourcemap

9867:14453:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4505:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5419:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10988:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10017:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4826:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10731:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10771:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10691:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5596:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13998:264;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4725:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6096:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10067:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9943:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10347:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4942:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8586:150;;;;;;;;;;;;;:::i;:::-;;15487:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10432:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16272:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23402;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9909:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13693:288;;;;;;;;;;;;;:::i;:::-;;8372:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24026:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10578:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4613:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15762:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6319:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10184:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5077:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9978:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10654:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10808:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11212:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10307:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17070:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16666:396;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14551:279;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14900:356;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14274:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5260:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10142:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10506:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10224:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10469:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8744:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23858:160;;;;;;;;;;;;;:::i;:::-;;10616:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4505:100;4559:13;4592:5;4585:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4505:100;:::o;5419:169::-;5502:4;5519:39;5528:12;:10;:12::i;:::-;5542:7;5551:6;5519:8;:39::i;:::-;5576:4;5569:11;;5419:169;;;;:::o;10988:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;10017:43::-;;;:::o;4826:108::-;4887:7;4914:12;;4907:19;;4826:108;:::o;10731:33::-;;;;:::o;10771:28::-;;;;:::o;10691:33::-;;;;:::o;5596:492::-;5736:4;5753:36;5763:6;5771:9;5782:6;5753:9;:36::i;:::-;5802:24;5829:11;:19;5841:6;5829:19;;;;;;;;;;;;;;;:33;5849:12;:10;:12::i;:::-;5829:33;;;;;;;;;;;;;;;;5802:60;;5901:6;5881:16;:26;;5873:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5988:57;5997:6;6005:12;:10;:12::i;:::-;6038:6;6019:16;:25;5988:8;:57::i;:::-;6076:4;6069:11;;;5596:492;;;;;:::o;13998:264::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14119:4:::1;14112:5;14107:2;14091:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:26;;;;:::i;:::-;14090:33;;;;:::i;:::-;14080:6;:43;;14072:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;14198:6;14188;:17;;;;:::i;:::-;14173:12;:32;;;;14221:33;14241:12;;14221:33;;;;;;:::i;:::-;;;;;;;;13998:264:::0;:::o;4725:93::-;4783:5;4808:2;4801:9;;4725:93;:::o;6096:215::-;6184:4;6201:80;6210:12;:10;:12::i;:::-;6224:7;6270:10;6233:11;:25;6245:12;:10;:12::i;:::-;6233:25;;;;;;;;;;;;;;;:34;6259:7;6233:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6201:8;:80::i;:::-;6299:4;6292:11;;6096:215;;;;:::o;10067:38::-;;;:::o;9943:28::-;;;;:::o;10347:31::-;;;;;;;;;;;;;:::o;4942:127::-;5016:7;5043:9;:18;5053:7;5043:18;;;;;;;;;;;;;;;;5036:25;;4942:127;;;:::o;8586:150::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8695:1:::1;8658:40;;8679:6;;;;;;;;;;;8658:40;;;;;;;;;;;;8726:1;8709:6;;:19;;;;;;;;;;;;;;;;;;8586:150::o:0;15487:267::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15583:4:::1;15579:111;;15621:13;15611:23;;:6;:23;;::::0;15603:75:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15579:111;15742:4;15700:31;:39;15732:6;15700:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;15487:267:::0;;:::o;10432:30::-;;;;:::o;16272:386::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16407:13:::1;16389:15;:31;;;;16449:13;16431:15;:31;;;;16486:8;16473:10;:21;;;;16538:15;;16520;;:33;;;;:::i;:::-;16505:12;:48;;;;16603:2;16588:10;;16573:12;;:25;;;;:::i;:::-;16572:33;;16564:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;16272:386:::0;;;:::o;23402:::-;23489:10;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23538:4:::1;23520:23;;:6;:23;;::::0;23512:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23587:24;23621:6;23614:24;;;23647:4;23614:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23587:66;;23679:6;23672:23;;;23696:3;23701:16;23672:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23664:54;;23734:46;23755:6;23763:16;23734:46;;;;;;;:::i;:::-;;;;;;;;23501:287;23402:386:::0;;;;:::o;9909:27::-;;;;:::o;13693:288::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13757:13:::1;;;;;;;;;;;13756:14;13748:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;13825:4;13809:13;;:20;;;;;;;;;;;;;;;;;;13854:4;13840:11;;:18;;;;;;;;;;;;;;;;;;13890:12;13869:18;:33;;;;13926:15;13913:10;:28;;;;13957:16;;;;;;;;;;13693:288::o:0;8372:79::-;8410:7;8437:6;;;;;;;;;;;8430:13;;8372:79;:::o;24026:289::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24149:1:::1;24120:31;;:17;:31;;::::0;24112:81:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24231:17;24204:16;;:45;;;;;;;;;;;;;;;;;;24289:17;24265:42;;;;;;;;;;;;24026:289:::0;:::o;10578:31::-;;;;:::o;4613:104::-;4669:13;4702:7;4695:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4613:104;:::o;15762:246::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15871:13:::1;15863:21;;:4;:21;;::::0;15855:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15959:41;15988:4;15994:5;15959:28;:41::i;:::-;15762:246:::0;;:::o;6319:413::-;6412:4;6429:24;6456:11;:25;6468:12;:10;:12::i;:::-;6456:25;;;;;;;;;;;;;;;:34;6482:7;6456:34;;;;;;;;;;;;;;;;6429:61;;6529:15;6509:16;:35;;6501:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6622:67;6631:12;:10;:12::i;:::-;6645:7;6673:15;6654:16;:34;6622:8;:67::i;:::-;6720:4;6713:11;;;6319:413;;;;:::o;10184:31::-;;;;;;;;;;;;;:::o;5077:175::-;5163:4;5180:42;5190:12;:10;:12::i;:::-;5204:9;5215:6;5180:9;:42::i;:::-;5240:4;5233:11;;5077:175;;;;:::o;9978:30::-;;;;:::o;10654:26::-;;;;:::o;10808:25::-;;;;:::o;11212:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;10307:33::-;;;;;;;;;;;;;:::o;17070:182::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17186:8:::1;17155:19;:28;17175:7;17155:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17226:7;17210:34;;;17235:8;17210:34;;;;;;:::i;:::-;;;;;;;;17070:182:::0;;:::o;16666:396::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16803:13:::1;16784:16;:32;;;;16846:13;16827:16;:32;;;;16884:8;16870:11;:22;;;;16938:16;;16919;;:35;;;;:::i;:::-;16903:13;:51;;;;17006:2;16990:11;;16974:13;;:27;;;;:::i;:::-;16973:35;;16965:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;16666:396:::0;;;:::o;14551:279::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14675:4:::1;14668:5;14663:2;14647:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:26;;;;:::i;:::-;14646:33;;;;:::i;:::-;14636:6;:43;;14628:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;14760:6;14750;:17;;;;:::i;:::-;14732:15;:35;;;;14783:39;14806:15;;14783:39;;;;;;:::i;:::-;;;;;;;;14551:279:::0;:::o;14900:356::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15024:6:::1;15020:1;15004:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;14991:9;:39;;14983:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;15140:3;15136:1;15120:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:23;;;;:::i;:::-;15107:9;:36;;15099:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;15242:6;15229:9;:20;;;;:::i;:::-;15208:18;:41;;;;14900:356:::0;:::o;14274:269::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14396:4:::1;14389:5;14384:2;14368:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:26;;;;:::i;:::-;14367:33;;;;:::i;:::-;14357:6;:43;;14349:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;14477:6;14467;:17;;;;:::i;:::-;14451:13;:33;;;;14500:35;14521:13;;14500:35;;;;;;:::i;:::-;;;;;;;;14274:269:::0;:::o;5260:151::-;5349:7;5376:11;:18;5388:5;5376:18;;;;;;;;;;;;;;;:27;5395:7;5376:27;;;;;;;;;;;;;;;;5369:34;;5260:151;;;;:::o;10142:33::-;;;;:::o;10506:25::-;;;;:::o;10224:37::-;;;;:::o;10469:30::-;;;;:::o;8744:244::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8853:1:::1;8833:22;;:8;:22;;::::0;8825:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8943:8;8914:38;;8935:6;;;;;;;;;;;8914:38;;;;;;;;;;;;8972:8;8963:6;;:17;;;;;;;;;;;;;;;;;;8744:244:::0;:::o;23858:160::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23916:12:::1;23960:10;23952:24;;23984:21;23952:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23939:71;;;;;23905:113;23858:160::o:0;10616:31::-;;;;:::o;772:98::-;825:7;852:10;845:17;;772:98;:::o;7661:380::-;7814:1;7797:19;;:5;:19;;;7789:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7895:1;7876:21;;:7;:21;;;7868:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7979:6;7949:11;:18;7961:5;7949:18;;;;;;;;;;;;;;;:27;7968:7;7949:27;;;;;;;;;;;;;;;:36;;;;8017:7;8001:32;;8010:5;8001:32;;;8026:6;8001:32;;;;;;:::i;:::-;;;;;;;;7661:380;;;:::o;17260:3774::-;17376:1;17360:18;;:4;:18;;;17352:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17453:1;17439:16;;:2;:16;;;17431:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17523:1;17514:6;:10;17506:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;17612:7;:5;:7::i;:::-;17604:15;;:4;:15;;;;:32;;;;;17629:7;:5;:7::i;:::-;17623:13;;:2;:13;;;;17604:32;:52;;;;;17654:1;17640:16;;:2;:16;;;;17604:52;:77;;;;;17674:6;17660:21;;:2;:21;;;;17604:77;17600:1127;;;17705:13;;;;;;;;;;;17701:148;;17750:19;:25;17770:4;17750:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;17779:19;:23;17799:2;17779:23;;;;;;;;;;;;;;;;;;;;;;;;;17750:52;17742:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;17701:148;17929:25;:31;17955:4;17929:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;17965:31;:35;17997:2;17965:35;;;;;;;;;;;;;;;;;;;;;;;;;17964:36;17929:71;17925:787;;;18047:12;;18037:6;:22;;18029:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;18165:15;;18148:13;18158:2;18148:9;:13::i;:::-;18139:6;:22;;;;:::i;:::-;:41;;18131:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;17925:787;;;18286:25;:29;18312:2;18286:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;18320:31;:37;18352:4;18320:37;;;;;;;;;;;;;;;;;;;;;;;;;18319:38;18286:71;18282:430;;;18404:13;;18394:6;:23;;18386:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;18282:430;;;18513:31;:35;18545:2;18513:35;;;;;;;;;;;;;;;;;;;;;;;;;18512:36;:78;;;;;18553:31;:37;18585:4;18553:37;;;;;;;;;;;;;;;;;;;;;;;;;18552:38;18512:78;18508:204;;;18648:15;;18631:13;18641:2;18631:9;:13::i;:::-;18622:6;:22;;;;:::i;:::-;:41;;18614:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;18508:204;18282:430;17925:787;17600:1127;18749:28;18780:24;18798:4;18780:9;:24::i;:::-;18749:55;;18825:12;18864:18;;18840:20;:42;;18825:57;;18898:7;:22;;;;;18909:11;;;;;;;;;;;18898:22;:35;;;;;18925:8;;;;;;;;;;;18924:9;18898:35;:71;;;;;18938:25;:31;18964:4;18938:31;;;;;;;;;;;;;;;;;;;;;;;;;18937:32;18898:71;:101;;;;;18974:19;:25;18994:4;18974:25;;;;;;;;;;;;;;;;;;;;;;;;;18973:26;18898:101;:129;;;;;19004:19;:23;19024:2;19004:23;;;;;;;;;;;;;;;;;;;;;;;;;19003:24;18898:129;18895:236;;;19055:4;19044:8;;:15;;;;;;;;;;;;;;;;;;19076:10;:8;:10::i;:::-;19114:5;19103:8;;:16;;;;;;;;;;;;;;;;;;18895:236;19143:12;19158:4;19143:19;;19173:21;19299:19;:25;19319:4;19299:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19328:19;:23;19348:2;19328:23;;;;;;;;;;;;;;;;;;;;;;;;;19299:52;19296:99;;;19378:5;19368:15;;19296:99;19415:12;19519:7;19516:1453;;;19686:10;19673;;:23;;;;:::i;:::-;19654:15;:42;;:77;;;;;19700:25;:31;19726:4;19700:31;;;;;;;;;;;;;;;;;;;;;;;;;19654:77;19651:219;;;19781:3;19776:2;19767:6;:11;;;;:::i;:::-;:17;;;;:::i;:::-;19751:33;;19803:51;19819:4;19833;19840:13;19803:15;:51::i;:::-;19651:219;19913:25;:29;19939:2;19913:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;19962:1;19946:13;;:17;19913:50;19909:727;;;20014:3;19999:13;;19990:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;19983:34;;20084:13;;20065:16;;20058:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;20036:18;;:61;;;;;;;:::i;:::-;;;;;;;;20164:13;;20145:16;;20138:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;20116:18;;:61;;;;;;;:::i;:::-;;;;;;;;20236:3;20222:11;;20213:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;20196:13;;:43;;;;;;;:::i;:::-;;;;;;;;19909:727;;;20302:25;:31;20328:4;20302:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;20352:1;20337:12;;:16;20302:51;20299:337;;;20402:3;20387:12;;20378:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;20371:34;;20468:12;;20450:15;;20443:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;20421:18;;:59;;;;;;;:::i;:::-;;;;;;;;20546:12;;20528:15;;20521:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;20499:18;;:59;;;;;;;:::i;:::-;;;;;;;;20617:3;20603:11;;20594:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;20577:13;;:43;;;;;;;:::i;:::-;;;;;;;;20299:337;19909:727;20674:1;20667:4;:8;20664:94;;;20700:42;20716:4;20730;20737;20700:15;:42::i;:::-;20664:94;20776:53;20792:4;20806:6;20815:13;;20776:15;:53::i;:::-;20879:13;20863;;20856:4;:20;;;;:::i;:::-;:36;;;;:::i;:::-;20845:48;;;;;:::i;:::-;;;20924:1;20908:13;:17;;;;20956:1;20940:17;;19516:1453;20993:33;21009:4;21015:2;21019:6;20993:15;:33::i;:::-;17339:3695;;;;;17260:3774;;;:::o;16016:248::-;16133:5;16099:25;:31;16125:4;16099:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16159;16186:4;16192:5;16159:26;:39::i;:::-;16250:5;16216:40;;16244:4;16216:40;;;;;;;;;;;;16016:248;;:::o;22175:1219::-;22214:23;22240:24;22258:4;22240:9;:24::i;:::-;22214:50;;22275:25;22324:18;;22303;;:39;;;;:::i;:::-;22275:67;;22385:1;22366:15;:20;:46;;;;22411:1;22390:17;:22;22366:46;22363:60;;;22415:7;;;;22363:60;22477:2;22456:18;;:23;;;;:::i;:::-;22438:15;:41;22435:113;;;22534:2;22513:18;;:23;;;;:::i;:::-;22495:41;;22435:113;22560:12;22642:23;22727:1;22707:17;22686:18;;22668:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;22642:86;;22749:51;22784:15;22766;:33;;;;:::i;:::-;22749:16;:51::i;:::-;22822:18;22843:21;22822:42;;22875:23;22901:10;22875:36;;22924:23;23025:1;23006:18;;:20;;;;:::i;:::-;22985:17;:42;;;;:::i;:::-;22963:18;;22950:10;:31;;;;:::i;:::-;:78;;;;:::i;:::-;22924:104;;23060:15;23041:34;;;;;:::i;:::-;;;23121:1;23100:18;:22;;;;23154:1;23133:18;:22;;;;23199:1;23181:15;:19;:42;;;;;23222:1;23204:15;:19;23181:42;23178:119;;;23239:46;23252:15;23269;23239:12;:46::i;:::-;23178:119;23330:16;;;;;;;;;;;23322:30;;23360:21;23322:64;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23309:77;;;;;22203:1191;;;;;;;22175:1219;:::o;6740:614::-;6898:1;6880:20;;:6;:20;;;6872:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6982:1;6961:23;;:9;:23;;;6953:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7037:21;7061:9;:17;7071:6;7061:17;;;;;;;;;;;;;;;;7037:41;;7114:6;7097:13;:23;;7089:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7235:6;7219:13;:22;7199:9;:17;7209:6;7199:17;;;;;;;;;;;;;;;:42;;;;7287:6;7263:9;:20;7273:9;7263:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7328:9;7311:35;;7320:6;7311:35;;;7339:6;7311:35;;;;;;:::i;:::-;;;;;;;;6861:493;6740:614;;;:::o;15268:207::-;15398:10;15356:31;:39;15388:6;15356:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;15424:43;15448:6;15456:10;15424:43;;;;;;;:::i;:::-;;;;;;;;15268:207;;:::o;21042:591::-;21170:21;21208:1;21194:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21170:40;;21239:4;21221;21226:1;21221:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21265:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21255:4;21260:1;21255:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;21300:62;21317:4;21332:15;21350:11;21300:8;:62::i;:::-;21401:15;:66;;;21482:11;21508:1;21552:4;21579;21599:15;21401:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21097:536;21042:591;:::o;21645:522::-;21793:62;21810:4;21825:15;21843:11;21793:8;:62::i;:::-;21898:15;:31;;;21937:9;21970:4;21990:11;22016:1;22059;22110:7;:5;:7::i;:::-;22133:15;21898:261;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21645:522;;:::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;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:144::-;4195:9;4228:37;4259:5;4228:37;:::i;:::-;4215:50;;4127:144;;;:::o;4277:167::-;4382:55;4431:5;4382:55;:::i;:::-;4377:3;4370:68;4277:167;;:::o;4450:258::-;4561:4;4599:2;4588:9;4584:18;4576:26;;4612:89;4698:1;4687:9;4683:17;4674:6;4612:89;:::i;:::-;4450:258;;;;:::o;4714:118::-;4801:24;4819:5;4801:24;:::i;:::-;4796:3;4789:37;4714:118;;:::o;4838:222::-;4931:4;4969:2;4958:9;4954:18;4946:26;;4982:71;5050:1;5039:9;5035:17;5026:6;4982:71;:::i;:::-;4838:222;;;;:::o;5066:619::-;5143:6;5151;5159;5208:2;5196:9;5187:7;5183:23;5179:32;5176:119;;;5214:79;;:::i;:::-;5176:119;5334:1;5359:53;5404:7;5395:6;5384:9;5380:22;5359:53;:::i;:::-;5349:63;;5305:117;5461:2;5487:53;5532:7;5523:6;5512:9;5508:22;5487:53;:::i;:::-;5477:63;;5432:118;5589:2;5615:53;5660:7;5651:6;5640:9;5636:22;5615:53;:::i;:::-;5605:63;;5560:118;5066:619;;;;;:::o;5691:329::-;5750:6;5799:2;5787:9;5778:7;5774:23;5770:32;5767:119;;;5805:79;;:::i;:::-;5767:119;5925:1;5950:53;5995:7;5986:6;5975:9;5971:22;5950:53;:::i;:::-;5940:63;;5896:117;5691:329;;;;:::o;6026:86::-;6061:7;6101:4;6094:5;6090:16;6079:27;;6026:86;;;:::o;6118:112::-;6201:22;6217:5;6201:22;:::i;:::-;6196:3;6189:35;6118:112;;:::o;6236:214::-;6325:4;6363:2;6352:9;6348:18;6340:26;;6376:67;6440:1;6429:9;6425:17;6416:6;6376:67;:::i;:::-;6236:214;;;;:::o;6456:118::-;6543:24;6561:5;6543:24;:::i;:::-;6538:3;6531:37;6456:118;;:::o;6580:222::-;6673:4;6711:2;6700:9;6696:18;6688:26;;6724:71;6792:1;6781:9;6777:17;6768:6;6724:71;:::i;:::-;6580:222;;;;:::o;6808:116::-;6878:21;6893:5;6878:21;:::i;:::-;6871:5;6868:32;6858:60;;6914:1;6911;6904:12;6858:60;6808:116;:::o;6930:133::-;6973:5;7011:6;6998:20;6989:29;;7027:30;7051:5;7027:30;:::i;:::-;6930:133;;;;:::o;7069:468::-;7134:6;7142;7191:2;7179:9;7170:7;7166:23;7162:32;7159:119;;;7197:79;;:::i;:::-;7159:119;7317:1;7342:53;7387:7;7378:6;7367:9;7363:22;7342:53;:::i;:::-;7332:63;;7288:117;7444:2;7470:50;7512:7;7503:6;7492:9;7488:22;7470:50;:::i;:::-;7460:60;;7415:115;7069:468;;;;;:::o;7543:619::-;7620:6;7628;7636;7685:2;7673:9;7664:7;7660:23;7656:32;7653:119;;;7691:79;;:::i;:::-;7653:119;7811:1;7836:53;7881:7;7872:6;7861:9;7857:22;7836:53;:::i;:::-;7826:63;;7782:117;7938:2;7964:53;8009:7;8000:6;7989:9;7985:22;7964:53;:::i;:::-;7954:63;;7909:118;8066:2;8092:53;8137:7;8128:6;8117:9;8113:22;8092:53;:::i;:::-;8082:63;;8037:118;7543:619;;;;;:::o;8168:474::-;8236:6;8244;8293:2;8281:9;8272:7;8268:23;8264:32;8261:119;;;8299:79;;:::i;:::-;8261:119;8419:1;8444:53;8489:7;8480:6;8469:9;8465:22;8444:53;:::i;:::-;8434:63;;8390:117;8546:2;8572:53;8617:7;8608:6;8597:9;8593:22;8572:53;:::i;:::-;8562:63;;8517:118;8168:474;;;;;:::o;8648:180::-;8696:77;8693:1;8686:88;8793:4;8790:1;8783:15;8817:4;8814:1;8807:15;8834:320;8878:6;8915:1;8909:4;8905:12;8895:22;;8962:1;8956:4;8952:12;8983:18;8973:81;;9039:4;9031:6;9027:17;9017:27;;8973:81;9101:2;9093:6;9090:14;9070:18;9067:38;9064:84;;9120:18;;:::i;:::-;9064:84;8885:269;8834:320;;;:::o;9160:227::-;9300:34;9296:1;9288:6;9284:14;9277:58;9369:10;9364:2;9356:6;9352:15;9345:35;9160:227;:::o;9393:366::-;9535:3;9556:67;9620:2;9615:3;9556:67;:::i;:::-;9549:74;;9632:93;9721:3;9632:93;:::i;:::-;9750:2;9745:3;9741:12;9734:19;;9393:366;;;:::o;9765:419::-;9931:4;9969:2;9958:9;9954:18;9946:26;;10018:9;10012:4;10008:20;10004:1;9993:9;9989:17;9982:47;10046:131;10172:4;10046:131;:::i;:::-;10038:139;;9765:419;;;:::o;10190:182::-;10330:34;10326:1;10318:6;10314:14;10307:58;10190:182;:::o;10378:366::-;10520:3;10541:67;10605:2;10600:3;10541:67;:::i;:::-;10534:74;;10617:93;10706:3;10617:93;:::i;:::-;10735:2;10730:3;10726:12;10719:19;;10378:366;;;:::o;10750:419::-;10916:4;10954:2;10943:9;10939:18;10931:26;;11003:9;10997:4;10993:20;10989:1;10978:9;10974:17;10967:47;11031:131;11157:4;11031:131;:::i;:::-;11023:139;;10750:419;;;:::o;11175:180::-;11223:77;11220:1;11213:88;11320:4;11317:1;11310:15;11344:4;11341:1;11334:15;11361:410;11401:7;11424:20;11442:1;11424:20;:::i;:::-;11419:25;;11458:20;11476:1;11458:20;:::i;:::-;11453:25;;11513:1;11510;11506:9;11535:30;11553:11;11535:30;:::i;:::-;11524:41;;11714:1;11705:7;11701:15;11698:1;11695:22;11675:1;11668:9;11648:83;11625:139;;11744:18;;:::i;:::-;11625:139;11409:362;11361:410;;;;:::o;11777:180::-;11825:77;11822:1;11815:88;11922:4;11919:1;11912:15;11946:4;11943:1;11936:15;11963:185;12003:1;12020:20;12038:1;12020:20;:::i;:::-;12015:25;;12054:20;12072:1;12054:20;:::i;:::-;12049:25;;12093:1;12083:35;;12098:18;;:::i;:::-;12083:35;12140:1;12137;12133:9;12128:14;;11963:185;;;;:::o;12154:221::-;12294:34;12290:1;12282:6;12278:14;12271:58;12363:4;12358:2;12350:6;12346:15;12339:29;12154:221;:::o;12381:366::-;12523:3;12544:67;12608:2;12603:3;12544:67;:::i;:::-;12537:74;;12620:93;12709:3;12620:93;:::i;:::-;12738:2;12733:3;12729:12;12722:19;;12381:366;;;:::o;12753:419::-;12919:4;12957:2;12946:9;12942:18;12934:26;;13006:9;13000:4;12996:20;12992:1;12981:9;12977:17;12970:47;13034:131;13160:4;13034:131;:::i;:::-;13026:139;;12753:419;;;:::o;13178:191::-;13218:3;13237:20;13255:1;13237:20;:::i;:::-;13232:25;;13271:20;13289:1;13271:20;:::i;:::-;13266:25;;13314:1;13311;13307:9;13300:16;;13335:3;13332:1;13329:10;13326:36;;;13342:18;;:::i;:::-;13326:36;13178:191;;;;:::o;13375:226::-;13515:34;13511:1;13503:6;13499:14;13492:58;13584:9;13579:2;13571:6;13567:15;13560:34;13375:226;:::o;13607:366::-;13749:3;13770:67;13834:2;13829:3;13770:67;:::i;:::-;13763:74;;13846:93;13935:3;13846:93;:::i;:::-;13964:2;13959:3;13955:12;13948:19;;13607:366;;;:::o;13979:419::-;14145:4;14183:2;14172:9;14168:18;14160:26;;14232:9;14226:4;14222:20;14218:1;14207:9;14203:17;14196:47;14260:131;14386:4;14260:131;:::i;:::-;14252:139;;13979:419;;;:::o;14404:228::-;14544:34;14540:1;14532:6;14528:14;14521:58;14613:11;14608:2;14600:6;14596:15;14589:36;14404:228;:::o;14638:366::-;14780:3;14801:67;14865:2;14860:3;14801:67;:::i;:::-;14794:74;;14877:93;14966:3;14877:93;:::i;:::-;14995:2;14990:3;14986:12;14979:19;;14638:366;;;:::o;15010:419::-;15176:4;15214:2;15203:9;15199:18;15191:26;;15263:9;15257:4;15253:20;15249:1;15238:9;15234:17;15227:47;15291:131;15417:4;15291:131;:::i;:::-;15283:139;;15010:419;;;:::o;15435:178::-;15575:30;15571:1;15563:6;15559:14;15552:54;15435:178;:::o;15619:366::-;15761:3;15782:67;15846:2;15841:3;15782:67;:::i;:::-;15775:74;;15858:93;15947:3;15858:93;:::i;:::-;15976:2;15971:3;15967:12;15960:19;;15619:366;;;:::o;15991:419::-;16157:4;16195:2;16184:9;16180:18;16172:26;;16244:9;16238:4;16234:20;16230:1;16219:9;16215:17;16208:47;16272:131;16398:4;16272:131;:::i;:::-;16264:139;;15991:419;;;:::o;16416:143::-;16473:5;16504:6;16498:13;16489:22;;16520:33;16547:5;16520:33;:::i;:::-;16416:143;;;;:::o;16565:351::-;16635:6;16684:2;16672:9;16663:7;16659:23;16655:32;16652:119;;;16690:79;;:::i;:::-;16652:119;16810:1;16835:64;16891:7;16882:6;16871:9;16867:22;16835:64;:::i;:::-;16825:74;;16781:128;16565:351;;;;:::o;16922:332::-;17043:4;17081:2;17070:9;17066:18;17058:26;;17094:71;17162:1;17151:9;17147:17;17138:6;17094:71;:::i;:::-;17175:72;17243:2;17232:9;17228:18;17219:6;17175:72;:::i;:::-;16922:332;;;;;:::o;17260:137::-;17314:5;17345:6;17339:13;17330:22;;17361:30;17385:5;17361:30;:::i;:::-;17260:137;;;;:::o;17403:345::-;17470:6;17519:2;17507:9;17498:7;17494:23;17490:32;17487:119;;;17525:79;;:::i;:::-;17487:119;17645:1;17670:61;17723:7;17714:6;17703:9;17699:22;17670:61;:::i;:::-;17660:71;;17616:125;17403:345;;;;:::o;17754:173::-;17894:25;17890:1;17882:6;17878:14;17871:49;17754:173;:::o;17933:366::-;18075:3;18096:67;18160:2;18155:3;18096:67;:::i;:::-;18089:74;;18172:93;18261:3;18172:93;:::i;:::-;18290:2;18285:3;18281:12;18274:19;;17933:366;;;:::o;18305:419::-;18471:4;18509:2;18498:9;18494:18;18486:26;;18558:9;18552:4;18548:20;18544:1;18533:9;18529:17;18522:47;18586:131;18712:4;18586:131;:::i;:::-;18578:139;;18305:419;;;:::o;18730:224::-;18870:34;18866:1;18858:6;18854:14;18847:58;18939:7;18934:2;18926:6;18922:15;18915:32;18730:224;:::o;18960:366::-;19102:3;19123:67;19187:2;19182:3;19123:67;:::i;:::-;19116:74;;19199:93;19288:3;19199:93;:::i;:::-;19317:2;19312:3;19308:12;19301:19;;18960:366;;;:::o;19332:419::-;19498:4;19536:2;19525:9;19521:18;19513:26;;19585:9;19579:4;19575:20;19571:1;19560:9;19556:17;19549:47;19613:131;19739:4;19613:131;:::i;:::-;19605:139;;19332:419;;;:::o;19757:244::-;19897:34;19893:1;19885:6;19881:14;19874:58;19966:27;19961:2;19953:6;19949:15;19942:52;19757:244;:::o;20007:366::-;20149:3;20170:67;20234:2;20229:3;20170:67;:::i;:::-;20163:74;;20246:93;20335:3;20246:93;:::i;:::-;20364:2;20359:3;20355:12;20348:19;;20007:366;;;:::o;20379:419::-;20545:4;20583:2;20572:9;20568:18;20560:26;;20632:9;20626:4;20622:20;20618:1;20607:9;20603:17;20596:47;20660:131;20786:4;20660:131;:::i;:::-;20652:139;;20379:419;;;:::o;20804:224::-;20944:34;20940:1;20932:6;20928:14;20921:58;21013:7;21008:2;21000:6;20996:15;20989:32;20804:224;:::o;21034:366::-;21176:3;21197:67;21261:2;21256:3;21197:67;:::i;:::-;21190:74;;21273:93;21362:3;21273:93;:::i;:::-;21391:2;21386:3;21382:12;21375:19;;21034:366;;;:::o;21406:419::-;21572:4;21610:2;21599:9;21595:18;21587:26;;21659:9;21653:4;21649:20;21645:1;21634:9;21630:17;21623:47;21687:131;21813:4;21687:131;:::i;:::-;21679:139;;21406:419;;;:::o;21831:229::-;21971:34;21967:1;21959:6;21955:14;21948:58;22040:12;22035:2;22027:6;22023:15;22016:37;21831:229;:::o;22066:366::-;22208:3;22229:67;22293:2;22288:3;22229:67;:::i;:::-;22222:74;;22305:93;22394:3;22305:93;:::i;:::-;22423:2;22418:3;22414:12;22407:19;;22066:366;;;:::o;22438:419::-;22604:4;22642:2;22631:9;22627:18;22619:26;;22691:9;22685:4;22681:20;22677:1;22666:9;22662:17;22655:47;22719:131;22845:4;22719:131;:::i;:::-;22711:139;;22438:419;;;:::o;22863:224::-;23003:34;22999:1;22991:6;22987:14;22980:58;23072:7;23067:2;23059:6;23055:15;23048:32;22863:224;:::o;23093:366::-;23235:3;23256:67;23320:2;23315:3;23256:67;:::i;:::-;23249:74;;23332:93;23421:3;23332:93;:::i;:::-;23450:2;23445:3;23441:12;23434:19;;23093:366;;;:::o;23465:419::-;23631:4;23669:2;23658:9;23654:18;23646:26;;23718:9;23712:4;23708:20;23704:1;23693:9;23689:17;23682:47;23746:131;23872:4;23746:131;:::i;:::-;23738:139;;23465:419;;;:::o;23890:240::-;24030:34;24026:1;24018:6;24014:14;24007:58;24099:23;24094:2;24086:6;24082:15;24075:48;23890:240;:::o;24136:366::-;24278:3;24299:67;24363:2;24358:3;24299:67;:::i;:::-;24292:74;;24375:93;24464:3;24375:93;:::i;:::-;24493:2;24488:3;24484:12;24477:19;;24136:366;;;:::o;24508:419::-;24674:4;24712:2;24701:9;24697:18;24689:26;;24761:9;24755:4;24751:20;24747:1;24736:9;24732:17;24725:47;24789:131;24915:4;24789:131;:::i;:::-;24781:139;;24508:419;;;:::o;24933:237::-;25073:34;25069:1;25061:6;25057:14;25050:58;25142:20;25137:2;25129:6;25125:15;25118:45;24933:237;:::o;25176:366::-;25318:3;25339:67;25403:2;25398:3;25339:67;:::i;:::-;25332:74;;25415:93;25504:3;25415:93;:::i;:::-;25533:2;25528:3;25524:12;25517:19;;25176:366;;;:::o;25548:419::-;25714:4;25752:2;25741:9;25737:18;25729:26;;25801:9;25795:4;25791:20;25787:1;25776:9;25772:17;25765:47;25829:131;25955:4;25829:131;:::i;:::-;25821:139;;25548:419;;;:::o;25973:222::-;26113:34;26109:1;26101:6;26097:14;26090:58;26182:5;26177:2;26169:6;26165:15;26158:30;25973:222;:::o;26201:366::-;26343:3;26364:67;26428:2;26423:3;26364:67;:::i;:::-;26357:74;;26440:93;26529:3;26440:93;:::i;:::-;26558:2;26553:3;26549:12;26542:19;;26201:366;;;:::o;26573:419::-;26739:4;26777:2;26766:9;26762:18;26754:26;;26826:9;26820:4;26816:20;26812:1;26801:9;26797:17;26790:47;26854:131;26980:4;26854:131;:::i;:::-;26846:139;;26573:419;;;:::o;26998:225::-;27138:34;27134:1;27126:6;27122:14;27115:58;27207:8;27202:2;27194:6;27190:15;27183:33;26998:225;:::o;27229:366::-;27371:3;27392:67;27456:2;27451:3;27392:67;:::i;:::-;27385:74;;27468:93;27557:3;27468:93;:::i;:::-;27586:2;27581:3;27577:12;27570:19;;27229:366;;;:::o;27601:419::-;27767:4;27805:2;27794:9;27790:18;27782:26;;27854:9;27848:4;27844:20;27840:1;27829:9;27825:17;27818:47;27882:131;28008:4;27882:131;:::i;:::-;27874:139;;27601:419;;;:::o;28026:147::-;28127:11;28164:3;28149:18;;28026:147;;;;:::o;28179:114::-;;:::o;28299:398::-;28458:3;28479:83;28560:1;28555:3;28479:83;:::i;:::-;28472:90;;28571:93;28660:3;28571:93;:::i;:::-;28689:1;28684:3;28680:11;28673:18;;28299:398;;;:::o;28703:379::-;28887:3;28909:147;29052:3;28909:147;:::i;:::-;28902:154;;29073:3;29066:10;;28703:379;;;:::o;29088:223::-;29228:34;29224:1;29216:6;29212:14;29205:58;29297:6;29292:2;29284:6;29280:15;29273:31;29088:223;:::o;29317:366::-;29459:3;29480:67;29544:2;29539:3;29480:67;:::i;:::-;29473:74;;29556:93;29645:3;29556:93;:::i;:::-;29674:2;29669:3;29665:12;29658:19;;29317:366;;;:::o;29689:419::-;29855:4;29893:2;29882:9;29878:18;29870:26;;29942:9;29936:4;29932:20;29928:1;29917:9;29913:17;29906:47;29970:131;30096:4;29970:131;:::i;:::-;29962:139;;29689:419;;;:::o;30114:221::-;30254:34;30250:1;30242:6;30238:14;30231:58;30323:4;30318:2;30310:6;30306:15;30299:29;30114:221;:::o;30341:366::-;30483:3;30504:67;30568:2;30563:3;30504:67;:::i;:::-;30497:74;;30580:93;30669:3;30580:93;:::i;:::-;30698:2;30693:3;30689:12;30682:19;;30341:366;;;:::o;30713:419::-;30879:4;30917:2;30906:9;30902:18;30894:26;;30966:9;30960:4;30956:20;30952:1;30941:9;30937:17;30930:47;30994:131;31120:4;30994:131;:::i;:::-;30986:139;;30713:419;;;:::o;31138:224::-;31278:34;31274:1;31266:6;31262:14;31255:58;31347:7;31342:2;31334:6;31330:15;31323:32;31138:224;:::o;31368:366::-;31510:3;31531:67;31595:2;31590:3;31531:67;:::i;:::-;31524:74;;31607:93;31696:3;31607:93;:::i;:::-;31725:2;31720:3;31716:12;31709:19;;31368:366;;;:::o;31740:419::-;31906:4;31944:2;31933:9;31929:18;31921:26;;31993:9;31987:4;31983:20;31979:1;31968:9;31964:17;31957:47;32021:131;32147:4;32021:131;:::i;:::-;32013:139;;31740:419;;;:::o;32165:222::-;32305:34;32301:1;32293:6;32289:14;32282:58;32374:5;32369:2;32361:6;32357:15;32350:30;32165:222;:::o;32393:366::-;32535:3;32556:67;32620:2;32615:3;32556:67;:::i;:::-;32549:74;;32632:93;32721:3;32632:93;:::i;:::-;32750:2;32745:3;32741:12;32734:19;;32393:366;;;:::o;32765:419::-;32931:4;32969:2;32958:9;32954:18;32946:26;;33018:9;33012:4;33008:20;33004:1;32993:9;32989:17;32982:47;33046:131;33172:4;33046:131;:::i;:::-;33038:139;;32765:419;;;:::o;33190:179::-;33330:31;33326:1;33318:6;33314:14;33307:55;33190:179;:::o;33375:366::-;33517:3;33538:67;33602:2;33597:3;33538:67;:::i;:::-;33531:74;;33614:93;33703:3;33614:93;:::i;:::-;33732:2;33727:3;33723:12;33716:19;;33375:366;;;:::o;33747:419::-;33913:4;33951:2;33940:9;33936:18;33928:26;;34000:9;33994:4;33990:20;33986:1;33975:9;33971:17;33964:47;34028:131;34154:4;34028:131;:::i;:::-;34020:139;;33747:419;;;:::o;34172:172::-;34312:24;34308:1;34300:6;34296:14;34289:48;34172:172;:::o;34350:366::-;34492:3;34513:67;34577:2;34572:3;34513:67;:::i;:::-;34506:74;;34589:93;34678:3;34589:93;:::i;:::-;34707:2;34702:3;34698:12;34691:19;;34350:366;;;:::o;34722:419::-;34888:4;34926:2;34915:9;34911:18;34903:26;;34975:9;34969:4;34965:20;34961:1;34950:9;34946:17;34939:47;35003:131;35129:4;35003:131;:::i;:::-;34995:139;;34722:419;;;:::o;35147:227::-;35287:34;35283:1;35275:6;35271:14;35264:58;35356:10;35351:2;35343:6;35339:15;35332:35;35147:227;:::o;35380:366::-;35522:3;35543:67;35607:2;35602:3;35543:67;:::i;:::-;35536:74;;35619:93;35708:3;35619:93;:::i;:::-;35737:2;35732:3;35728:12;35721:19;;35380:366;;;:::o;35752:419::-;35918:4;35956:2;35945:9;35941:18;35933:26;;36005:9;35999:4;35995:20;35991:1;35980:9;35976:17;35969:47;36033:131;36159:4;36033:131;:::i;:::-;36025:139;;35752:419;;;:::o;36177:174::-;36317:26;36313:1;36305:6;36301:14;36294:50;36177:174;:::o;36357:366::-;36499:3;36520:67;36584:2;36579:3;36520:67;:::i;:::-;36513:74;;36596:93;36685:3;36596:93;:::i;:::-;36714:2;36709:3;36705:12;36698:19;;36357:366;;;:::o;36729:419::-;36895:4;36933:2;36922:9;36918:18;36910:26;;36982:9;36976:4;36972:20;36968:1;36957:9;36953:17;36946:47;37010:131;37136:4;37010:131;:::i;:::-;37002:139;;36729:419;;;:::o;37154:229::-;37294:34;37290:1;37282:6;37278:14;37271:58;37363:12;37358:2;37350:6;37346:15;37339:37;37154:229;:::o;37389:366::-;37531:3;37552:67;37616:2;37611:3;37552:67;:::i;:::-;37545:74;;37628:93;37717:3;37628:93;:::i;:::-;37746:2;37741:3;37737:12;37730:19;;37389:366;;;:::o;37761:419::-;37927:4;37965:2;37954:9;37950:18;37942:26;;38014:9;38008:4;38004:20;38000:1;37989:9;37985:17;37978:47;38042:131;38168:4;38042:131;:::i;:::-;38034:139;;37761:419;;;:::o;38186:194::-;38226:4;38246:20;38264:1;38246:20;:::i;:::-;38241:25;;38280:20;38298:1;38280:20;:::i;:::-;38275:25;;38324:1;38321;38317:9;38309:17;;38348:1;38342:4;38339:11;38336:37;;;38353:18;;:::i;:::-;38336:37;38186:194;;;;:::o;38386:225::-;38526:34;38522:1;38514:6;38510:14;38503:58;38595:8;38590:2;38582:6;38578:15;38571:33;38386:225;:::o;38617:366::-;38759:3;38780:67;38844:2;38839:3;38780:67;:::i;:::-;38773:74;;38856:93;38945:3;38856:93;:::i;:::-;38974:2;38969:3;38965:12;38958:19;;38617:366;;;:::o;38989:419::-;39155:4;39193:2;39182:9;39178:18;39170:26;;39242:9;39236:4;39232:20;39228:1;39217:9;39213:17;39206:47;39270:131;39396:4;39270:131;:::i;:::-;39262:139;;38989:419;;;:::o;39414:320::-;39529:4;39567:2;39556:9;39552:18;39544:26;;39580:71;39648:1;39637:9;39633:17;39624:6;39580:71;:::i;:::-;39661:66;39723:2;39712:9;39708:18;39699:6;39661:66;:::i;:::-;39414:320;;;;;:::o;39740:180::-;39788:77;39785:1;39778:88;39885:4;39882:1;39875:15;39909:4;39906:1;39899:15;39926:180;39974:77;39971:1;39964:88;40071:4;40068:1;40061:15;40095:4;40092:1;40085:15;40112:143;40169:5;40200:6;40194:13;40185:22;;40216:33;40243:5;40216:33;:::i;:::-;40112:143;;;;:::o;40261:351::-;40331:6;40380:2;40368:9;40359:7;40355:23;40351:32;40348:119;;;40386:79;;:::i;:::-;40348:119;40506:1;40531:64;40587:7;40578:6;40567:9;40563:22;40531:64;:::i;:::-;40521:74;;40477:128;40261:351;;;;:::o;40618:85::-;40663:7;40692:5;40681:16;;40618:85;;;:::o;40709:158::-;40767:9;40800:61;40818:42;40827:32;40853:5;40827:32;:::i;:::-;40818:42;:::i;:::-;40800:61;:::i;:::-;40787:74;;40709:158;;;:::o;40873:147::-;40968:45;41007:5;40968:45;:::i;:::-;40963:3;40956:58;40873:147;;:::o;41026:114::-;41093:6;41127:5;41121:12;41111:22;;41026:114;;;:::o;41146:184::-;41245:11;41279:6;41274:3;41267:19;41319:4;41314:3;41310:14;41295:29;;41146:184;;;;:::o;41336:132::-;41403:4;41426:3;41418:11;;41456:4;41451:3;41447:14;41439:22;;41336:132;;;:::o;41474:108::-;41551:24;41569:5;41551:24;:::i;:::-;41546:3;41539:37;41474:108;;:::o;41588:179::-;41657:10;41678:46;41720:3;41712:6;41678:46;:::i;:::-;41756:4;41751:3;41747:14;41733:28;;41588:179;;;;:::o;41773:113::-;41843:4;41875;41870:3;41866:14;41858:22;;41773:113;;;:::o;41922:732::-;42041:3;42070:54;42118:5;42070:54;:::i;:::-;42140:86;42219:6;42214:3;42140:86;:::i;:::-;42133:93;;42250:56;42300:5;42250:56;:::i;:::-;42329:7;42360:1;42345:284;42370:6;42367:1;42364:13;42345:284;;;42446:6;42440:13;42473:63;42532:3;42517:13;42473:63;:::i;:::-;42466:70;;42559:60;42612:6;42559:60;:::i;:::-;42549:70;;42405:224;42392:1;42389;42385:9;42380:14;;42345:284;;;42349:14;42645:3;42638:10;;42046:608;;;41922:732;;;;:::o;42660:831::-;42923:4;42961:3;42950:9;42946:19;42938:27;;42975:71;43043:1;43032:9;43028:17;43019:6;42975:71;:::i;:::-;43056:80;43132:2;43121:9;43117:18;43108:6;43056:80;:::i;:::-;43183:9;43177:4;43173:20;43168:2;43157:9;43153:18;43146:48;43211:108;43314:4;43305:6;43211:108;:::i;:::-;43203:116;;43329:72;43397:2;43386:9;43382:18;43373:6;43329:72;:::i;:::-;43411:73;43479:3;43468:9;43464:19;43455:6;43411:73;:::i;:::-;42660:831;;;;;;;;:::o;43497:807::-;43746:4;43784:3;43773:9;43769:19;43761:27;;43798:71;43866:1;43855:9;43851:17;43842:6;43798:71;:::i;:::-;43879:72;43947:2;43936:9;43932:18;43923:6;43879:72;:::i;:::-;43961:80;44037:2;44026:9;44022:18;44013:6;43961:80;:::i;:::-;44051;44127:2;44116:9;44112:18;44103:6;44051:80;:::i;:::-;44141:73;44209:3;44198:9;44194:19;44185:6;44141:73;:::i;:::-;44224;44292:3;44281:9;44277:19;44268:6;44224:73;:::i;:::-;43497:807;;;;;;;;;:::o;44310:663::-;44398:6;44406;44414;44463:2;44451:9;44442:7;44438:23;44434:32;44431:119;;;44469:79;;:::i;:::-;44431:119;44589:1;44614:64;44670:7;44661:6;44650:9;44646:22;44614:64;:::i;:::-;44604:74;;44560:128;44727:2;44753:64;44809:7;44800:6;44789:9;44785:22;44753:64;:::i;:::-;44743:74;;44698:129;44866:2;44892:64;44948:7;44939:6;44928:9;44924:22;44892:64;:::i;:::-;44882:74;;44837:129;44310:663;;;;;:::o

Swarm Source

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