ETH Price: $2,446.53 (-1.14%)
Gas: 5.41 Gwei
 

Overview

Max Total Supply

100,000,000 SHITBA

Holders

35

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,399,999.300000000023858767 SHITBA

Value
$0.00
0x1185f7638129De06B028B9F441e969Bd16E7D297
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:
SHITBA

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*
 💩💩💩 💩💩💩 💩💩💩 💩💩💩 💩💩💩 💩💩💩 💩💩💩 💩💩💩 💩💩💩 💩💩💩 💩💩💩 💩💩💩 💩💩💩 💩💩💩 💩💩💩
$SHITBA

Website : https://shitba.co/
Telegram : https://t.me/ShitbaPortal
Twitter : https://twitter.com/Shitba_Eth

 💩💩💩 💩💩💩 💩💩💩 💩💩💩 💩💩💩 💩💩💩 💩💩💩 💩💩💩 💩💩💩 💩💩💩 💩💩💩 💩💩💩 💩💩💩 💩💩💩 💩💩💩
 */

// SPDX-License-Identifier: MIT

pragma solidity 0.8.15;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        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 _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), 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 swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

}

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

contract SHITBA is ERC20, Ownable {

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

    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address taxAddress;

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

     // Anti-sandwithc-bot mappings and variables
    mapping(address => uint256) private _holderLastBuyBlock; // to hold last Buy temporarily
    bool public transferDelayEnabled = true;

    uint256 public buyFee;
    uint256 public sellFee;


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

    // 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 RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedBuyFee(uint256 buyFee);

    event UpdatedSellFee(uint256 sellFee);

    event MaxTransactionExclusion(address _address, bool excluded);

    event BuyBackTriggered(uint256 amount);

    event OwnerForcedSwapBack(uint256 timestamp);

    event CaughtEarlyBuyer(address sniper);

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

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("SHITBA","SHITBA") {

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

        IDexRouter _dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        dexRouter = _dexRouter;

        // create pair
        lpPair = IDexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        _excludeFromMaxTransaction(address(lpPair), true);
        _excludeFromMaxTransaction(address(dexRouter), true);
        _setAutomatedMarketMakerPair(address(lpPair), true);

        uint256 totalSupply = 1 * 1e8 * 1e18;

        maxBuyAmount = totalSupply * 2 / 100;
        maxSellAmount = totalSupply * 2 / 100;
        maxWalletAmount = totalSupply * 2 / 100;
        swapTokensAtAmount = totalSupply * 1 / 100;

        buyFee = 30;
        sellFee = 40;

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

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


        taxAddress = address(newOwner);

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

    receive() external payable {}

    // only enable if no plan to airdrop

    function enableTrading() external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        emit EnabledTrading();
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        emit RemovedLimits();
    }

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

    function _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

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

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

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

        _setAutomatedMarketMakerPair(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(uint256 _buyFee) external onlyOwner {
        require(_buyFee <= 70, "Must keep fees at 50% or less");
        buyFee = _buyFee;
        emit UpdatedBuyFee(buyFee);
    }

    function updateSellFees(uint256 _sellFee) external onlyOwner {
        require(_sellFee <= 70, "Must keep fees at 50% or less");
        sellFee = _sellFee;
        emit UpdatedSellFee(sellFee);
    }

    function returnToNormalTax() external onlyOwner {
        sellFee = 0;
        buyFee = 0;
    }

    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(!tradingActive){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
        }

        // anti sandwich bot
        if (automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && to != address(this) && to != address(dexRouter)){
            _holderLastBuyBlock[to] = block.number;
        }
        require(_holderLastBuyBlock[from] < block.number, "_transfer:: Anti sandwich bot enabled. Please try again later.");

        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]){
    
                //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]) {
                        if(amount > maxSellAmount){
                            amount = maxSellAmount;
                        }
                }
                else if (!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max tokens per wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if(canSwap && tradingActive && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        // only take fees on buys/sells, do not take on wallet transfers
        if(!_isExcludedFromFees[from] && !_isExcludedFromFees[to]){
            uint256 fees = 0;
            // on sell
            if (automatedMarketMakerPairs[to] && sellFee > 0){
                fees = amount * sellFee / 100;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyFee > 0) {
        	    fees = amount * buyFee / 100;
            }
            if(fees > 0){
                super._transfer(from, address(this), fees);
            }
        	amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        if(contractBalance == 0) {return;}

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

        bool success;

        swapTokensForEth(contractBalance);

        uint256 ethBalance = address(this).balance;
        
        if(ethBalance > 0){
            (success,) = address(taxAddress).call{value: ethBalance}("");
        }
        
    }

    function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        require(_token != address(this), "Can't withdraw native tokens");
        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 setTaxAddress(address _taxAddress) external onlyOwner {
    //     require(_taxAddress != address(0), "_taxAddress address cannot be 0");
    //     taxAddress = payable(_taxAddress);
    // }

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

    // useful for buybacks or to reclaim any ETH on the contract in a way that helps holders.
    function buyBackTokens(uint256 amountInWei) external onlyOwner {
        require(amountInWei <= 10 ether, "May not buy more than 10 ETH in a single buy to reduce sandwich attacks");

        address[] memory path = new address[](2);
        path[0] = dexRouter.WETH();
        path[1] = address(this);

        // make the swap
        dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amountInWei}(
            0, // accept any amount of Ethereum
            path,
            address(0xdead),
            block.timestamp
        );
        emit BuyBackTriggered(amountInWei);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"}],"name":"CaughtEarlyBuyer","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":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyFee","type":"uint256"}],"name":"UpdatedBuyFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"UpdatedSellFee","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInTokens","type":"uint256[]"}],"name":"airdropToWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountInWei","type":"uint256"}],"name":"buyBackTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"returnToNormalTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"_buyFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellFee","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"}]

60806040526001600c60146101000a81548160ff0219169083151502179055506000600c60156101000a81548160ff0219169083151502179055506001600e60006101000a81548160ff0219169083151502179055503480156200006257600080fd5b506040518060400160405280600681526020017f53484954424100000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f53484954424100000000000000000000000000000000000000000000000000008152508160039081620000e0919062000e14565b508060049081620000f2919062000e14565b505050600062000107620005d860201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000251573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000277919062000f65565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000305919062000f65565b6040518363ffffffff1660e01b81526004016200032492919062000fa8565b6020604051808303816000875af115801562000344573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036a919062000f65565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003df600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620005e060201b60201c565b62000414600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620005e060201b60201c565b62000449600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200067660201b60201c565b60006a52b7d2dcc80cd2e4000000905060646002826200046a919062001004565b62000476919062001094565b60068190555060646002826200048d919062001004565b62000499919062001094565b6007819055506064600282620004b0919062001004565b620004bc919062001094565b6008819055506064600182620004d3919062001004565b620004df919062001094565b600b81905550601e600f81905550602860108190555062000508836001620005e060201b60201c565b6200051b306001620005e060201b60201c565b6200053061dead6001620005e060201b60201c565b620005438360016200072960201b60201c565b620005563060016200072960201b60201c565b6200056b61dead60016200072960201b60201c565b82600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005be83826200087660201b60201c565b620005cf83620009c660201b60201c565b5050506200134b565b600033905090565b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674682826040516200066a929190620010e9565b60405180910390a15050565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006df8282620005e060201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b62000739620005d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620007cb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007c29062001177565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200086a919062001199565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008df9062001206565b60405180910390fd5b8060026000828254620008fc919062001228565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000953919062001228565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009ba919062001296565b60405180910390a35050565b620009d6620005d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a5f9062001177565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000ada576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ad19062001329565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c1c57607f821691505b60208210810362000c325762000c3162000bd4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c9c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c5d565b62000ca8868362000c5d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000cf562000cef62000ce98462000cc0565b62000cca565b62000cc0565b9050919050565b6000819050919050565b62000d118362000cd4565b62000d2962000d208262000cfc565b84845462000c6a565b825550505050565b600090565b62000d4062000d31565b62000d4d81848462000d06565b505050565b5b8181101562000d755762000d6960008262000d36565b60018101905062000d53565b5050565b601f82111562000dc45762000d8e8162000c38565b62000d998462000c4d565b8101602085101562000da9578190505b62000dc162000db88562000c4d565b83018262000d52565b50505b505050565b600082821c905092915050565b600062000de96000198460080262000dc9565b1980831691505092915050565b600062000e04838362000dd6565b9150826002028217905092915050565b62000e1f8262000b9a565b67ffffffffffffffff81111562000e3b5762000e3a62000ba5565b5b62000e47825462000c03565b62000e5482828562000d79565b600060209050601f83116001811462000e8c576000841562000e77578287015190505b62000e83858262000df6565b86555062000ef3565b601f19841662000e9c8662000c38565b60005b8281101562000ec65784890151825560018201915060208501945060208101905062000e9f565b8683101562000ee6578489015162000ee2601f89168262000dd6565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f2d8262000f00565b9050919050565b62000f3f8162000f20565b811462000f4b57600080fd5b50565b60008151905062000f5f8162000f34565b92915050565b60006020828403121562000f7e5762000f7d62000efb565b5b600062000f8e8482850162000f4e565b91505092915050565b62000fa28162000f20565b82525050565b600060408201905062000fbf600083018562000f97565b62000fce602083018462000f97565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620010118262000cc0565b91506200101e8362000cc0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200105a576200105962000fd5565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010a18262000cc0565b9150620010ae8362000cc0565b925082620010c157620010c062001065565b5b828204905092915050565b60008115159050919050565b620010e381620010cc565b82525050565b600060408201905062001100600083018562000f97565b6200110f6020830184620010d8565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200115f60208362001116565b91506200116c8262001127565b602082019050919050565b60006020820190508181036000830152620011928162001150565b9050919050565b6000602082019050620011b06000830184620010d8565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620011ee601f8362001116565b9150620011fb82620011b6565b602082019050919050565b600060208201905081810360008301526200122181620011df565b9050919050565b6000620012358262000cc0565b9150620012428362000cc0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200127a576200127962000fd5565b5b828201905092915050565b620012908162000cc0565b82525050565b6000602082019050620012ad600083018462001285565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006200131160268362001116565b91506200131e82620012b3565b604082019050919050565b60006020820190508181036000830152620013448162001302565b9050919050565b6155dd806200135b6000396000f3fe60806040526004361061024a5760003560e01c80638366e79a11610139578063bbc0c742116100b6578063e2cd5fcd1161007a578063e2cd5fcd1461088f578063e2f45605146108a6578063eba4c333146108d1578063f2fde38b146108fa578063f5648a4f14610923578063fc155d1d1461093a57610251565b8063bbc0c742146107aa578063c0246668146107d5578063c876d0b9146107fe578063d257b34f14610829578063dd62ed3e1461085257610251565b80639a7a23d6116100fd5780639a7a23d61461069f578063a457c2d7146106c8578063a9059cbb14610705578063aa4bde2814610742578063b62496f51461076d57610251565b80638366e79a146105ca57806388e765ff146106075780638a8c523c146106325780638da5cb5b1461064957806395d89b411461067457610251565b8063452ed4f1116101c757806370a082311161018b57806370a082311461050d578063715018a61461054a57806371fc468814610561578063751039fc1461058a5780637571336a146105a157610251565b8063452ed4f11461044a57806347062402146104755780634a62bb65146104a057806351f205e4146104cb57806366d602ae146104e257610251565b80632307b4411161020e5780632307b4411461035157806323b872dd1461037a5780632b14ca56146103b7578063313ce567146103e2578063395093511461040d57610251565b806306fdde03146102565780630758d92414610281578063095ea7b3146102ac57806310d5de53146102e957806318160ddd1461032657610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b610963565b6040516102789190613c09565b60405180910390f35b34801561028d57600080fd5b506102966109f5565b6040516102a39190613caa565b60405180910390f35b3480156102b857600080fd5b506102d360048036038101906102ce9190613d4d565b610a1b565b6040516102e09190613da8565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b9190613dc3565b610a39565b60405161031d9190613da8565b60405180910390f35b34801561033257600080fd5b5061033b610a59565b6040516103489190613dff565b60405180910390f35b34801561035d57600080fd5b5061037860048036038101906103739190614025565b610a63565b005b34801561038657600080fd5b506103a1600480360381019061039c919061409d565b610bf2565b6040516103ae9190613da8565b60405180910390f35b3480156103c357600080fd5b506103cc610cea565b6040516103d99190613dff565b60405180910390f35b3480156103ee57600080fd5b506103f7610cf0565b604051610404919061410c565b60405180910390f35b34801561041957600080fd5b50610434600480360381019061042f9190613d4d565b610cf9565b6040516104419190613da8565b60405180910390f35b34801561045657600080fd5b5061045f610da5565b60405161046c9190614136565b60405180910390f35b34801561048157600080fd5b5061048a610dcb565b6040516104979190613dff565b60405180910390f35b3480156104ac57600080fd5b506104b5610dd1565b6040516104c29190613da8565b60405180910390f35b3480156104d757600080fd5b506104e0610de4565b005b3480156104ee57600080fd5b506104f7610f3f565b6040516105049190613dff565b60405180910390f35b34801561051957600080fd5b50610534600480360381019061052f9190613dc3565b610f45565b6040516105419190613dff565b60405180910390f35b34801561055657600080fd5b5061055f610f8d565b005b34801561056d57600080fd5b5061058860048036038101906105839190614151565b6110e5565b005b34801561059657600080fd5b5061059f611203565b005b3480156105ad57600080fd5b506105c860048036038101906105c391906141aa565b6112e3565b005b3480156105d657600080fd5b506105f160048036038101906105ec91906141ea565b61146b565b6040516105fe9190613da8565b60405180910390f35b34801561061357600080fd5b5061061c61171f565b6040516106299190613dff565b60405180910390f35b34801561063e57600080fd5b50610647611725565b005b34801561065557600080fd5b5061065e611855565b60405161066b9190614136565b60405180910390f35b34801561068057600080fd5b5061068961187f565b6040516106969190613c09565b60405180910390f35b3480156106ab57600080fd5b506106c660048036038101906106c191906141aa565b611911565b005b3480156106d457600080fd5b506106ef60048036038101906106ea9190613d4d565b611a8c565b6040516106fc9190613da8565b60405180910390f35b34801561071157600080fd5b5061072c60048036038101906107279190613d4d565b611b77565b6040516107399190613da8565b60405180910390f35b34801561074e57600080fd5b50610757611b95565b6040516107649190613dff565b60405180910390f35b34801561077957600080fd5b50610794600480360381019061078f9190613dc3565b611b9b565b6040516107a19190613da8565b60405180910390f35b3480156107b657600080fd5b506107bf611bbb565b6040516107cc9190613da8565b60405180910390f35b3480156107e157600080fd5b506107fc60048036038101906107f791906141aa565b611bce565b005b34801561080a57600080fd5b50610813611d0e565b6040516108209190613da8565b60405180910390f35b34801561083557600080fd5b50610850600480360381019061084b9190614151565b611d21565b005b34801561085e57600080fd5b50610879600480360381019061087491906141ea565b611e87565b6040516108869190613dff565b60405180910390f35b34801561089b57600080fd5b506108a4611f0e565b005b3480156108b257600080fd5b506108bb611fb7565b6040516108c89190613dff565b60405180910390f35b3480156108dd57600080fd5b506108f860048036038101906108f39190614151565b611fbd565b005b34801561090657600080fd5b50610921600480360381019061091c9190613dc3565b6120db565b005b34801561092f57600080fd5b506109386122a1565b005b34801561094657600080fd5b50610961600480360381019061095c9190614151565b6123a9565b005b60606003805461097290614259565b80601f016020809104026020016040519081016040528092919081815260200182805461099e90614259565b80156109eb5780601f106109c0576101008083540402835291602001916109eb565b820191906000526020600020905b8154815290600101906020018083116109ce57829003601f168201915b5050505050905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610a2f610a286126d9565b84846126e1565b6001905092915050565b60126020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b610a6b6126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af1906142d6565b60405180910390fd5b8051825114610b3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3590614342565b60405180910390fd5b610258825110610b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7a906143d4565b60405180910390fd5b60005b8251811015610bed576000838281518110610ba457610ba36143f4565b5b602002602001015190506000838381518110610bc357610bc26143f4565b5b60200260200101519050610bd83383836128aa565b50508080610be590614452565b915050610b86565b505050565b6000610bff848484612b13565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c4a6126d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc19061450c565b60405180910390fd5b610cde85610cd66126d9565b8584036126e1565b60019150509392505050565b60105481565b60006012905090565b6000610d9b610d066126d9565b848460016000610d146126d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d96919061452c565b6126e1565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b600c60149054906101000a900460ff1681565b610dec6126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e72906142d6565b60405180910390fd5b600b54610e8730610f45565b1015610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf906145f4565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550610eeb6136fd565b6000600a60146101000a81548160ff0219169083151502179055507f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb3242604051610f359190613dff565b60405180910390a1565b60075481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f956126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b906142d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6110ed6126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461117c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611173906142d6565b60405180910390fd5b60468111156111c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b790614660565b60405180910390fd5b80600f819055507f03cd3090e7c409e4a7ffd2d90ff610979f4a94a87a512188b7b615671bfb772f600f546040516111f89190613dff565b60405180910390a150565b61120b6126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461129a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611291906142d6565b60405180910390fd5b6000600c60146101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b6112eb6126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461137a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611371906142d6565b60405180910390fd5b8061141057600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361140f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611406906146f2565b60405180910390fd5b5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006114756126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fb906142d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156a9061475e565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d8906147ca565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161161c9190614136565b602060405180830381865afa158015611639573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165d91906147ff565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b815260040161169a92919061482c565b6020604051808303816000875af11580156116b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116dd919061486a565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438848260405161171092919061482c565b60405180910390a15092915050565b60065481565b61172d6126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b3906142d6565b60405180910390fd5b600c60159054906101000a900460ff161561180c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611803906148e3565b60405180910390fd5b6001600c60156101000a81548160ff0219169083151502179055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461188e90614259565b80601f01602080910402602001604051908101604052809291908181526020018280546118ba90614259565b80156119075780601f106118dc57610100808354040283529160200191611907565b820191906000526020600020905b8154815290600101906020018083116118ea57829003601f168201915b5050505050905090565b6119196126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199f906142d6565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2f90614975565b60405180910390fd5b611a4282826137ee565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008060016000611a9b6126d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4f90614a07565b60405180910390fd5b611b6c611b636126d9565b858584036126e1565b600191505092915050565b6000611b8b611b846126d9565b8484612b13565b6001905092915050565b60085481565b60136020528060005260406000206000915054906101000a900460ff1681565b600c60159054906101000a900460ff1681565b611bd66126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5c906142d6565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d029190613da8565b60405180910390a25050565b600e60009054906101000a900460ff1681565b611d296126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daf906142d6565b60405180910390fd5b6103e86001611dc5610a59565b611dcf9190614a27565b611dd99190614ab0565b811015611e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1290614b53565b60405180910390fd5b60146001611e27610a59565b611e319190614a27565b611e3b9190614ab0565b811115611e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7490614be5565b60405180910390fd5b80600b8190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f166126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9c906142d6565b60405180910390fd5b60006010819055506000600f81905550565b600b5481565b611fc56126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204b906142d6565b60405180910390fd5b6046811115612098576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208f90614660565b60405180910390fd5b806010819055507f274faecd49018fb411281f27986b6b4acc86e5db4100735531acd18b7b6d5f936010546040516120d09190613dff565b60405180910390a150565b6120e36126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612172576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612169906142d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d890614c77565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6122a96126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612338576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232f906142d6565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161235e90614cc8565b60006040518083038185875af1925050503d806000811461239b576040519150601f19603f3d011682016040523d82523d6000602084013e6123a0565b606091505b50508091505050565b6123b16126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612440576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612437906142d6565b60405180910390fd5b678ac7230489e8000081111561248b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248290614d75565b60405180910390fd5b6000600267ffffffffffffffff8111156124a8576124a7613e1f565b5b6040519080825280602002602001820160405280156124d65781602001602082028036833780820191505090505b509050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612546573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256a9190614daa565b8160008151811061257e5761257d6143f4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505030816001815181106125cd576125cc6143f4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008461dead426040518663ffffffff1660e01b815260040161266c9493929190614ed0565b6000604051808303818588803b15801561268557600080fd5b505af1158015612699573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d684820568826040516126cd9190613dff565b60405180910390a15050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274790614f8e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b690615020565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161289d9190613dff565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612919576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612910906150b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297f90615144565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a05906151d6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612aa1919061452c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b059190613dff565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b79906150b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be890615144565b60405180910390fd5b60008111612c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2b90615242565b60405180910390fd5b600c60159054906101000a900460ff16612d2957601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ce95750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1f906152ae565b60405180910390fd5b5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612dcc5750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e0457503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e5e5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612ea85743600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b43600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f2090615340565b60405180910390fd5b600c60149054906101000a900460ff161561338d57612f46611855565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612fb45750612f84611855565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612fed5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613027575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561307d5750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130d35750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561338c57601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561317b5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613222576006548111156131c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131bc906153d2565b60405180910390fd5b6008546131d183610f45565b826131dc919061452c565b111561321d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132149061543e565b60405180910390fd5b61338b565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132c55750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132df576007548111156132da5760075490505b61338a565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166133895760085461333c83610f45565b82613347919061452c565b1115613388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337f906154d0565b60405180910390fd5b5b5b5b5b5b600061339830610f45565b90506000600b5482101590508080156133bd5750600c60159054906101000a900460ff165b80156133d65750600a60149054906101000a900460ff16155b801561342c5750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134825750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134d85750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561351c576001600a60146101000a81548160ff0219169083151502179055506135006136fd565b6000600a60146101000a81548160ff0219169083151502179055505b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135c05750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136eb576000601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561362257506000601054115b15613648576064601054856136379190614a27565b6136419190614ab0565b90506136c6565b601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136a357506000600f54115b156136c5576064600f54856136b89190614a27565b6136c29190614ab0565b90505b5b60008111156136db576136da8630836128aa565b5b80846136e791906154f0565b9350505b6136f68585856128aa565b5050505050565b600061370830610f45565b90506000810361371857506137ec565b6006600b546137279190614a27565b811115613740576006600b5461373d9190614a27565b90505b600061374b82613899565b600047905060008111156137e857600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161379f90614cc8565b60006040518083038185875af1925050503d80600081146137dc576040519150601f19603f3d011682016040523d82523d6000602084013e6137e1565b606091505b5050809250505b5050505b565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061384f8282613adc565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600267ffffffffffffffff8111156138b6576138b5613e1f565b5b6040519080825280602002602001820160405280156138e45781602001602082028036833780820191505090505b50905030816000815181106138fc576138fb6143f4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c79190614daa565b816001815181106139db576139da6143f4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613a4230600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846126e1565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613aa6959493929190615524565b600060405180830381600087803b158015613ac057600080fd5b505af1158015613ad4573d6000803e3d6000fd5b505050505050565b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613b6492919061557e565b60405180910390a15050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613baa578082015181840152602081019050613b8f565b83811115613bb9576000848401525b50505050565b6000601f19601f8301169050919050565b6000613bdb82613b70565b613be58185613b7b565b9350613bf5818560208601613b8c565b613bfe81613bbf565b840191505092915050565b60006020820190508181036000830152613c238184613bd0565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613c70613c6b613c6684613c2b565b613c4b565b613c2b565b9050919050565b6000613c8282613c55565b9050919050565b6000613c9482613c77565b9050919050565b613ca481613c89565b82525050565b6000602082019050613cbf6000830184613c9b565b92915050565b6000604051905090565b600080fd5b600080fd5b6000613ce482613c2b565b9050919050565b613cf481613cd9565b8114613cff57600080fd5b50565b600081359050613d1181613ceb565b92915050565b6000819050919050565b613d2a81613d17565b8114613d3557600080fd5b50565b600081359050613d4781613d21565b92915050565b60008060408385031215613d6457613d63613ccf565b5b6000613d7285828601613d02565b9250506020613d8385828601613d38565b9150509250929050565b60008115159050919050565b613da281613d8d565b82525050565b6000602082019050613dbd6000830184613d99565b92915050565b600060208284031215613dd957613dd8613ccf565b5b6000613de784828501613d02565b91505092915050565b613df981613d17565b82525050565b6000602082019050613e146000830184613df0565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613e5782613bbf565b810181811067ffffffffffffffff82111715613e7657613e75613e1f565b5b80604052505050565b6000613e89613cc5565b9050613e958282613e4e565b919050565b600067ffffffffffffffff821115613eb557613eb4613e1f565b5b602082029050602081019050919050565b600080fd5b6000613ede613ed984613e9a565b613e7f565b90508083825260208201905060208402830185811115613f0157613f00613ec6565b5b835b81811015613f2a5780613f168882613d02565b845260208401935050602081019050613f03565b5050509392505050565b600082601f830112613f4957613f48613e1a565b5b8135613f59848260208601613ecb565b91505092915050565b600067ffffffffffffffff821115613f7d57613f7c613e1f565b5b602082029050602081019050919050565b6000613fa1613f9c84613f62565b613e7f565b90508083825260208201905060208402830185811115613fc457613fc3613ec6565b5b835b81811015613fed5780613fd98882613d38565b845260208401935050602081019050613fc6565b5050509392505050565b600082601f83011261400c5761400b613e1a565b5b813561401c848260208601613f8e565b91505092915050565b6000806040838503121561403c5761403b613ccf565b5b600083013567ffffffffffffffff81111561405a57614059613cd4565b5b61406685828601613f34565b925050602083013567ffffffffffffffff81111561408757614086613cd4565b5b61409385828601613ff7565b9150509250929050565b6000806000606084860312156140b6576140b5613ccf565b5b60006140c486828701613d02565b93505060206140d586828701613d02565b92505060406140e686828701613d38565b9150509250925092565b600060ff82169050919050565b614106816140f0565b82525050565b600060208201905061412160008301846140fd565b92915050565b61413081613cd9565b82525050565b600060208201905061414b6000830184614127565b92915050565b60006020828403121561416757614166613ccf565b5b600061417584828501613d38565b91505092915050565b61418781613d8d565b811461419257600080fd5b50565b6000813590506141a48161417e565b92915050565b600080604083850312156141c1576141c0613ccf565b5b60006141cf85828601613d02565b92505060206141e085828601614195565b9150509250929050565b6000806040838503121561420157614200613ccf565b5b600061420f85828601613d02565b925050602061422085828601613d02565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061427157607f821691505b6020821081036142845761428361422a565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006142c0602083613b7b565b91506142cb8261428a565b602082019050919050565b600060208201905081810360008301526142ef816142b3565b9050919050565b7f617272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b600061432c601e83613b7b565b9150614337826142f6565b602082019050919050565b6000602082019050818103600083015261435b8161431f565b9050919050565b7f43616e206f6e6c792061697264726f70203630302077616c6c6574732070657260008201527f2074786e2064756520746f20676173206c696d69747300000000000000000000602082015250565b60006143be603683613b7b565b91506143c982614362565b604082019050919050565b600060208201905081810360008301526143ed816143b1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061445d82613d17565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361448f5761448e614423565b5b600182019050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006144f6602883613b7b565b91506145018261449a565b604082019050919050565b60006020820190508181036000830152614525816144e9565b9050919050565b600061453782613d17565b915061454283613d17565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561457757614576614423565b5b828201905092915050565b7f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060008201527f6973206174206f7220686967686572207468616e207265737472696374696f6e602082015250565b60006145de604083613b7b565b91506145e982614582565b604082019050919050565b6000602082019050818103600083015261460d816145d1565b9050919050565b7f4d757374206b656570206665657320617420353025206f72206c657373000000600082015250565b600061464a601d83613b7b565b915061465582614614565b602082019050919050565b600060208201905081810360008301526146798161463d565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b60006146dc602783613b7b565b91506146e782614680565b604082019050919050565b6000602082019050818103600083015261470b816146cf565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614748601a83613b7b565b915061475382614712565b602082019050919050565b600060208201905081810360008301526147778161473b565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b60006147b4601c83613b7b565b91506147bf8261477e565b602082019050919050565b600060208201905081810360008301526147e3816147a7565b9050919050565b6000815190506147f981613d21565b92915050565b60006020828403121561481557614814613ccf565b5b6000614823848285016147ea565b91505092915050565b60006040820190506148416000830185614127565b61484e6020830184613df0565b9392505050565b6000815190506148648161417e565b92915050565b6000602082840312156148805761487f613ccf565b5b600061488e84828501614855565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b60006148cd601783613b7b565b91506148d882614897565b602082019050919050565b600060208201905081810360008301526148fc816148c0565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061495f603983613b7b565b915061496a82614903565b604082019050919050565b6000602082019050818103600083015261498e81614952565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006149f1602583613b7b565b91506149fc82614995565b604082019050919050565b60006020820190508181036000830152614a20816149e4565b9050919050565b6000614a3282613d17565b9150614a3d83613d17565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614a7657614a75614423565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614abb82613d17565b9150614ac683613d17565b925082614ad657614ad5614a81565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e312520746f74616c20737570706c792e00000000000000000000000000602082015250565b6000614b3d603383613b7b565b9150614b4882614ae1565b604082019050919050565b60006020820190508181036000830152614b6c81614b30565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20352520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000614bcf603283613b7b565b9150614bda82614b73565b604082019050919050565b60006020820190508181036000830152614bfe81614bc2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614c61602683613b7b565b9150614c6c82614c05565b604082019050919050565b60006020820190508181036000830152614c9081614c54565b9050919050565b600081905092915050565b50565b6000614cb2600083614c97565b9150614cbd82614ca2565b600082019050919050565b6000614cd382614ca5565b9150819050919050565b7f4d6179206e6f7420627579206d6f7265207468616e2031302045544820696e2060008201527f612073696e676c652062757920746f207265647563652073616e64776963682060208201527f61747461636b7300000000000000000000000000000000000000000000000000604082015250565b6000614d5f604783613b7b565b9150614d6a82614cdd565b606082019050919050565b60006020820190508181036000830152614d8e81614d52565b9050919050565b600081519050614da481613ceb565b92915050565b600060208284031215614dc057614dbf613ccf565b5b6000614dce84828501614d95565b91505092915050565b6000819050919050565b6000614dfc614df7614df284614dd7565b613c4b565b613d17565b9050919050565b614e0c81614de1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614e4781613cd9565b82525050565b6000614e598383614e3e565b60208301905092915050565b6000602082019050919050565b6000614e7d82614e12565b614e878185614e1d565b9350614e9283614e2e565b8060005b83811015614ec3578151614eaa8882614e4d565b9750614eb583614e65565b925050600181019050614e96565b5085935050505092915050565b6000608082019050614ee56000830187614e03565b8181036020830152614ef78186614e72565b9050614f066040830185614127565b614f136060830184613df0565b95945050505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614f78602483613b7b565b9150614f8382614f1c565b604082019050919050565b60006020820190508181036000830152614fa781614f6b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061500a602283613b7b565b915061501582614fae565b604082019050919050565b6000602082019050818103600083015261503981614ffd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061509c602583613b7b565b91506150a782615040565b604082019050919050565b600060208201905081810360008301526150cb8161508f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061512e602383613b7b565b9150615139826150d2565b604082019050919050565b6000602082019050818103600083015261515d81615121565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006151c0602683613b7b565b91506151cb82615164565b604082019050919050565b600060208201905081810360008301526151ef816151b3565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b600061522c601d83613b7b565b9150615237826151f6565b602082019050919050565b6000602082019050818103600083015261525b8161521f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000615298601683613b7b565b91506152a382615262565b602082019050919050565b600060208201905081810360008301526152c78161528b565b9050919050565b7f5f7472616e736665723a3a20416e74692073616e647769636820626f7420656e60008201527f61626c65642e20506c656173652074727920616761696e206c617465722e0000602082015250565b600061532a603e83613b7b565b9150615335826152ce565b604082019050919050565b600060208201905081810360008301526153598161531d565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b60006153bc602883613b7b565b91506153c782615360565b604082019050919050565b600060208201905081810360008301526153eb816153af565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b6000615428601883613b7b565b9150615433826153f2565b602082019050919050565b600060208201905081810360008301526154578161541b565b9050919050565b7f43616e6e6f7420457863656564206d617820746f6b656e73207065722077616c60008201527f6c65740000000000000000000000000000000000000000000000000000000000602082015250565b60006154ba602383613b7b565b91506154c58261545e565b604082019050919050565b600060208201905081810360008301526154e9816154ad565b9050919050565b60006154fb82613d17565b915061550683613d17565b92508282101561551957615518614423565b5b828203905092915050565b600060a0820190506155396000830188613df0565b6155466020830187614e03565b81810360408301526155588186614e72565b90506155676060830185614127565b6155746080830184613df0565b9695505050505050565b60006040820190506155936000830185614127565b6155a06020830184613d99565b939250505056fea26469706673582212209ac4e09ec9ab290b57b24c719c29cad8710e8e05caf5b51e583a3b7a4382776164736f6c634300080f0033

Deployed Bytecode

0x60806040526004361061024a5760003560e01c80638366e79a11610139578063bbc0c742116100b6578063e2cd5fcd1161007a578063e2cd5fcd1461088f578063e2f45605146108a6578063eba4c333146108d1578063f2fde38b146108fa578063f5648a4f14610923578063fc155d1d1461093a57610251565b8063bbc0c742146107aa578063c0246668146107d5578063c876d0b9146107fe578063d257b34f14610829578063dd62ed3e1461085257610251565b80639a7a23d6116100fd5780639a7a23d61461069f578063a457c2d7146106c8578063a9059cbb14610705578063aa4bde2814610742578063b62496f51461076d57610251565b80638366e79a146105ca57806388e765ff146106075780638a8c523c146106325780638da5cb5b1461064957806395d89b411461067457610251565b8063452ed4f1116101c757806370a082311161018b57806370a082311461050d578063715018a61461054a57806371fc468814610561578063751039fc1461058a5780637571336a146105a157610251565b8063452ed4f11461044a57806347062402146104755780634a62bb65146104a057806351f205e4146104cb57806366d602ae146104e257610251565b80632307b4411161020e5780632307b4411461035157806323b872dd1461037a5780632b14ca56146103b7578063313ce567146103e2578063395093511461040d57610251565b806306fdde03146102565780630758d92414610281578063095ea7b3146102ac57806310d5de53146102e957806318160ddd1461032657610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b610963565b6040516102789190613c09565b60405180910390f35b34801561028d57600080fd5b506102966109f5565b6040516102a39190613caa565b60405180910390f35b3480156102b857600080fd5b506102d360048036038101906102ce9190613d4d565b610a1b565b6040516102e09190613da8565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b9190613dc3565b610a39565b60405161031d9190613da8565b60405180910390f35b34801561033257600080fd5b5061033b610a59565b6040516103489190613dff565b60405180910390f35b34801561035d57600080fd5b5061037860048036038101906103739190614025565b610a63565b005b34801561038657600080fd5b506103a1600480360381019061039c919061409d565b610bf2565b6040516103ae9190613da8565b60405180910390f35b3480156103c357600080fd5b506103cc610cea565b6040516103d99190613dff565b60405180910390f35b3480156103ee57600080fd5b506103f7610cf0565b604051610404919061410c565b60405180910390f35b34801561041957600080fd5b50610434600480360381019061042f9190613d4d565b610cf9565b6040516104419190613da8565b60405180910390f35b34801561045657600080fd5b5061045f610da5565b60405161046c9190614136565b60405180910390f35b34801561048157600080fd5b5061048a610dcb565b6040516104979190613dff565b60405180910390f35b3480156104ac57600080fd5b506104b5610dd1565b6040516104c29190613da8565b60405180910390f35b3480156104d757600080fd5b506104e0610de4565b005b3480156104ee57600080fd5b506104f7610f3f565b6040516105049190613dff565b60405180910390f35b34801561051957600080fd5b50610534600480360381019061052f9190613dc3565b610f45565b6040516105419190613dff565b60405180910390f35b34801561055657600080fd5b5061055f610f8d565b005b34801561056d57600080fd5b5061058860048036038101906105839190614151565b6110e5565b005b34801561059657600080fd5b5061059f611203565b005b3480156105ad57600080fd5b506105c860048036038101906105c391906141aa565b6112e3565b005b3480156105d657600080fd5b506105f160048036038101906105ec91906141ea565b61146b565b6040516105fe9190613da8565b60405180910390f35b34801561061357600080fd5b5061061c61171f565b6040516106299190613dff565b60405180910390f35b34801561063e57600080fd5b50610647611725565b005b34801561065557600080fd5b5061065e611855565b60405161066b9190614136565b60405180910390f35b34801561068057600080fd5b5061068961187f565b6040516106969190613c09565b60405180910390f35b3480156106ab57600080fd5b506106c660048036038101906106c191906141aa565b611911565b005b3480156106d457600080fd5b506106ef60048036038101906106ea9190613d4d565b611a8c565b6040516106fc9190613da8565b60405180910390f35b34801561071157600080fd5b5061072c60048036038101906107279190613d4d565b611b77565b6040516107399190613da8565b60405180910390f35b34801561074e57600080fd5b50610757611b95565b6040516107649190613dff565b60405180910390f35b34801561077957600080fd5b50610794600480360381019061078f9190613dc3565b611b9b565b6040516107a19190613da8565b60405180910390f35b3480156107b657600080fd5b506107bf611bbb565b6040516107cc9190613da8565b60405180910390f35b3480156107e157600080fd5b506107fc60048036038101906107f791906141aa565b611bce565b005b34801561080a57600080fd5b50610813611d0e565b6040516108209190613da8565b60405180910390f35b34801561083557600080fd5b50610850600480360381019061084b9190614151565b611d21565b005b34801561085e57600080fd5b50610879600480360381019061087491906141ea565b611e87565b6040516108869190613dff565b60405180910390f35b34801561089b57600080fd5b506108a4611f0e565b005b3480156108b257600080fd5b506108bb611fb7565b6040516108c89190613dff565b60405180910390f35b3480156108dd57600080fd5b506108f860048036038101906108f39190614151565b611fbd565b005b34801561090657600080fd5b50610921600480360381019061091c9190613dc3565b6120db565b005b34801561092f57600080fd5b506109386122a1565b005b34801561094657600080fd5b50610961600480360381019061095c9190614151565b6123a9565b005b60606003805461097290614259565b80601f016020809104026020016040519081016040528092919081815260200182805461099e90614259565b80156109eb5780601f106109c0576101008083540402835291602001916109eb565b820191906000526020600020905b8154815290600101906020018083116109ce57829003601f168201915b5050505050905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610a2f610a286126d9565b84846126e1565b6001905092915050565b60126020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b610a6b6126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af1906142d6565b60405180910390fd5b8051825114610b3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3590614342565b60405180910390fd5b610258825110610b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7a906143d4565b60405180910390fd5b60005b8251811015610bed576000838281518110610ba457610ba36143f4565b5b602002602001015190506000838381518110610bc357610bc26143f4565b5b60200260200101519050610bd83383836128aa565b50508080610be590614452565b915050610b86565b505050565b6000610bff848484612b13565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c4a6126d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc19061450c565b60405180910390fd5b610cde85610cd66126d9565b8584036126e1565b60019150509392505050565b60105481565b60006012905090565b6000610d9b610d066126d9565b848460016000610d146126d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d96919061452c565b6126e1565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b600c60149054906101000a900460ff1681565b610dec6126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e72906142d6565b60405180910390fd5b600b54610e8730610f45565b1015610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf906145f4565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550610eeb6136fd565b6000600a60146101000a81548160ff0219169083151502179055507f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb3242604051610f359190613dff565b60405180910390a1565b60075481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f956126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b906142d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6110ed6126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461117c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611173906142d6565b60405180910390fd5b60468111156111c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b790614660565b60405180910390fd5b80600f819055507f03cd3090e7c409e4a7ffd2d90ff610979f4a94a87a512188b7b615671bfb772f600f546040516111f89190613dff565b60405180910390a150565b61120b6126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461129a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611291906142d6565b60405180910390fd5b6000600c60146101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b6112eb6126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461137a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611371906142d6565b60405180910390fd5b8061141057600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361140f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611406906146f2565b60405180910390fd5b5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006114756126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fb906142d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156a9061475e565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d8906147ca565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161161c9190614136565b602060405180830381865afa158015611639573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165d91906147ff565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b815260040161169a92919061482c565b6020604051808303816000875af11580156116b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116dd919061486a565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438848260405161171092919061482c565b60405180910390a15092915050565b60065481565b61172d6126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b3906142d6565b60405180910390fd5b600c60159054906101000a900460ff161561180c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611803906148e3565b60405180910390fd5b6001600c60156101000a81548160ff0219169083151502179055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461188e90614259565b80601f01602080910402602001604051908101604052809291908181526020018280546118ba90614259565b80156119075780601f106118dc57610100808354040283529160200191611907565b820191906000526020600020905b8154815290600101906020018083116118ea57829003601f168201915b5050505050905090565b6119196126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199f906142d6565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2f90614975565b60405180910390fd5b611a4282826137ee565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008060016000611a9b6126d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4f90614a07565b60405180910390fd5b611b6c611b636126d9565b858584036126e1565b600191505092915050565b6000611b8b611b846126d9565b8484612b13565b6001905092915050565b60085481565b60136020528060005260406000206000915054906101000a900460ff1681565b600c60159054906101000a900460ff1681565b611bd66126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5c906142d6565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d029190613da8565b60405180910390a25050565b600e60009054906101000a900460ff1681565b611d296126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611daf906142d6565b60405180910390fd5b6103e86001611dc5610a59565b611dcf9190614a27565b611dd99190614ab0565b811015611e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1290614b53565b60405180910390fd5b60146001611e27610a59565b611e319190614a27565b611e3b9190614ab0565b811115611e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7490614be5565b60405180910390fd5b80600b8190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611f166126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9c906142d6565b60405180910390fd5b60006010819055506000600f81905550565b600b5481565b611fc56126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204b906142d6565b60405180910390fd5b6046811115612098576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208f90614660565b60405180910390fd5b806010819055507f274faecd49018fb411281f27986b6b4acc86e5db4100735531acd18b7b6d5f936010546040516120d09190613dff565b60405180910390a150565b6120e36126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612172576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612169906142d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d890614c77565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6122a96126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612338576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232f906142d6565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161235e90614cc8565b60006040518083038185875af1925050503d806000811461239b576040519150601f19603f3d011682016040523d82523d6000602084013e6123a0565b606091505b50508091505050565b6123b16126d9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612440576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612437906142d6565b60405180910390fd5b678ac7230489e8000081111561248b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248290614d75565b60405180910390fd5b6000600267ffffffffffffffff8111156124a8576124a7613e1f565b5b6040519080825280602002602001820160405280156124d65781602001602082028036833780820191505090505b509050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612546573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256a9190614daa565b8160008151811061257e5761257d6143f4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505030816001815181106125cd576125cc6143f4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008461dead426040518663ffffffff1660e01b815260040161266c9493929190614ed0565b6000604051808303818588803b15801561268557600080fd5b505af1158015612699573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d684820568826040516126cd9190613dff565b60405180910390a15050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274790614f8e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b690615020565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161289d9190613dff565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612919576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612910906150b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297f90615144565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a05906151d6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612aa1919061452c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b059190613dff565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b79906150b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be890615144565b60405180910390fd5b60008111612c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2b90615242565b60405180910390fd5b600c60159054906101000a900460ff16612d2957601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ce95750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1f906152ae565b60405180910390fd5b5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612dcc5750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e0457503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e5e5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612ea85743600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b43600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f2090615340565b60405180910390fd5b600c60149054906101000a900460ff161561338d57612f46611855565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612fb45750612f84611855565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612fed5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613027575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561307d5750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130d35750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561338c57601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561317b5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613222576006548111156131c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131bc906153d2565b60405180910390fd5b6008546131d183610f45565b826131dc919061452c565b111561321d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132149061543e565b60405180910390fd5b61338b565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132c55750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132df576007548111156132da5760075490505b61338a565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166133895760085461333c83610f45565b82613347919061452c565b1115613388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337f906154d0565b60405180910390fd5b5b5b5b5b5b600061339830610f45565b90506000600b5482101590508080156133bd5750600c60159054906101000a900460ff165b80156133d65750600a60149054906101000a900460ff16155b801561342c5750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134825750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134d85750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561351c576001600a60146101000a81548160ff0219169083151502179055506135006136fd565b6000600a60146101000a81548160ff0219169083151502179055505b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135c05750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136eb576000601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561362257506000601054115b15613648576064601054856136379190614a27565b6136419190614ab0565b90506136c6565b601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136a357506000600f54115b156136c5576064600f54856136b89190614a27565b6136c29190614ab0565b90505b5b60008111156136db576136da8630836128aa565b5b80846136e791906154f0565b9350505b6136f68585856128aa565b5050505050565b600061370830610f45565b90506000810361371857506137ec565b6006600b546137279190614a27565b811115613740576006600b5461373d9190614a27565b90505b600061374b82613899565b600047905060008111156137e857600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161379f90614cc8565b60006040518083038185875af1925050503d80600081146137dc576040519150601f19603f3d011682016040523d82523d6000602084013e6137e1565b606091505b5050809250505b5050505b565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061384f8282613adc565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600267ffffffffffffffff8111156138b6576138b5613e1f565b5b6040519080825280602002602001820160405280156138e45781602001602082028036833780820191505090505b50905030816000815181106138fc576138fb6143f4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c79190614daa565b816001815181106139db576139da6143f4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613a4230600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846126e1565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613aa6959493929190615524565b600060405180830381600087803b158015613ac057600080fd5b505af1158015613ad4573d6000803e3d6000fd5b505050505050565b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613b6492919061557e565b60405180910390a15050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613baa578082015181840152602081019050613b8f565b83811115613bb9576000848401525b50505050565b6000601f19601f8301169050919050565b6000613bdb82613b70565b613be58185613b7b565b9350613bf5818560208601613b8c565b613bfe81613bbf565b840191505092915050565b60006020820190508181036000830152613c238184613bd0565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613c70613c6b613c6684613c2b565b613c4b565b613c2b565b9050919050565b6000613c8282613c55565b9050919050565b6000613c9482613c77565b9050919050565b613ca481613c89565b82525050565b6000602082019050613cbf6000830184613c9b565b92915050565b6000604051905090565b600080fd5b600080fd5b6000613ce482613c2b565b9050919050565b613cf481613cd9565b8114613cff57600080fd5b50565b600081359050613d1181613ceb565b92915050565b6000819050919050565b613d2a81613d17565b8114613d3557600080fd5b50565b600081359050613d4781613d21565b92915050565b60008060408385031215613d6457613d63613ccf565b5b6000613d7285828601613d02565b9250506020613d8385828601613d38565b9150509250929050565b60008115159050919050565b613da281613d8d565b82525050565b6000602082019050613dbd6000830184613d99565b92915050565b600060208284031215613dd957613dd8613ccf565b5b6000613de784828501613d02565b91505092915050565b613df981613d17565b82525050565b6000602082019050613e146000830184613df0565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613e5782613bbf565b810181811067ffffffffffffffff82111715613e7657613e75613e1f565b5b80604052505050565b6000613e89613cc5565b9050613e958282613e4e565b919050565b600067ffffffffffffffff821115613eb557613eb4613e1f565b5b602082029050602081019050919050565b600080fd5b6000613ede613ed984613e9a565b613e7f565b90508083825260208201905060208402830185811115613f0157613f00613ec6565b5b835b81811015613f2a5780613f168882613d02565b845260208401935050602081019050613f03565b5050509392505050565b600082601f830112613f4957613f48613e1a565b5b8135613f59848260208601613ecb565b91505092915050565b600067ffffffffffffffff821115613f7d57613f7c613e1f565b5b602082029050602081019050919050565b6000613fa1613f9c84613f62565b613e7f565b90508083825260208201905060208402830185811115613fc457613fc3613ec6565b5b835b81811015613fed5780613fd98882613d38565b845260208401935050602081019050613fc6565b5050509392505050565b600082601f83011261400c5761400b613e1a565b5b813561401c848260208601613f8e565b91505092915050565b6000806040838503121561403c5761403b613ccf565b5b600083013567ffffffffffffffff81111561405a57614059613cd4565b5b61406685828601613f34565b925050602083013567ffffffffffffffff81111561408757614086613cd4565b5b61409385828601613ff7565b9150509250929050565b6000806000606084860312156140b6576140b5613ccf565b5b60006140c486828701613d02565b93505060206140d586828701613d02565b92505060406140e686828701613d38565b9150509250925092565b600060ff82169050919050565b614106816140f0565b82525050565b600060208201905061412160008301846140fd565b92915050565b61413081613cd9565b82525050565b600060208201905061414b6000830184614127565b92915050565b60006020828403121561416757614166613ccf565b5b600061417584828501613d38565b91505092915050565b61418781613d8d565b811461419257600080fd5b50565b6000813590506141a48161417e565b92915050565b600080604083850312156141c1576141c0613ccf565b5b60006141cf85828601613d02565b92505060206141e085828601614195565b9150509250929050565b6000806040838503121561420157614200613ccf565b5b600061420f85828601613d02565b925050602061422085828601613d02565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061427157607f821691505b6020821081036142845761428361422a565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006142c0602083613b7b565b91506142cb8261428a565b602082019050919050565b600060208201905081810360008301526142ef816142b3565b9050919050565b7f617272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b600061432c601e83613b7b565b9150614337826142f6565b602082019050919050565b6000602082019050818103600083015261435b8161431f565b9050919050565b7f43616e206f6e6c792061697264726f70203630302077616c6c6574732070657260008201527f2074786e2064756520746f20676173206c696d69747300000000000000000000602082015250565b60006143be603683613b7b565b91506143c982614362565b604082019050919050565b600060208201905081810360008301526143ed816143b1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061445d82613d17565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361448f5761448e614423565b5b600182019050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006144f6602883613b7b565b91506145018261449a565b604082019050919050565b60006020820190508181036000830152614525816144e9565b9050919050565b600061453782613d17565b915061454283613d17565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561457757614576614423565b5b828201905092915050565b7f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060008201527f6973206174206f7220686967686572207468616e207265737472696374696f6e602082015250565b60006145de604083613b7b565b91506145e982614582565b604082019050919050565b6000602082019050818103600083015261460d816145d1565b9050919050565b7f4d757374206b656570206665657320617420353025206f72206c657373000000600082015250565b600061464a601d83613b7b565b915061465582614614565b602082019050919050565b600060208201905081810360008301526146798161463d565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b60006146dc602783613b7b565b91506146e782614680565b604082019050919050565b6000602082019050818103600083015261470b816146cf565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614748601a83613b7b565b915061475382614712565b602082019050919050565b600060208201905081810360008301526147778161473b565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b60006147b4601c83613b7b565b91506147bf8261477e565b602082019050919050565b600060208201905081810360008301526147e3816147a7565b9050919050565b6000815190506147f981613d21565b92915050565b60006020828403121561481557614814613ccf565b5b6000614823848285016147ea565b91505092915050565b60006040820190506148416000830185614127565b61484e6020830184613df0565b9392505050565b6000815190506148648161417e565b92915050565b6000602082840312156148805761487f613ccf565b5b600061488e84828501614855565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b60006148cd601783613b7b565b91506148d882614897565b602082019050919050565b600060208201905081810360008301526148fc816148c0565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061495f603983613b7b565b915061496a82614903565b604082019050919050565b6000602082019050818103600083015261498e81614952565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006149f1602583613b7b565b91506149fc82614995565b604082019050919050565b60006020820190508181036000830152614a20816149e4565b9050919050565b6000614a3282613d17565b9150614a3d83613d17565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614a7657614a75614423565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614abb82613d17565b9150614ac683613d17565b925082614ad657614ad5614a81565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e312520746f74616c20737570706c792e00000000000000000000000000602082015250565b6000614b3d603383613b7b565b9150614b4882614ae1565b604082019050919050565b60006020820190508181036000830152614b6c81614b30565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20352520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000614bcf603283613b7b565b9150614bda82614b73565b604082019050919050565b60006020820190508181036000830152614bfe81614bc2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614c61602683613b7b565b9150614c6c82614c05565b604082019050919050565b60006020820190508181036000830152614c9081614c54565b9050919050565b600081905092915050565b50565b6000614cb2600083614c97565b9150614cbd82614ca2565b600082019050919050565b6000614cd382614ca5565b9150819050919050565b7f4d6179206e6f7420627579206d6f7265207468616e2031302045544820696e2060008201527f612073696e676c652062757920746f207265647563652073616e64776963682060208201527f61747461636b7300000000000000000000000000000000000000000000000000604082015250565b6000614d5f604783613b7b565b9150614d6a82614cdd565b606082019050919050565b60006020820190508181036000830152614d8e81614d52565b9050919050565b600081519050614da481613ceb565b92915050565b600060208284031215614dc057614dbf613ccf565b5b6000614dce84828501614d95565b91505092915050565b6000819050919050565b6000614dfc614df7614df284614dd7565b613c4b565b613d17565b9050919050565b614e0c81614de1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614e4781613cd9565b82525050565b6000614e598383614e3e565b60208301905092915050565b6000602082019050919050565b6000614e7d82614e12565b614e878185614e1d565b9350614e9283614e2e565b8060005b83811015614ec3578151614eaa8882614e4d565b9750614eb583614e65565b925050600181019050614e96565b5085935050505092915050565b6000608082019050614ee56000830187614e03565b8181036020830152614ef78186614e72565b9050614f066040830185614127565b614f136060830184613df0565b95945050505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614f78602483613b7b565b9150614f8382614f1c565b604082019050919050565b60006020820190508181036000830152614fa781614f6b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061500a602283613b7b565b915061501582614fae565b604082019050919050565b6000602082019050818103600083015261503981614ffd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061509c602583613b7b565b91506150a782615040565b604082019050919050565b600060208201905081810360008301526150cb8161508f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061512e602383613b7b565b9150615139826150d2565b604082019050919050565b6000602082019050818103600083015261515d81615121565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006151c0602683613b7b565b91506151cb82615164565b604082019050919050565b600060208201905081810360008301526151ef816151b3565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b600061522c601d83613b7b565b9150615237826151f6565b602082019050919050565b6000602082019050818103600083015261525b8161521f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000615298601683613b7b565b91506152a382615262565b602082019050919050565b600060208201905081810360008301526152c78161528b565b9050919050565b7f5f7472616e736665723a3a20416e74692073616e647769636820626f7420656e60008201527f61626c65642e20506c656173652074727920616761696e206c617465722e0000602082015250565b600061532a603e83613b7b565b9150615335826152ce565b604082019050919050565b600060208201905081810360008301526153598161531d565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b60006153bc602883613b7b565b91506153c782615360565b604082019050919050565b600060208201905081810360008301526153eb816153af565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b6000615428601883613b7b565b9150615433826153f2565b602082019050919050565b600060208201905081810360008301526154578161541b565b9050919050565b7f43616e6e6f7420457863656564206d617820746f6b656e73207065722077616c60008201527f6c65740000000000000000000000000000000000000000000000000000000000602082015250565b60006154ba602383613b7b565b91506154c58261545e565b604082019050919050565b600060208201905081810360008301526154e9816154ad565b9050919050565b60006154fb82613d17565b915061550683613d17565b92508282101561551957615518614423565b5b828203905092915050565b600060a0820190506155396000830188613df0565b6155466020830187614e03565b81810360408301526155588186614e72565b90506155676060830185614127565b6155746080830184613df0565b9695505050505050565b60006040820190506155936000830185614127565b6155a06020830184613d99565b939250505056fea26469706673582212209ac4e09ec9ab290b57b24c719c29cad8710e8e05caf5b51e583a3b7a4382776164736f6c634300080f0033

Deployed Bytecode Sourcemap

10212:12523:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4474:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10363:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5388:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11001:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4795:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14554:618;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5565:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10827:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4694:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6065:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10397:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10799;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10524:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21701:312;;;;;;;;;;;;;:::i;:::-;;10289:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4911:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9109:150;;;;;;;;;;;;;:::i;:::-;;15999:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13808:115;;;;;;;;;;;;;:::i;:::-;;15180:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20746:456;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10255:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13580:176;;;;;;;;;;;;;:::i;:::-;;8895:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4582:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15448:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6288:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5046:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10324:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11223:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10564:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16523:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10751:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13993:338;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5229:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16416:99;;;;;;;;;;;;;:::i;:::-;;10455:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16204:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9267:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21272:160;;;;;;;;;;;;;:::i;:::-;;22116:616;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4474:100;4528:13;4561:5;4554:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4474:100;:::o;10363:27::-;;;;;;;;;;;;;:::o;5388:169::-;5471:4;5488:39;5497:12;:10;:12::i;:::-;5511:7;5520:6;5488:8;:39::i;:::-;5545:4;5538:11;;5388:169;;;;:::o;11001:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;4795:108::-;4856:7;4883:12;;4876:19;;4795:108;:::o;14554:618::-;9032:12;:10;:12::i;:::-;9022:22;;:6;;;;;;;;;;;:22;;;9014:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14696:15:::1;:22;14678:7;:14;:40;14670:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;14789:3;14772:7;:14;:20;14764:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;14964:9;14960:205;14983:7;:14;14979:1;:18;14960:205;;;15018:14;15035:7;15043:1;15035:10;;;;;;;;:::i;:::-;;;;;;;;15018:27;;15060:14;15077:15;15093:1;15077:18;;;;;;;;:::i;:::-;;;;;;;;15060:35;;15110:43;15126:10;15138:6;15146;15110:15;:43::i;:::-;15003:162;;14999:3;;;;;:::i;:::-;;;;14960:205;;;;14554:618:::0;;:::o;5565:492::-;5705:4;5722:36;5732:6;5740:9;5751:6;5722:9;:36::i;:::-;5771:24;5798:11;:19;5810:6;5798:19;;;;;;;;;;;;;;;:33;5818:12;:10;:12::i;:::-;5798:33;;;;;;;;;;;;;;;;5771:60;;5870:6;5850:16;:26;;5842:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5957:57;5966:6;5974:12;:10;:12::i;:::-;6007:6;5988:16;:25;5957:8;:57::i;:::-;6045:4;6038:11;;;5565:492;;;;;:::o;10827:22::-;;;;:::o;4694:93::-;4752:5;4777:2;4770:9;;4694:93;:::o;6065:215::-;6153:4;6170:80;6179:12;:10;:12::i;:::-;6193:7;6239:10;6202:11;:25;6214:12;:10;:12::i;:::-;6202:25;;;;;;;;;;;;;;;:34;6228:7;6202:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6170:8;:80::i;:::-;6268:4;6261:11;;6065:215;;;;:::o;10397:21::-;;;;;;;;;;;;;:::o;10799:::-;;;;:::o;10524:33::-;;;;;;;;;;;;;:::o;21701:312::-;9032:12;:10;:12::i;:::-;9022:22;;:6;;;;;;;;;;;:22;;;9014:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21792:18:::1;;21764:24;21782:4;21764:9;:24::i;:::-;:46;;21756:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;21901:4;21890:8;;:15;;;;;;;;;;;;;;;;;;21916:10;:8;:10::i;:::-;21948:5;21937:8;;:16;;;;;;;;;;;;;;;;;;21969:36;21989:15;21969:36;;;;;;:::i;:::-;;;;;;;;21701:312::o:0;10289:28::-;;;;:::o;4911:127::-;4985:7;5012:9;:18;5022:7;5012:18;;;;;;;;;;;;;;;;5005:25;;4911:127;;;:::o;9109:150::-;9032:12;:10;:12::i;:::-;9022:22;;:6;;;;;;;;;;;:22;;;9014:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9218:1:::1;9181:40;;9202:6;;;;;;;;;;;9181:40;;;;;;;;;;;;9249:1;9232:6;;:19;;;;;;;;;;;;;;;;;;9109:150::o:0;15999:197::-;9032:12;:10;:12::i;:::-;9022:22;;:6;;;;;;;;;;;:22;;;9014:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16088:2:::1;16077:7;:13;;16069:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;16144:7;16135:6;:16;;;;16167:21;16181:6;;16167:21;;;;;;:::i;:::-;;;;;;;;15999:197:::0;:::o;13808:115::-;9032:12;:10;:12::i;:::-;9022:22;;:6;;;;;;;;;;;:22;;;9014:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13879:5:::1;13862:14;;:22;;;;;;;;;;;;;;;;;;13900:15;;;;;;;;;;13808:115::o:0;15180:260::-;9032:12;:10;:12::i;:::-;9022:22;;:6;;;;;;;;;;;:22;;;9014:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15276:4:::1;15272:104;;15314:6;;;;;;;;;;;15304:16;;:6;:16;;::::0;15296:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15272:104;15428:4;15386:31;:39;15418:6;15386:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;15180:260:::0;;:::o;20746:456::-;20833:10;9032:12;:10;:12::i;:::-;9022:22;;:6;;;;;;;;;;;:22;;;9014:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20882:1:::1;20864:20;;:6;:20;;::::0;20856:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20952:4;20934:23;;:6;:23;;::::0;20926:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21001:24;21035:6;21028:24;;;21061:4;21028:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21001:66;;21093:6;21086:23;;;21110:3;21115:16;21086:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21078:54;;21148:46;21169:6;21177:16;21148:46;;;;;;;:::i;:::-;;;;;;;;20845:357;20746:456:::0;;;;:::o;10255:27::-;;;;:::o;13580:176::-;9032:12;:10;:12::i;:::-;9022:22;;:6;;;;;;;;;;;:22;;;9014:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13644:13:::1;;;;;;;;;;;13643:14;13635:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;13712:4;13696:13;;:20;;;;;;;;;;;;;;;;;;13732:16;;;;;;;;;;13580:176::o:0;8895:79::-;8933:7;8960:6;;;;;;;;;;;8953:13;;8895:79;:::o;4582:104::-;4638:13;4671:7;4664:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4582:104;:::o;15448:295::-;9032:12;:10;:12::i;:::-;9022:22;;:6;;;;;;;;;;;:22;;;9014:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15557:6:::1;;;;;;;;;;;15549:14;;:4;:14;;::::0;15541:84:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15638:41;15667:4;15673:5;15638:28;:41::i;:::-;15729:5;15695:40;;15723:4;15695:40;;;;;;;;;;;;15448:295:::0;;:::o;6288:413::-;6381:4;6398:24;6425:11;:25;6437:12;:10;:12::i;:::-;6425:25;;;;;;;;;;;;;;;:34;6451:7;6425:34;;;;;;;;;;;;;;;;6398:61;;6498:15;6478:16;:35;;6470:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6591:67;6600:12;:10;:12::i;:::-;6614:7;6642:15;6623:16;:34;6591:8;:67::i;:::-;6689:4;6682:11;;;6288:413;;;;:::o;5046:175::-;5132:4;5149:42;5159:12;:10;:12::i;:::-;5173:9;5184:6;5149:9;:42::i;:::-;5209:4;5202:11;;5046:175;;;;:::o;10324:30::-;;;;:::o;11223:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;10564:33::-;;;;;;;;;;;;;:::o;16523:182::-;9032:12;:10;:12::i;:::-;9022:22;;:6;;;;;;;;;;;:22;;;9014:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16639:8:::1;16608:19;:28;16628:7;16608:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16679:7;16663:34;;;16688:8;16663:34;;;;;;:::i;:::-;;;;;;;;16523:182:::0;;:::o;10751:39::-;;;;;;;;;;;;;:::o;13993:338::-;9032:12;:10;:12::i;:::-;9022:22;;:6;;;;;;;;;;;:22;;;9014:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14116:4:::1;14112:1;14096:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;14083:9;:37;;14075:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;14227:2;14223:1;14207:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:22;;;;:::i;:::-;14194:9;:35;;14186:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;14315:9;14294:18;:30;;;;13993:338:::0;:::o;5229:151::-;5318:7;5345:11;:18;5357:5;5345:18;;;;;;;;;;;;;;;:27;5364:7;5345:27;;;;;;;;;;;;;;;;5338:34;;5229:151;;;;:::o;16416:99::-;9032:12;:10;:12::i;:::-;9022:22;;:6;;;;;;;;;;;:22;;;9014:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16485:1:::1;16475:7;:11;;;;16506:1;16497:6;:10;;;;16416:99::o:0;10455:33::-;;;;:::o;16204:204::-;9032:12;:10;:12::i;:::-;9022:22;;:6;;;;;;;;;;;:22;;;9014:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16296:2:::1;16284:8;:14;;16276:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;16353:8;16343:7;:18;;;;16377:23;16392:7;;16377:23;;;;;;:::i;:::-;;;;;;;;16204:204:::0;:::o;9267:244::-;9032:12;:10;:12::i;:::-;9022:22;;:6;;;;;;;;;;;:22;;;9014:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9376:1:::1;9356:22;;:8;:22;;::::0;9348:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9466:8;9437:38;;9458:6;;;;;;;;;;;9437:38;;;;;;;;;;;;9495:8;9486:6;;:17;;;;;;;;;;;;;;;;;;9267:244:::0;:::o;21272:160::-;9032:12;:10;:12::i;:::-;9022:22;;:6;;;;;;;;;;;:22;;;9014:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21330:12:::1;21374:10;21366:24;;21398:21;21366:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21353:71;;;;;21319:113;21272:160::o:0;22116:616::-;9032:12;:10;:12::i;:::-;9022:22;;:6;;;;;;;;;;;:22;;;9014:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22213:8:::1;22198:11;:23;;22190:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;22310:21;22348:1;22334:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22310:40;;22371:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22361:4;22366:1;22361:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;::::0;::::1;22416:4;22398;22403:1;22398:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;22460:9;;;;;;;;;;;:60;;;22528:11;22555:1;22604:4;22631:6;22653:15;22460:219;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;22695:29;22712:11;22695:29;;;;;;:::i;:::-;;;;;;;;22179:553;22116:616:::0;:::o;623:98::-;676:7;703:10;696:17;;623:98;:::o;8188:380::-;8341:1;8324:19;;:5;:19;;;8316:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8422:1;8403:21;;:7;:21;;;8395:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8506:6;8476:11;:18;8488:5;8476:18;;;;;;;;;;;;;;;:27;8495:7;8476:27;;;;;;;;;;;;;;;:36;;;;8544:7;8528:32;;8537:5;8528:32;;;8553:6;8528:32;;;;;;:::i;:::-;;;;;;;;8188:380;;;:::o;6709:614::-;6867:1;6849:20;;:6;:20;;;6841:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6951:1;6930:23;;:9;:23;;;6922:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7006:21;7030:9;:17;7040:6;7030:17;;;;;;;;;;;;;;;;7006:41;;7083:6;7066:13;:23;;7058:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7204:6;7188:13;:22;7168:9;:17;7178:6;7168:17;;;;;;;;;;;;;;;:42;;;;7256:6;7232:9;:20;7242:9;7232:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7297:9;7280:35;;7289:6;7280:35;;;7308:6;7280:35;;;;;;:::i;:::-;;;;;;;;6830:493;6709:614;;;:::o;16713:2911::-;16829:1;16813:18;;:4;:18;;;16805:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16906:1;16892:16;;:2;:16;;;16884:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16976:1;16967:6;:10;16959:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;17028:13;;;;;;;;;;;17024:132;;17065:19;:25;17085:4;17065:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;17094:19;:23;17114:2;17094:23;;;;;;;;;;;;;;;;;;;;;;;;;17065:52;17057:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;17024:132;17202:25;:31;17228:4;17202:31;;;;;;;;;;;;;;;;;;;;;;;;;:65;;;;;17238:25;:29;17264:2;17238:29;;;;;;;;;;;;;;;;;;;;;;;;;17237:30;17202:65;:88;;;;;17285:4;17271:19;;:2;:19;;;;17202:88;:116;;;;;17308:9;;;;;;;;;;;17294:24;;:2;:24;;;;17202:116;17198:186;;;17360:12;17334:19;:23;17354:2;17334:23;;;;;;;;;;;;;;;:38;;;;17198:186;17430:12;17402:19;:25;17422:4;17402:25;;;;;;;;;;;;;;;;:40;17394:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;17525:14;;;;;;;;;;;17522:1046;;;17567:7;:5;:7::i;:::-;17559:15;;:4;:15;;;;:32;;;;;17584:7;:5;:7::i;:::-;17578:13;;:2;:13;;;;17559:32;:52;;;;;17609:1;17595:16;;:2;:16;;;;17559:52;:77;;;;;17629:6;17615:21;;:2;:21;;;;17559:77;:107;;;;;17641:19;:25;17661:4;17641:25;;;;;;;;;;;;;;;;;;;;;;;;;17640:26;17559:107;:135;;;;;17671:19;:23;17691:2;17671:23;;;;;;;;;;;;;;;;;;;;;;;;;17670:24;17559:135;17555:1002;;;17752:25;:31;17778:4;17752:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;17788:31;:35;17820:2;17788:35;;;;;;;;;;;;;;;;;;;;;;;;;17787:36;17752:71;17748:794;;;17870:12;;17860:6;:22;;17852:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;17988:15;;17971:13;17981:2;17971:9;:13::i;:::-;17962:6;:22;;;;:::i;:::-;:41;;17954:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;17748:794;;;18120:25;:29;18146:2;18120:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;18154:31;:37;18186:4;18154:37;;;;;;;;;;;;;;;;;;;;;;;;;18153:38;18120:71;18116:426;;;18232:13;;18223:6;:22;18220:107;;;18286:13;;18277:22;;18220:107;18116:426;;;18374:31;:35;18406:2;18374:35;;;;;;;;;;;;;;;;;;;;;;;;;18369:173;;18467:15;;18450:13;18460:2;18450:9;:13::i;:::-;18441:6;:22;;;;:::i;:::-;:41;;18433:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;18369:173;18116:426;17748:794;17555:1002;17522:1046;18580:28;18611:24;18629:4;18611:9;:24::i;:::-;18580:55;;18648:12;18687:18;;18663:20;:42;;18648:57;;18721:7;:24;;;;;18732:13;;;;;;;;;;;18721:24;:37;;;;;18750:8;;;;;;;;;;;18749:9;18721:37;:73;;;;;18763:25;:31;18789:4;18763:31;;;;;;;;;;;;;;;;;;;;;;;;;18762:32;18721:73;:103;;;;;18799:19;:25;18819:4;18799:25;;;;;;;;;;;;;;;;;;;;;;;;;18798:26;18721:103;:131;;;;;18829:19;:23;18849:2;18829:23;;;;;;;;;;;;;;;;;;;;;;;;;18828:24;18721:131;18718:234;;;18880:4;18869:8;;:15;;;;;;;;;;;;;;;;;;18899:10;:8;:10::i;:::-;18935:5;18924:8;;:16;;;;;;;;;;;;;;;;;;18718:234;19042:19;:25;19062:4;19042:25;;;;;;;;;;;;;;;;;;;;;;;;;19041:26;:54;;;;;19072:19;:23;19092:2;19072:23;;;;;;;;;;;;;;;;;;;;;;;;;19071:24;19041:54;19038:533;;;19111:12;19170:25;:29;19196:2;19170:29;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;;19213:1;19203:7;;:11;19170:44;19166:265;;;19260:3;19250:7;;19241:6;:16;;;;:::i;:::-;:22;;;;:::i;:::-;19234:29;;19166:265;;;19324:25;:31;19350:4;19324:31;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;19368:1;19359:6;;:10;19324:45;19321:110;;;19412:3;19403:6;;19394;:15;;;;:::i;:::-;:21;;;;:::i;:::-;19387:28;;19321:110;19166:265;19455:1;19448:4;:8;19445:89;;;19476:42;19492:4;19506;19513;19476:15;:42::i;:::-;19445:89;19555:4;19545:14;;;;;:::i;:::-;;;19096:475;19038:533;19583:33;19599:4;19605:2;19609:6;19583:15;:33::i;:::-;16792:2832;;16713:2911;;;:::o;20213:525::-;20252:23;20278:24;20296:4;20278:9;:24::i;:::-;20252:50;;20335:1;20316:15;:20;20313:34;;20339:7;;;20313:34;20401:1;20380:18;;:22;;;;:::i;:::-;20362:15;:40;20359:111;;;20457:1;20436:18;;:22;;;;:::i;:::-;20418:40;;20359:111;20482:12;20507:33;20524:15;20507:16;:33::i;:::-;20553:18;20574:21;20553:42;;20632:1;20619:10;:14;20616:105;;;20670:10;;;;;;;;;;;20662:24;;20694:10;20662:47;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20649:60;;;;;20616:105;20241:497;;;20213:525;:::o;15751:240::-;15868:5;15834:25;:31;15860:4;15834:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;15886;15913:4;15919:5;15886:26;:39::i;:::-;15977:5;15943:40;;15971:4;15943:40;;;;;;;;;;;;15751:240;;:::o;19632:573::-;19760:21;19798:1;19784:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19760:40;;19829:4;19811;19816:1;19811:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19855:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19845:4;19850:1;19845:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;19884:56;19901:4;19916:9;;;;;;;;;;;19928:11;19884:8;:56::i;:::-;19979:9;;;;;;;;;;;:60;;;20054:11;20080:1;20124:4;20151;20171:15;19979:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19687:518;19632:573;:::o;14339:207::-;14469:10;14427:31;:39;14459:6;14427:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;14495:43;14519:6;14527:10;14495:43;;;;;;;:::i;:::-;;;;;;;;14339:207;;:::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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:126::-;1434:7;1474:42;1467:5;1463:54;1452:65;;1397:126;;;:::o;1529:60::-;1557:3;1578:5;1571:12;;1529:60;;;:::o;1595:142::-;1645:9;1678:53;1696:34;1705:24;1723:5;1705:24;:::i;:::-;1696:34;:::i;:::-;1678:53;:::i;:::-;1665:66;;1595:142;;;:::o;1743:126::-;1793:9;1826:37;1857:5;1826:37;:::i;:::-;1813:50;;1743:126;;;:::o;1875:144::-;1943:9;1976:37;2007:5;1976:37;:::i;:::-;1963:50;;1875:144;;;:::o;2025:167::-;2130:55;2179:5;2130:55;:::i;:::-;2125:3;2118:68;2025:167;;:::o;2198:258::-;2309:4;2347:2;2336:9;2332:18;2324:26;;2360:89;2446:1;2435:9;2431:17;2422:6;2360:89;:::i;:::-;2198:258;;;;:::o;2462:75::-;2495:6;2528:2;2522:9;2512:19;;2462:75;:::o;2543:117::-;2652:1;2649;2642:12;2666:117;2775:1;2772;2765:12;2789:96;2826:7;2855:24;2873:5;2855:24;:::i;:::-;2844:35;;2789:96;;;:::o;2891:122::-;2964:24;2982:5;2964:24;:::i;:::-;2957:5;2954:35;2944:63;;3003:1;3000;2993:12;2944:63;2891:122;:::o;3019:139::-;3065:5;3103:6;3090:20;3081:29;;3119:33;3146:5;3119:33;:::i;:::-;3019:139;;;;:::o;3164:77::-;3201:7;3230:5;3219:16;;3164:77;;;:::o;3247:122::-;3320:24;3338:5;3320:24;:::i;:::-;3313:5;3310:35;3300:63;;3359:1;3356;3349:12;3300:63;3247:122;:::o;3375:139::-;3421:5;3459:6;3446:20;3437:29;;3475:33;3502:5;3475:33;:::i;:::-;3375:139;;;;:::o;3520:474::-;3588:6;3596;3645:2;3633:9;3624:7;3620:23;3616:32;3613:119;;;3651:79;;:::i;:::-;3613:119;3771:1;3796:53;3841:7;3832:6;3821:9;3817:22;3796:53;:::i;:::-;3786:63;;3742:117;3898:2;3924:53;3969:7;3960:6;3949:9;3945:22;3924:53;:::i;:::-;3914:63;;3869:118;3520:474;;;;;:::o;4000:90::-;4034:7;4077:5;4070:13;4063:21;4052:32;;4000:90;;;:::o;4096:109::-;4177:21;4192:5;4177:21;:::i;:::-;4172:3;4165:34;4096:109;;:::o;4211:210::-;4298:4;4336:2;4325:9;4321:18;4313:26;;4349:65;4411:1;4400:9;4396:17;4387:6;4349:65;:::i;:::-;4211:210;;;;:::o;4427:329::-;4486:6;4535:2;4523:9;4514:7;4510:23;4506:32;4503:119;;;4541:79;;:::i;:::-;4503:119;4661:1;4686:53;4731:7;4722:6;4711:9;4707:22;4686:53;:::i;:::-;4676:63;;4632:117;4427:329;;;;:::o;4762:118::-;4849:24;4867:5;4849:24;:::i;:::-;4844:3;4837:37;4762:118;;:::o;4886:222::-;4979:4;5017:2;5006:9;5002:18;4994:26;;5030:71;5098:1;5087:9;5083:17;5074:6;5030:71;:::i;:::-;4886:222;;;;:::o;5114:117::-;5223:1;5220;5213:12;5237:180;5285:77;5282:1;5275:88;5382:4;5379:1;5372:15;5406:4;5403:1;5396:15;5423:281;5506:27;5528:4;5506:27;:::i;:::-;5498:6;5494:40;5636:6;5624:10;5621:22;5600:18;5588:10;5585:34;5582:62;5579:88;;;5647:18;;:::i;:::-;5579:88;5687:10;5683:2;5676:22;5466:238;5423:281;;:::o;5710:129::-;5744:6;5771:20;;:::i;:::-;5761:30;;5800:33;5828:4;5820:6;5800:33;:::i;:::-;5710:129;;;:::o;5845:311::-;5922:4;6012:18;6004:6;6001:30;5998:56;;;6034:18;;:::i;:::-;5998:56;6084:4;6076:6;6072:17;6064:25;;6144:4;6138;6134:15;6126:23;;5845:311;;;:::o;6162:117::-;6271:1;6268;6261:12;6302:710;6398:5;6423:81;6439:64;6496:6;6439:64;:::i;:::-;6423:81;:::i;:::-;6414:90;;6524:5;6553:6;6546:5;6539:21;6587:4;6580:5;6576:16;6569:23;;6640:4;6632:6;6628:17;6620:6;6616:30;6669:3;6661:6;6658:15;6655:122;;;6688:79;;:::i;:::-;6655:122;6803:6;6786:220;6820:6;6815:3;6812:15;6786:220;;;6895:3;6924:37;6957:3;6945:10;6924:37;:::i;:::-;6919:3;6912:50;6991:4;6986:3;6982:14;6975:21;;6862:144;6846:4;6841:3;6837:14;6830:21;;6786:220;;;6790:21;6404:608;;6302:710;;;;;:::o;7035:370::-;7106:5;7155:3;7148:4;7140:6;7136:17;7132:27;7122:122;;7163:79;;:::i;:::-;7122:122;7280:6;7267:20;7305:94;7395:3;7387:6;7380:4;7372:6;7368:17;7305:94;:::i;:::-;7296:103;;7112:293;7035:370;;;;:::o;7411:311::-;7488:4;7578:18;7570:6;7567:30;7564:56;;;7600:18;;:::i;:::-;7564:56;7650:4;7642:6;7638:17;7630:25;;7710:4;7704;7700:15;7692:23;;7411:311;;;:::o;7745:710::-;7841:5;7866:81;7882:64;7939:6;7882:64;:::i;:::-;7866:81;:::i;:::-;7857:90;;7967:5;7996:6;7989:5;7982:21;8030:4;8023:5;8019:16;8012:23;;8083:4;8075:6;8071:17;8063:6;8059:30;8112:3;8104:6;8101:15;8098:122;;;8131:79;;:::i;:::-;8098:122;8246:6;8229:220;8263:6;8258:3;8255:15;8229:220;;;8338:3;8367:37;8400:3;8388:10;8367:37;:::i;:::-;8362:3;8355:50;8434:4;8429:3;8425:14;8418:21;;8305:144;8289:4;8284:3;8280:14;8273:21;;8229:220;;;8233:21;7847:608;;7745:710;;;;;:::o;8478:370::-;8549:5;8598:3;8591:4;8583:6;8579:17;8575:27;8565:122;;8606:79;;:::i;:::-;8565:122;8723:6;8710:20;8748:94;8838:3;8830:6;8823:4;8815:6;8811:17;8748:94;:::i;:::-;8739:103;;8555:293;8478:370;;;;:::o;8854:894::-;8972:6;8980;9029:2;9017:9;9008:7;9004:23;9000:32;8997:119;;;9035:79;;:::i;:::-;8997:119;9183:1;9172:9;9168:17;9155:31;9213:18;9205:6;9202:30;9199:117;;;9235:79;;:::i;:::-;9199:117;9340:78;9410:7;9401:6;9390:9;9386:22;9340:78;:::i;:::-;9330:88;;9126:302;9495:2;9484:9;9480:18;9467:32;9526:18;9518:6;9515:30;9512:117;;;9548:79;;:::i;:::-;9512:117;9653:78;9723:7;9714:6;9703:9;9699:22;9653:78;:::i;:::-;9643:88;;9438:303;8854:894;;;;;:::o;9754:619::-;9831:6;9839;9847;9896:2;9884:9;9875:7;9871:23;9867:32;9864:119;;;9902:79;;:::i;:::-;9864:119;10022:1;10047:53;10092:7;10083:6;10072:9;10068:22;10047:53;:::i;:::-;10037:63;;9993:117;10149:2;10175:53;10220:7;10211:6;10200:9;10196:22;10175:53;:::i;:::-;10165:63;;10120:118;10277:2;10303:53;10348:7;10339:6;10328:9;10324:22;10303:53;:::i;:::-;10293:63;;10248:118;9754:619;;;;;:::o;10379:86::-;10414:7;10454:4;10447:5;10443:16;10432:27;;10379:86;;;:::o;10471:112::-;10554:22;10570:5;10554:22;:::i;:::-;10549:3;10542:35;10471:112;;:::o;10589:214::-;10678:4;10716:2;10705:9;10701:18;10693:26;;10729:67;10793:1;10782:9;10778:17;10769:6;10729:67;:::i;:::-;10589:214;;;;:::o;10809:118::-;10896:24;10914:5;10896:24;:::i;:::-;10891:3;10884:37;10809:118;;:::o;10933:222::-;11026:4;11064:2;11053:9;11049:18;11041:26;;11077:71;11145:1;11134:9;11130:17;11121:6;11077:71;:::i;:::-;10933:222;;;;:::o;11161:329::-;11220:6;11269:2;11257:9;11248:7;11244:23;11240:32;11237:119;;;11275:79;;:::i;:::-;11237:119;11395:1;11420:53;11465:7;11456:6;11445:9;11441:22;11420:53;:::i;:::-;11410:63;;11366:117;11161:329;;;;:::o;11496:116::-;11566:21;11581:5;11566:21;:::i;:::-;11559:5;11556:32;11546:60;;11602:1;11599;11592:12;11546:60;11496:116;:::o;11618:133::-;11661:5;11699:6;11686:20;11677:29;;11715:30;11739:5;11715:30;:::i;:::-;11618:133;;;;:::o;11757:468::-;11822:6;11830;11879:2;11867:9;11858:7;11854:23;11850:32;11847:119;;;11885:79;;:::i;:::-;11847:119;12005:1;12030:53;12075:7;12066:6;12055:9;12051:22;12030:53;:::i;:::-;12020:63;;11976:117;12132:2;12158:50;12200:7;12191:6;12180:9;12176:22;12158:50;:::i;:::-;12148:60;;12103:115;11757:468;;;;;:::o;12231:474::-;12299:6;12307;12356:2;12344:9;12335:7;12331:23;12327:32;12324:119;;;12362:79;;:::i;:::-;12324:119;12482:1;12507:53;12552:7;12543:6;12532:9;12528:22;12507:53;:::i;:::-;12497:63;;12453:117;12609:2;12635:53;12680:7;12671:6;12660:9;12656:22;12635:53;:::i;:::-;12625:63;;12580:118;12231:474;;;;;:::o;12711:180::-;12759:77;12756:1;12749:88;12856:4;12853:1;12846:15;12880:4;12877:1;12870:15;12897:320;12941:6;12978:1;12972:4;12968:12;12958:22;;13025:1;13019:4;13015:12;13046:18;13036:81;;13102:4;13094:6;13090:17;13080:27;;13036:81;13164:2;13156:6;13153:14;13133:18;13130:38;13127:84;;13183:18;;:::i;:::-;13127:84;12948:269;12897:320;;;:::o;13223:182::-;13363:34;13359:1;13351:6;13347:14;13340:58;13223:182;:::o;13411:366::-;13553:3;13574:67;13638:2;13633:3;13574:67;:::i;:::-;13567:74;;13650:93;13739:3;13650:93;:::i;:::-;13768:2;13763:3;13759:12;13752:19;;13411:366;;;:::o;13783:419::-;13949:4;13987:2;13976:9;13972:18;13964:26;;14036:9;14030:4;14026:20;14022:1;14011:9;14007:17;14000:47;14064:131;14190:4;14064:131;:::i;:::-;14056:139;;13783:419;;;:::o;14208:180::-;14348:32;14344:1;14336:6;14332:14;14325:56;14208:180;:::o;14394:366::-;14536:3;14557:67;14621:2;14616:3;14557:67;:::i;:::-;14550:74;;14633:93;14722:3;14633:93;:::i;:::-;14751:2;14746:3;14742:12;14735:19;;14394:366;;;:::o;14766:419::-;14932:4;14970:2;14959:9;14955:18;14947:26;;15019:9;15013:4;15009:20;15005:1;14994:9;14990:17;14983:47;15047:131;15173:4;15047:131;:::i;:::-;15039:139;;14766:419;;;:::o;15191:241::-;15331:34;15327:1;15319:6;15315:14;15308:58;15400:24;15395:2;15387:6;15383:15;15376:49;15191:241;:::o;15438:366::-;15580:3;15601:67;15665:2;15660:3;15601:67;:::i;:::-;15594:74;;15677:93;15766:3;15677:93;:::i;:::-;15795:2;15790:3;15786:12;15779:19;;15438:366;;;:::o;15810:419::-;15976:4;16014:2;16003:9;15999:18;15991:26;;16063:9;16057:4;16053:20;16049:1;16038:9;16034:17;16027:47;16091:131;16217:4;16091:131;:::i;:::-;16083:139;;15810:419;;;:::o;16235:180::-;16283:77;16280:1;16273:88;16380:4;16377:1;16370:15;16404:4;16401:1;16394:15;16421:180;16469:77;16466:1;16459:88;16566:4;16563:1;16556:15;16590:4;16587:1;16580:15;16607:233;16646:3;16669:24;16687:5;16669:24;:::i;:::-;16660:33;;16715:66;16708:5;16705:77;16702:103;;16785:18;;:::i;:::-;16702:103;16832:1;16825:5;16821:13;16814:20;;16607:233;;;:::o;16846:227::-;16986:34;16982:1;16974:6;16970:14;16963:58;17055:10;17050:2;17042:6;17038:15;17031:35;16846:227;:::o;17079:366::-;17221:3;17242:67;17306:2;17301:3;17242:67;:::i;:::-;17235:74;;17318:93;17407:3;17318:93;:::i;:::-;17436:2;17431:3;17427:12;17420:19;;17079:366;;;:::o;17451:419::-;17617:4;17655:2;17644:9;17640:18;17632:26;;17704:9;17698:4;17694:20;17690:1;17679:9;17675:17;17668:47;17732:131;17858:4;17732:131;:::i;:::-;17724:139;;17451:419;;;:::o;17876:305::-;17916:3;17935:20;17953:1;17935:20;:::i;:::-;17930:25;;17969:20;17987:1;17969:20;:::i;:::-;17964:25;;18123:1;18055:66;18051:74;18048:1;18045:81;18042:107;;;18129:18;;:::i;:::-;18042:107;18173:1;18170;18166:9;18159:16;;17876:305;;;;:::o;18187:251::-;18327:34;18323:1;18315:6;18311:14;18304:58;18396:34;18391:2;18383:6;18379:15;18372:59;18187:251;:::o;18444:366::-;18586:3;18607:67;18671:2;18666:3;18607:67;:::i;:::-;18600:74;;18683:93;18772:3;18683:93;:::i;:::-;18801:2;18796:3;18792:12;18785:19;;18444:366;;;:::o;18816:419::-;18982:4;19020:2;19009:9;19005:18;18997:26;;19069:9;19063:4;19059:20;19055:1;19044:9;19040:17;19033:47;19097:131;19223:4;19097:131;:::i;:::-;19089:139;;18816:419;;;:::o;19241:179::-;19381:31;19377:1;19369:6;19365:14;19358:55;19241:179;:::o;19426:366::-;19568:3;19589:67;19653:2;19648:3;19589:67;:::i;:::-;19582:74;;19665:93;19754:3;19665:93;:::i;:::-;19783:2;19778:3;19774:12;19767:19;;19426:366;;;:::o;19798:419::-;19964:4;20002:2;19991:9;19987:18;19979:26;;20051:9;20045:4;20041:20;20037:1;20026:9;20022:17;20015:47;20079:131;20205:4;20079:131;:::i;:::-;20071:139;;19798:419;;;:::o;20223:226::-;20363:34;20359:1;20351:6;20347:14;20340:58;20432:9;20427:2;20419:6;20415:15;20408:34;20223:226;:::o;20455:366::-;20597:3;20618:67;20682:2;20677:3;20618:67;:::i;:::-;20611:74;;20694:93;20783:3;20694:93;:::i;:::-;20812:2;20807:3;20803:12;20796:19;;20455:366;;;:::o;20827:419::-;20993:4;21031:2;21020:9;21016:18;21008:26;;21080:9;21074:4;21070:20;21066:1;21055:9;21051:17;21044:47;21108:131;21234:4;21108:131;:::i;:::-;21100:139;;20827:419;;;:::o;21252:176::-;21392:28;21388:1;21380:6;21376:14;21369:52;21252:176;:::o;21434:366::-;21576:3;21597:67;21661:2;21656:3;21597:67;:::i;:::-;21590:74;;21673:93;21762:3;21673:93;:::i;:::-;21791:2;21786:3;21782:12;21775:19;;21434:366;;;:::o;21806:419::-;21972:4;22010:2;21999:9;21995:18;21987:26;;22059:9;22053:4;22049:20;22045:1;22034:9;22030:17;22023:47;22087:131;22213:4;22087:131;:::i;:::-;22079:139;;21806:419;;;:::o;22231:178::-;22371:30;22367:1;22359:6;22355:14;22348:54;22231:178;:::o;22415:366::-;22557:3;22578:67;22642:2;22637:3;22578:67;:::i;:::-;22571:74;;22654:93;22743:3;22654:93;:::i;:::-;22772:2;22767:3;22763:12;22756:19;;22415:366;;;:::o;22787:419::-;22953:4;22991:2;22980:9;22976:18;22968:26;;23040:9;23034:4;23030:20;23026:1;23015:9;23011:17;23004:47;23068:131;23194:4;23068:131;:::i;:::-;23060:139;;22787:419;;;:::o;23212:143::-;23269:5;23300:6;23294:13;23285:22;;23316:33;23343:5;23316:33;:::i;:::-;23212:143;;;;:::o;23361:351::-;23431:6;23480:2;23468:9;23459:7;23455:23;23451:32;23448:119;;;23486:79;;:::i;:::-;23448:119;23606:1;23631:64;23687:7;23678:6;23667:9;23663:22;23631:64;:::i;:::-;23621:74;;23577:128;23361:351;;;;:::o;23718:332::-;23839:4;23877:2;23866:9;23862:18;23854:26;;23890:71;23958:1;23947:9;23943:17;23934:6;23890:71;:::i;:::-;23971:72;24039:2;24028:9;24024:18;24015:6;23971:72;:::i;:::-;23718:332;;;;;:::o;24056:137::-;24110:5;24141:6;24135:13;24126:22;;24157:30;24181:5;24157:30;:::i;:::-;24056:137;;;;:::o;24199:345::-;24266:6;24315:2;24303:9;24294:7;24290:23;24286:32;24283:119;;;24321:79;;:::i;:::-;24283:119;24441:1;24466:61;24519:7;24510:6;24499:9;24495:22;24466:61;:::i;:::-;24456:71;;24412:125;24199:345;;;;:::o;24550:173::-;24690:25;24686:1;24678:6;24674:14;24667:49;24550:173;:::o;24729:366::-;24871:3;24892:67;24956:2;24951:3;24892:67;:::i;:::-;24885:74;;24968:93;25057:3;24968:93;:::i;:::-;25086:2;25081:3;25077:12;25070:19;;24729:366;;;:::o;25101:419::-;25267:4;25305:2;25294:9;25290:18;25282:26;;25354:9;25348:4;25344:20;25340:1;25329:9;25325:17;25318:47;25382:131;25508:4;25382:131;:::i;:::-;25374:139;;25101:419;;;:::o;25526:244::-;25666:34;25662:1;25654:6;25650:14;25643:58;25735:27;25730:2;25722:6;25718:15;25711:52;25526:244;:::o;25776:366::-;25918:3;25939:67;26003:2;25998:3;25939:67;:::i;:::-;25932:74;;26015:93;26104:3;26015:93;:::i;:::-;26133:2;26128:3;26124:12;26117:19;;25776:366;;;:::o;26148:419::-;26314:4;26352:2;26341:9;26337:18;26329:26;;26401:9;26395:4;26391:20;26387:1;26376:9;26372:17;26365:47;26429:131;26555:4;26429:131;:::i;:::-;26421:139;;26148:419;;;:::o;26573:224::-;26713:34;26709:1;26701:6;26697:14;26690:58;26782:7;26777:2;26769:6;26765:15;26758:32;26573:224;:::o;26803:366::-;26945:3;26966:67;27030:2;27025:3;26966:67;:::i;:::-;26959:74;;27042:93;27131:3;27042:93;:::i;:::-;27160:2;27155:3;27151:12;27144:19;;26803:366;;;:::o;27175:419::-;27341:4;27379:2;27368:9;27364:18;27356:26;;27428:9;27422:4;27418:20;27414:1;27403:9;27399:17;27392:47;27456:131;27582:4;27456:131;:::i;:::-;27448:139;;27175:419;;;:::o;27600:348::-;27640:7;27663:20;27681:1;27663:20;:::i;:::-;27658:25;;27697:20;27715:1;27697:20;:::i;:::-;27692:25;;27885:1;27817:66;27813:74;27810:1;27807:81;27802:1;27795:9;27788:17;27784:105;27781:131;;;27892:18;;:::i;:::-;27781:131;27940:1;27937;27933:9;27922:20;;27600:348;;;;:::o;27954:180::-;28002:77;27999:1;27992:88;28099:4;28096:1;28089:15;28123:4;28120:1;28113:15;28140:185;28180:1;28197:20;28215:1;28197:20;:::i;:::-;28192:25;;28231:20;28249:1;28231:20;:::i;:::-;28226:25;;28270:1;28260:35;;28275:18;;:::i;:::-;28260:35;28317:1;28314;28310:9;28305:14;;28140:185;;;;:::o;28331:238::-;28471:34;28467:1;28459:6;28455:14;28448:58;28540:21;28535:2;28527:6;28523:15;28516:46;28331:238;:::o;28575:366::-;28717:3;28738:67;28802:2;28797:3;28738:67;:::i;:::-;28731:74;;28814:93;28903:3;28814:93;:::i;:::-;28932:2;28927:3;28923:12;28916:19;;28575:366;;;:::o;28947:419::-;29113:4;29151:2;29140:9;29136:18;29128:26;;29200:9;29194:4;29190:20;29186:1;29175:9;29171:17;29164:47;29228:131;29354:4;29228:131;:::i;:::-;29220:139;;28947:419;;;:::o;29372:237::-;29512:34;29508:1;29500:6;29496:14;29489:58;29581:20;29576:2;29568:6;29564:15;29557:45;29372:237;:::o;29615:366::-;29757:3;29778:67;29842:2;29837:3;29778:67;:::i;:::-;29771:74;;29854:93;29943:3;29854:93;:::i;:::-;29972:2;29967:3;29963:12;29956:19;;29615:366;;;:::o;29987:419::-;30153:4;30191:2;30180:9;30176:18;30168:26;;30240:9;30234:4;30230:20;30226:1;30215:9;30211:17;30204:47;30268:131;30394:4;30268:131;:::i;:::-;30260:139;;29987:419;;;:::o;30412:225::-;30552:34;30548:1;30540:6;30536:14;30529:58;30621:8;30616:2;30608:6;30604:15;30597:33;30412:225;:::o;30643:366::-;30785:3;30806:67;30870:2;30865:3;30806:67;:::i;:::-;30799:74;;30882:93;30971:3;30882:93;:::i;:::-;31000:2;30995:3;30991:12;30984:19;;30643:366;;;:::o;31015:419::-;31181:4;31219:2;31208:9;31204:18;31196:26;;31268:9;31262:4;31258:20;31254:1;31243:9;31239:17;31232:47;31296:131;31422:4;31296:131;:::i;:::-;31288:139;;31015:419;;;:::o;31440:147::-;31541:11;31578:3;31563:18;;31440:147;;;;:::o;31593:114::-;;:::o;31713:398::-;31872:3;31893:83;31974:1;31969:3;31893:83;:::i;:::-;31886:90;;31985:93;32074:3;31985:93;:::i;:::-;32103:1;32098:3;32094:11;32087:18;;31713:398;;;:::o;32117:379::-;32301:3;32323:147;32466:3;32323:147;:::i;:::-;32316:154;;32487:3;32480:10;;32117:379;;;:::o;32502:295::-;32642:34;32638:1;32630:6;32626:14;32619:58;32711:34;32706:2;32698:6;32694:15;32687:59;32780:9;32775:2;32767:6;32763:15;32756:34;32502:295;:::o;32803:366::-;32945:3;32966:67;33030:2;33025:3;32966:67;:::i;:::-;32959:74;;33042:93;33131:3;33042:93;:::i;:::-;33160:2;33155:3;33151:12;33144:19;;32803:366;;;:::o;33175:419::-;33341:4;33379:2;33368:9;33364:18;33356:26;;33428:9;33422:4;33418:20;33414:1;33403:9;33399:17;33392:47;33456:131;33582:4;33456:131;:::i;:::-;33448:139;;33175:419;;;:::o;33600:143::-;33657:5;33688:6;33682:13;33673:22;;33704:33;33731:5;33704:33;:::i;:::-;33600:143;;;;:::o;33749:351::-;33819:6;33868:2;33856:9;33847:7;33843:23;33839:32;33836:119;;;33874:79;;:::i;:::-;33836:119;33994:1;34019:64;34075:7;34066:6;34055:9;34051:22;34019:64;:::i;:::-;34009:74;;33965:128;33749:351;;;;:::o;34106:85::-;34151:7;34180:5;34169:16;;34106:85;;;:::o;34197:158::-;34255:9;34288:61;34306:42;34315:32;34341:5;34315:32;:::i;:::-;34306:42;:::i;:::-;34288:61;:::i;:::-;34275:74;;34197:158;;;:::o;34361:147::-;34456:45;34495:5;34456:45;:::i;:::-;34451:3;34444:58;34361:147;;:::o;34514:114::-;34581:6;34615:5;34609:12;34599:22;;34514:114;;;:::o;34634:184::-;34733:11;34767:6;34762:3;34755:19;34807:4;34802:3;34798:14;34783:29;;34634:184;;;;:::o;34824:132::-;34891:4;34914:3;34906:11;;34944:4;34939:3;34935:14;34927:22;;34824:132;;;:::o;34962:108::-;35039:24;35057:5;35039:24;:::i;:::-;35034:3;35027:37;34962:108;;:::o;35076:179::-;35145:10;35166:46;35208:3;35200:6;35166:46;:::i;:::-;35244:4;35239:3;35235:14;35221:28;;35076:179;;;;:::o;35261:113::-;35331:4;35363;35358:3;35354:14;35346:22;;35261:113;;;:::o;35410:732::-;35529:3;35558:54;35606:5;35558:54;:::i;:::-;35628:86;35707:6;35702:3;35628:86;:::i;:::-;35621:93;;35738:56;35788:5;35738:56;:::i;:::-;35817:7;35848:1;35833:284;35858:6;35855:1;35852:13;35833:284;;;35934:6;35928:13;35961:63;36020:3;36005:13;35961:63;:::i;:::-;35954:70;;36047:60;36100:6;36047:60;:::i;:::-;36037:70;;35893:224;35880:1;35877;35873:9;35868:14;;35833:284;;;35837:14;36133:3;36126:10;;35534:608;;;35410:732;;;;:::o;36148:720::-;36383:4;36421:3;36410:9;36406:19;36398:27;;36435:79;36511:1;36500:9;36496:17;36487:6;36435:79;:::i;:::-;36561:9;36555:4;36551:20;36546:2;36535:9;36531:18;36524:48;36589:108;36692:4;36683:6;36589:108;:::i;:::-;36581:116;;36707:72;36775:2;36764:9;36760:18;36751:6;36707:72;:::i;:::-;36789;36857:2;36846:9;36842:18;36833:6;36789:72;:::i;:::-;36148:720;;;;;;;:::o;36874:223::-;37014:34;37010:1;37002:6;36998:14;36991:58;37083:6;37078:2;37070:6;37066:15;37059:31;36874:223;:::o;37103:366::-;37245:3;37266:67;37330:2;37325:3;37266:67;:::i;:::-;37259:74;;37342:93;37431:3;37342:93;:::i;:::-;37460:2;37455:3;37451:12;37444:19;;37103:366;;;:::o;37475:419::-;37641:4;37679:2;37668:9;37664:18;37656:26;;37728:9;37722:4;37718:20;37714:1;37703:9;37699:17;37692:47;37756:131;37882:4;37756:131;:::i;:::-;37748:139;;37475:419;;;:::o;37900:221::-;38040:34;38036:1;38028:6;38024:14;38017:58;38109:4;38104:2;38096:6;38092:15;38085:29;37900:221;:::o;38127:366::-;38269:3;38290:67;38354:2;38349:3;38290:67;:::i;:::-;38283:74;;38366:93;38455:3;38366:93;:::i;:::-;38484:2;38479:3;38475:12;38468:19;;38127:366;;;:::o;38499:419::-;38665:4;38703:2;38692:9;38688:18;38680:26;;38752:9;38746:4;38742:20;38738:1;38727:9;38723:17;38716:47;38780:131;38906:4;38780:131;:::i;:::-;38772:139;;38499:419;;;:::o;38924:224::-;39064:34;39060:1;39052:6;39048:14;39041:58;39133:7;39128:2;39120:6;39116:15;39109:32;38924:224;:::o;39154:366::-;39296:3;39317:67;39381:2;39376:3;39317:67;:::i;:::-;39310:74;;39393:93;39482:3;39393:93;:::i;:::-;39511:2;39506:3;39502:12;39495:19;;39154:366;;;:::o;39526:419::-;39692:4;39730:2;39719:9;39715:18;39707:26;;39779:9;39773:4;39769:20;39765:1;39754:9;39750:17;39743:47;39807:131;39933:4;39807:131;:::i;:::-;39799:139;;39526:419;;;:::o;39951:222::-;40091:34;40087:1;40079:6;40075:14;40068:58;40160:5;40155:2;40147:6;40143:15;40136:30;39951:222;:::o;40179:366::-;40321:3;40342:67;40406:2;40401:3;40342:67;:::i;:::-;40335:74;;40418:93;40507:3;40418:93;:::i;:::-;40536:2;40531:3;40527:12;40520:19;;40179:366;;;:::o;40551:419::-;40717:4;40755:2;40744:9;40740:18;40732:26;;40804:9;40798:4;40794:20;40790:1;40779:9;40775:17;40768:47;40832:131;40958:4;40832:131;:::i;:::-;40824:139;;40551:419;;;:::o;40976:225::-;41116:34;41112:1;41104:6;41100:14;41093:58;41185:8;41180:2;41172:6;41168:15;41161:33;40976:225;:::o;41207:366::-;41349:3;41370:67;41434:2;41429:3;41370:67;:::i;:::-;41363:74;;41446:93;41535:3;41446:93;:::i;:::-;41564:2;41559:3;41555:12;41548:19;;41207:366;;;:::o;41579:419::-;41745:4;41783:2;41772:9;41768:18;41760:26;;41832:9;41826:4;41822:20;41818:1;41807:9;41803:17;41796:47;41860:131;41986:4;41860:131;:::i;:::-;41852:139;;41579:419;;;:::o;42004:179::-;42144:31;42140:1;42132:6;42128:14;42121:55;42004:179;:::o;42189:366::-;42331:3;42352:67;42416:2;42411:3;42352:67;:::i;:::-;42345:74;;42428:93;42517:3;42428:93;:::i;:::-;42546:2;42541:3;42537:12;42530:19;;42189:366;;;:::o;42561:419::-;42727:4;42765:2;42754:9;42750:18;42742:26;;42814:9;42808:4;42804:20;42800:1;42789:9;42785:17;42778:47;42842:131;42968:4;42842:131;:::i;:::-;42834:139;;42561:419;;;:::o;42986:172::-;43126:24;43122:1;43114:6;43110:14;43103:48;42986:172;:::o;43164:366::-;43306:3;43327:67;43391:2;43386:3;43327:67;:::i;:::-;43320:74;;43403:93;43492:3;43403:93;:::i;:::-;43521:2;43516:3;43512:12;43505:19;;43164:366;;;:::o;43536:419::-;43702:4;43740:2;43729:9;43725:18;43717:26;;43789:9;43783:4;43779:20;43775:1;43764:9;43760:17;43753:47;43817:131;43943:4;43817:131;:::i;:::-;43809:139;;43536:419;;;:::o;43961:249::-;44101:34;44097:1;44089:6;44085:14;44078:58;44170:32;44165:2;44157:6;44153:15;44146:57;43961:249;:::o;44216:366::-;44358:3;44379:67;44443:2;44438:3;44379:67;:::i;:::-;44372:74;;44455:93;44544:3;44455:93;:::i;:::-;44573:2;44568:3;44564:12;44557:19;;44216:366;;;:::o;44588:419::-;44754:4;44792:2;44781:9;44777:18;44769:26;;44841:9;44835:4;44831:20;44827:1;44816:9;44812:17;44805:47;44869:131;44995:4;44869:131;:::i;:::-;44861:139;;44588:419;;;:::o;45013:227::-;45153:34;45149:1;45141:6;45137:14;45130:58;45222:10;45217:2;45209:6;45205:15;45198:35;45013:227;:::o;45246:366::-;45388:3;45409:67;45473:2;45468:3;45409:67;:::i;:::-;45402:74;;45485:93;45574:3;45485:93;:::i;:::-;45603:2;45598:3;45594:12;45587:19;;45246:366;;;:::o;45618:419::-;45784:4;45822:2;45811:9;45807:18;45799:26;;45871:9;45865:4;45861:20;45857:1;45846:9;45842:17;45835:47;45899:131;46025:4;45899:131;:::i;:::-;45891:139;;45618:419;;;:::o;46043:174::-;46183:26;46179:1;46171:6;46167:14;46160:50;46043:174;:::o;46223:366::-;46365:3;46386:67;46450:2;46445:3;46386:67;:::i;:::-;46379:74;;46462:93;46551:3;46462:93;:::i;:::-;46580:2;46575:3;46571:12;46564:19;;46223:366;;;:::o;46595:419::-;46761:4;46799:2;46788:9;46784:18;46776:26;;46848:9;46842:4;46838:20;46834:1;46823:9;46819:17;46812:47;46876:131;47002:4;46876:131;:::i;:::-;46868:139;;46595:419;;;:::o;47020:222::-;47160:34;47156:1;47148:6;47144:14;47137:58;47229:5;47224:2;47216:6;47212:15;47205:30;47020:222;:::o;47248:366::-;47390:3;47411:67;47475:2;47470:3;47411:67;:::i;:::-;47404:74;;47487:93;47576:3;47487:93;:::i;:::-;47605:2;47600:3;47596:12;47589:19;;47248:366;;;:::o;47620:419::-;47786:4;47824:2;47813:9;47809:18;47801:26;;47873:9;47867:4;47863:20;47859:1;47848:9;47844:17;47837:47;47901:131;48027:4;47901:131;:::i;:::-;47893:139;;47620:419;;;:::o;48045:191::-;48085:4;48105:20;48123:1;48105:20;:::i;:::-;48100:25;;48139:20;48157:1;48139:20;:::i;:::-;48134:25;;48178:1;48175;48172:8;48169:34;;;48183:18;;:::i;:::-;48169:34;48228:1;48225;48221:9;48213:17;;48045:191;;;;:::o;48242:831::-;48505:4;48543:3;48532:9;48528:19;48520:27;;48557:71;48625:1;48614:9;48610:17;48601:6;48557:71;:::i;:::-;48638:80;48714:2;48703:9;48699:18;48690:6;48638:80;:::i;:::-;48765:9;48759:4;48755:20;48750:2;48739:9;48735:18;48728:48;48793:108;48896:4;48887:6;48793:108;:::i;:::-;48785:116;;48911:72;48979:2;48968:9;48964:18;48955:6;48911:72;:::i;:::-;48993:73;49061:3;49050:9;49046:19;49037:6;48993:73;:::i;:::-;48242:831;;;;;;;;:::o;49079:320::-;49194:4;49232:2;49221:9;49217:18;49209:26;;49245:71;49313:1;49302:9;49298:17;49289:6;49245:71;:::i;:::-;49326:66;49388:2;49377:9;49373:18;49364:6;49326:66;:::i;:::-;49079:320;;;;;:::o

Swarm Source

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