ETH Price: $3,248.73 (+3.71%)
 

Overview

Max Total Supply

1,000,000,000 CAPY

Holders

35

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.628090673240881711 CAPY

Value
$0.00
0x91d03a616d3799de7422e3549613db9271d1ec5e
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:
Capybara

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*

░█████╗░░█████╗░██████╗░██╗░░░██╗██████╗░░█████╗░██████╗░░█████╗░
██╔══██╗██╔══██╗██╔══██╗╚██╗░██╔╝██╔══██╗██╔══██╗██╔══██╗██╔══██╗
██║░░╚═╝███████║██████╔╝░╚████╔╝░██████╦╝███████║██████╔╝███████║
██║░░██╗██╔══██║██╔═══╝░░░╚██╔╝░░██╔══██╗██╔══██║██╔══██╗██╔══██║
╚█████╔╝██║░░██║██║░░░░░░░░██║░░░██████╦╝██║░░██║██║░░██║██║░░██║
░╚════╝░╚═╝░░╚═╝╚═╝░░░░░░░░╚═╝░░░╚═════╝░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝

Socials
Website: https://capybaratoken.com/
Telegram: https://t.me/capybaraeth
Twitter: https://twitter.com/capybarabaraeth

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

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

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

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

abstract 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() public 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;
    }
}

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) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, 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");

        _beforeTokenTransfer(sender, recipient, amount);

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

        _afterTokenTransfer(sender, recipient, amount);
    }

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

        _beforeTokenTransfer(address(0), account, amount);

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

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        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;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract Capybara is ERC20, Ownable {
    uint256 public marketingFeeOnBuy  = 5;
    uint256 public marketingFeeOnSell = 5;
    uint256 public deadBlocks = 0;
    bool public isTradingEnabled = false;
    uint256 private startBlock;
    bool public antibot = false;
    mapping(address => bool) public isBlacklisted;
    mapping(address => bool) public isWhitelisted;
    mapping (address => bool) public _isExcludedMaxTxn;
    mapping (address => bool) public _isExcludedMaxWallet;
    uint256 public maxTxn;
    uint256 public maxWallet;



    address public marketingWallet = 0x7333829c28acfA5619642A96F6D0F2F38C3c4B83;

    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapV2Pair;
    
    address private DEAD = 0x000000000000000000000000000000000000dEaD;

    bool    private swapping;
    uint256 public swapTokensAtAmount;

    mapping (address => bool) private _isExcludedFromFees;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event FeesUpdated(uint256 marketingFeeOnBuy, uint256 marketingFeeOnSell);
    event MarketingWalletChanged(address indexed newWallet);
    event SwapAndSendFee(uint256 tokensSwapped, uint256 bnbSend);
    event SwapTokensAtAmountChanged(uint256 newAmount);

    constructor () ERC20("Capybara", "CAPY") 
    {   
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair   = _uniswapV2Pair;

        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[DEAD] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[marketingWallet] = true;
        isWhitelisted[msg.sender] = true;
        _isExcludedMaxTxn[owner()] = true;
        _isExcludedMaxTxn[DEAD] = true;
        _isExcludedMaxTxn[address(this)] = true;
        _isExcludedMaxWallet[owner()] = true;
        _isExcludedMaxWallet[DEAD] = true;
        _isExcludedMaxWallet[address(this)] = true;
        maxTxn = 5000000000000000000000000;
        maxWallet = 20000000000000000000000000;
        
        _mint(owner(), 1 * 1000000000 * (10 ** 18));
        swapTokensAtAmount = totalSupply() / 5000;
    }

    receive() external payable {

  	}

    function claimStuckTokens(address token) external onlyOwner {
        require(token != address(this), "Owner cannot claim native tokens");
        if (token == address(0x0)) {
            payable(msg.sender).transfer(address(this).balance);
            return;
        }
        IERC20 ERC20token = IERC20(token);
        uint256 balance = ERC20token.balanceOf(address(this));
        ERC20token.transfer(msg.sender, balance);
    }
   function Rescue_BNB(uint256 amountPercentage) external onlyOwner {
        uint256 amountBNB = address(this).balance;
        payable(msg.sender).transfer((amountBNB * amountPercentage) / 100);
    }

    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

        function openTrade() public onlyOwner {
        require(!isTradingEnabled, "Trading is already enabled!");
        isTradingEnabled = true;
        startBlock = block.number;
    }


    function sendBNB(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function excludeFromFees(address account, bool excluded) external onlyOwner {
        require(_isExcludedFromFees[account] != excluded, "Account is already the value of 'excluded'");
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }
    function isExcludedMaxTxn(address account) public view returns(bool) {
        return _isExcludedMaxTxn[account];
    }
    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

     function excludeFromMaxwalletAndMaxtx(address wallet_address, bool ok) external onlyOwner {
        require(!_isExcludedMaxTxn[wallet_address], "Already excluded!");
        require(!_isExcludedMaxWallet[wallet_address], "Already excluded!");
        _isExcludedMaxTxn[wallet_address] = ok;
        _isExcludedMaxWallet[wallet_address] = ok;
     }

        function updateMaxAmount(uint256 newNum) external onlyOwner {
        require(newNum >= 5000000, "Can't set below 1mil");
        maxTxn = newNum * (10**18);
        }

 function updateMaxWallet(uint256 newNum) external onlyOwner {
        require(newNum >= 5000000, "Can't set  below 1mil");
        maxWallet = newNum * (10**18);

    }

    function setFees(uint256 _marketingFeeOnBuy, uint256 _marketingFeeOnSell) external onlyOwner {
        require(_marketingFeeOnBuy <= 5, "Marketing fee on buy cannot be more than 5%");
        require(_marketingFeeOnSell <= 5, "Marketing fee on sell cannot be more than 5%");
        marketingFeeOnBuy  = _marketingFeeOnBuy;
        marketingFeeOnSell = _marketingFeeOnSell;
        emit FeesUpdated(marketingFeeOnBuy, marketingFeeOnSell);
    }

    function changeMarketingWallet(address _marketingWallet) external onlyOwner {
        require(_marketingWallet != marketingWallet, "Marketing wallet is already that address");
        require(_marketingWallet != address(0), "Marketing wallet cannot be the zero address");
        require(!isContract(_marketingWallet), "Marketing wallet cannot be a contract");
        marketingWallet = _marketingWallet;
        _isExcludedFromFees[marketingWallet] = true;
        emit MarketingWalletChanged(marketingWallet);
    }

        function setisBlacklisted(address account, bool value) public onlyOwner {
        isBlacklisted[account] = value;
    }

        function setisWhitelisted(address account, bool value) public onlyOwner {
        isWhitelisted[account] = value;
    }

        function setAntibot(bool value) public onlyOwner {
        antibot = value;
    }

    function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner{
        require(newAmount > totalSupply() / 100000, "SwapTokensAtAmount must be greater than 0.001% of total supply");
        swapTokensAtAmount = newAmount;
        emit SwapTokensAtAmountChanged(newAmount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal  override { 
            if(!_isExcludedMaxTxn[from] && !_isExcludedMaxTxn[to] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            require(amount <= maxTxn, "Transfer amount exceeds the maxTxnTransactionAmount.");
            }
            if  (from == uniswapV2Pair  && !_isExcludedMaxWallet[to]) {
        require(amount + balanceOf(to) <= maxWallet, "Can't exceed maxWallet");
        }

        if (!isWhitelisted[from] && !isWhitelisted[to]) {
        require(isTradingEnabled, "Trading is disabled");
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!isBlacklisted[from] && !isBlacklisted[to], "Blacklisted address");

    
        if (antibot) {
                if (startBlock + deadBlocks >= block.number) {
                    isBlacklisted[to] = true;
                } else {
                    antibot = false;
                }
            }
        }
        
        if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        
        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if( canSwap &&
            !swapping &&
            to == uniswapV2Pair
        ) {
            swapping = true;
            
            swapAndSendFee(contractTokenBalance);

            swapping = false;
        }

        bool takeFee = !swapping;

        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;

        }


        if(takeFee) {
            uint256 fees;
            if(from == uniswapV2Pair) {
                fees = amount * marketingFeeOnBuy / 100;
            } else if (to == uniswapV2Pair) {
                fees = amount * marketingFeeOnSell / 100;

            } else {
                fees = 0;
            }
            amount -= fees;
            if(fees > 0) {
                super._transfer(from, address(this), fees);
            }
        }


        super._transfer(from, to, amount);
    }
    
    function swapAndSendFee(uint256 tokenAmount) private {
        uint256 initialBalance = address(this).balance;

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp);

        uint256 newBalance = address(this).balance - initialBalance;

        sendBNB(payable(marketingWallet), newBalance);

        emit SwapAndSendFee(tokenAmount, newBalance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketingFeeOnBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketingFeeOnSell","type":"uint256"}],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"MarketingWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SwapAndSendFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"SwapTokensAtAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"Rescue_BNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antibot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet_address","type":"address"},{"internalType":"bool","name":"ok","type":"bool"}],"name":"excludeFromMaxwalletAndMaxtx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedMaxTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setAntibot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeOnSell","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setisBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setisWhitelisted","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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526005600655600560075560006008556000600960006101000a81548160ff0219169083151502179055506000600b60006101000a81548160ff021916908315150217905550737333829c28acfa5619642a96f6d0f2f38c3c4b83601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000ee57600080fd5b506040518060400160405280600881526020017f43617079626172610000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f434150590000000000000000000000000000000000000000000000000000000081525081600390816200016c919062000f8f565b5080600490816200017e919062000f8f565b5050506000620001936200098660201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000299573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bf9190620010e0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000327573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034d9190620010e0565b6040518363ffffffff1660e01b81526004016200036c92919062001123565b6020604051808303816000875af11580156200038c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b29190620010e0565b905081601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200048b30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200098e60201b60201c565b600160176000620004a162000b5f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000620006ac62000b5f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000620007e562000b5f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506a0422ca8b0a00a4250000006010819055506a108b2a2c28029094000000601181905550620009596200094062000b5f60201b60201c565b6b033b2e3c9fd0803ce800000062000b8960201b60201c565b6113886200096c62000d0160201b60201c565b620009789190620011ae565b601681905550505062001402565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000a00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009f7906200126d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a699062001305565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000b52919062001338565b60405180910390a3505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000bfb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bf290620013a5565b60405180910390fd5b62000c0f6000838362000d0b60201b60201c565b806002600082825462000c239190620013c7565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000c7a9190620013c7565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000ce1919062001338565b60405180910390a362000cfd6000838362000d1060201b60201c565b5050565b6000600254905090565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000d9757607f821691505b60208210810362000dad5762000dac62000d4f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000e177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000dd8565b62000e23868362000dd8565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000e7062000e6a62000e648462000e3b565b62000e45565b62000e3b565b9050919050565b6000819050919050565b62000e8c8362000e4f565b62000ea462000e9b8262000e77565b84845462000de5565b825550505050565b600090565b62000ebb62000eac565b62000ec881848462000e81565b505050565b5b8181101562000ef05762000ee460008262000eb1565b60018101905062000ece565b5050565b601f82111562000f3f5762000f098162000db3565b62000f148462000dc8565b8101602085101562000f24578190505b62000f3c62000f338562000dc8565b83018262000ecd565b50505b505050565b600082821c905092915050565b600062000f646000198460080262000f44565b1980831691505092915050565b600062000f7f838362000f51565b9150826002028217905092915050565b62000f9a8262000d15565b67ffffffffffffffff81111562000fb65762000fb562000d20565b5b62000fc2825462000d7e565b62000fcf82828562000ef4565b600060209050601f83116001811462001007576000841562000ff2578287015190505b62000ffe858262000f71565b8655506200106e565b601f198416620010178662000db3565b60005b8281101562001041578489015182556001820191506020850194506020810190506200101a565b868310156200106157848901516200105d601f89168262000f51565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620010a8826200107b565b9050919050565b620010ba816200109b565b8114620010c657600080fd5b50565b600081519050620010da81620010af565b92915050565b600060208284031215620010f957620010f862001076565b5b60006200110984828501620010c9565b91505092915050565b6200111d816200109b565b82525050565b60006040820190506200113a600083018562001112565b62001149602083018462001112565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620011bb8262000e3b565b9150620011c88362000e3b565b925082620011db57620011da62001150565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062001255602483620011e6565b91506200126282620011f7565b604082019050919050565b60006020820190508181036000830152620012888162001246565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000620012ed602283620011e6565b9150620012fa826200128f565b604082019050919050565b600060208201905081810360008301526200132081620012de565b9050919050565b620013328162000e3b565b82525050565b60006020820190506200134f600083018462001327565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200138d601f83620011e6565b91506200139a8262001355565b602082019050919050565b60006020820190508181036000830152620013c0816200137e565b9050919050565b6000620013d48262000e3b565b9150620013e18362000e3b565b9250828201905080821115620013fc57620013fb6200117f565b5b92915050565b614fd280620014126000396000f3fe60806040526004361061026b5760003560e01c80638b7c969c11610144578063dc4c7dbc116100b6578063f2fde38b1161007a578063f2fde38b14610987578063f8b45b05146109b0578063f9d0831a146109db578063fabb0b4f14610a04578063fb201b1d14610a2f578063fe575a8714610a4657610272565b8063dc4c7dbc146108a0578063dd62ed3e146108cb578063e2f4560514610908578063e71804cd14610933578063e8792c1a1461095c57610272565b8063a9059cbb11610108578063a9059cbb14610782578063afa4f3b2146107bf578063bb85c6d1146107e8578063c024666814610811578063d5f547f51461083a578063d9c81c571461086357610272565b80638b7c969c146106755780638da5cb5b146106b257806391c756f7146106dd57806395d89b411461071a578063a457c2d71461074557610272565b8063313ce567116101dd5780635fc2e596116101a15780635fc2e5961461057957806361588890146105a457806370a08231146105cd578063715018a61461060a57806375f0a87414610621578063797259841461064c57610272565b8063313ce5671461046c57806339509351146104975780633af32abf146104d457806349bd5a5e146105115780634fbee1931461053c57610272565b8063106b5da11161022f578063106b5da11461035c5780631694505e1461038557806318160ddd146103b05780631c499ab0146103db57806323b872dd14610404578063305c4c801461044157610272565b80630599a6fb14610277578063064a59d0146102a057806306fdde03146102cb578063095ea7b3146102f65780630b78f9c01461033357610272565b3661027257005b600080fd5b34801561028357600080fd5b5061029e60048036038101906102999190613919565b610a83565b005b3480156102ac57600080fd5b506102b5610ce6565b6040516102c29190613968565b60405180910390f35b3480156102d757600080fd5b506102e0610cf9565b6040516102ed9190613a13565b60405180910390f35b34801561030257600080fd5b5061031d60048036038101906103189190613a6b565b610d8b565b60405161032a9190613968565b60405180910390f35b34801561033f57600080fd5b5061035a60048036038101906103559190613aab565b610da9565b005b34801561036857600080fd5b50610383600480360381019061037e9190613aeb565b610f17565b005b34801561039157600080fd5b5061039a611011565b6040516103a79190613b77565b60405180910390f35b3480156103bc57600080fd5b506103c5611037565b6040516103d29190613ba1565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd9190613aeb565b611041565b005b34801561041057600080fd5b5061042b60048036038101906104269190613bbc565b61113b565b6040516104389190613968565b60405180910390f35b34801561044d57600080fd5b5061045661125a565b6040516104639190613968565b60405180910390f35b34801561047857600080fd5b5061048161126d565b60405161048e9190613c2b565b60405180910390f35b3480156104a357600080fd5b506104be60048036038101906104b99190613a6b565b611276565b6040516104cb9190613968565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f69190613c46565b611322565b6040516105089190613968565b60405180910390f35b34801561051d57600080fd5b50610526611342565b6040516105339190613c82565b60405180910390f35b34801561054857600080fd5b50610563600480360381019061055e9190613c46565b611368565b6040516105709190613968565b60405180910390f35b34801561058557600080fd5b5061058e6113be565b60405161059b9190613ba1565b60405180910390f35b3480156105b057600080fd5b506105cb60048036038101906105c69190613919565b6113c4565b005b3480156105d957600080fd5b506105f460048036038101906105ef9190613c46565b6114b6565b6040516106019190613ba1565b60405180910390f35b34801561061657600080fd5b5061061f6114fe565b005b34801561062d57600080fd5b50610636611656565b6040516106439190613c82565b60405180910390f35b34801561065857600080fd5b50610673600480360381019061066e9190613aeb565b61167c565b005b34801561068157600080fd5b5061069c60048036038101906106979190613c46565b61177a565b6040516106a99190613968565b60405180910390f35b3480156106be57600080fd5b506106c761179a565b6040516106d49190613c82565b60405180910390f35b3480156106e957600080fd5b5061070460048036038101906106ff9190613c46565b6117c4565b6040516107119190613968565b60405180910390f35b34801561072657600080fd5b5061072f61181a565b60405161073c9190613a13565b60405180910390f35b34801561075157600080fd5b5061076c60048036038101906107679190613a6b565b6118ac565b6040516107799190613968565b60405180910390f35b34801561078e57600080fd5b506107a960048036038101906107a49190613a6b565b611997565b6040516107b69190613968565b60405180910390f35b3480156107cb57600080fd5b506107e660048036038101906107e19190613aeb565b6119b5565b005b3480156107f457600080fd5b5061080f600480360381019061080a9190613c46565b611ae4565b005b34801561081d57600080fd5b5061083860048036038101906108339190613919565b611de6565b005b34801561084657600080fd5b50610861600480360381019061085c9190613919565b611fb8565b005b34801561086f57600080fd5b5061088a60048036038101906108859190613c46565b6120aa565b6040516108979190613968565b60405180910390f35b3480156108ac57600080fd5b506108b56120ca565b6040516108c29190613ba1565b60405180910390f35b3480156108d757600080fd5b506108f260048036038101906108ed9190613c9d565b6120d0565b6040516108ff9190613ba1565b60405180910390f35b34801561091457600080fd5b5061091d612157565b60405161092a9190613ba1565b60405180910390f35b34801561093f57600080fd5b5061095a60048036038101906109559190613cdd565b61215d565b005b34801561096857600080fd5b50610971612211565b60405161097e9190613ba1565b60405180910390f35b34801561099357600080fd5b506109ae60048036038101906109a99190613c46565b612217565b005b3480156109bc57600080fd5b506109c56123dd565b6040516109d29190613ba1565b60405180910390f35b3480156109e757600080fd5b50610a0260048036038101906109fd9190613c46565b6123e3565b005b348015610a1057600080fd5b50610a19612670565b604051610a269190613ba1565b60405180910390f35b348015610a3b57600080fd5b50610a44612676565b005b348015610a5257600080fd5b50610a6d6004803603810190610a689190613c46565b612781565b604051610a7a9190613968565b60405180910390f35b610a8b6127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1190613d56565b60405180910390fd5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9e90613dc2565b60405180910390fd5b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2b90613dc2565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600960009054906101000a900460ff1681565b606060038054610d0890613e11565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3490613e11565b8015610d815780601f10610d5657610100808354040283529160200191610d81565b820191906000526020600020905b815481529060010190602001808311610d6457829003601f168201915b5050505050905090565b6000610d9f610d986127a1565b84846127a9565b6001905092915050565b610db16127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3790613d56565b60405180910390fd5b6005821115610e84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7b90613eb4565b60405180910390fd5b6005811115610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf90613f46565b60405180910390fd5b81600681905550806007819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a1600654600754604051610f0b929190613f66565b60405180910390a15050565b610f1f6127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa590613d56565b60405180910390fd5b624c4b40811015610ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610feb90613fdb565b60405180910390fd5b670de0b6b3a764000081611008919061402a565b60108190555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6110496127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cf90613d56565b60405180910390fd5b624c4b4081101561111e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611115906140b8565b60405180910390fd5b670de0b6b3a764000081611132919061402a565b60118190555050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111876127a1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611243578281101561122e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112259061414a565b60405180910390fd5b6112428561123a6127a1565b8584036127a9565b5b61124e858585612972565b60019150509392505050565b600b60009054906101000a900460ff1681565b60006012905090565b60006113186112836127a1565b8484600160006112916127a1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611313919061416a565b6127a9565b6001905092915050565b600d6020528060005260406000206000915054906101000a900460ff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60065481565b6113cc6127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461145b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145290613d56565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115066127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158c90613d56565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116846127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170a90613d56565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc60648484611740919061402a565b61174a91906141cd565b9081150290604051600060405180830381858888f19350505050158015611775573d6000803e3d6000fd5b505050565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60606004805461182990613e11565b80601f016020809104026020016040519081016040528092919081815260200182805461185590613e11565b80156118a25780601f10611877576101008083540402835291602001916118a2565b820191906000526020600020905b81548152906001019060200180831161188557829003601f168201915b5050505050905090565b600080600160006118bb6127a1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196f90614270565b60405180910390fd5b61198c6119836127a1565b858584036127a9565b600191505092915050565b60006119ab6119a46127a1565b8484612972565b6001905092915050565b6119bd6127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4390613d56565b60405180910390fd5b620186a0611a58611037565b611a6291906141cd565b8111611aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9a90614302565b60405180910390fd5b806016819055507fcba17309eff0b14bb89cad72aef8b308a23d698dfff957e2255d17bbc03620bd81604051611ad99190613ba1565b60405180910390a150565b611aec6127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7290613d56565b60405180910390fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0290614394565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7190614426565b60405180910390fd5b611c838161324c565b15611cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cba906144b8565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160176000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b60405160405180910390a250565b611dee6127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7490613d56565b60405180910390fd5b801515601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f069061454a565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611fac9190613968565b60405180910390a25050565b611fc06127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461204f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204690613d56565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f6020528060005260406000206000915054906101000a900460ff1681565b60075481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60165481565b6121656127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121eb90613d56565b60405180910390fd5b80600b60006101000a81548160ff02191690831515021790555050565b60105481565b61221f6127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a590613d56565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361231d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612314906145dc565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b6123eb6127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461247a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247190613d56565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124df90614648565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612568573373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612562573d6000803e3d6000fd5b5061266d565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016125a89190613c82565b602060405180830381865afa1580156125c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e9919061467d565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016126269291906146aa565b6020604051808303816000875af1158015612645573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266991906146e8565b5050505b50565b60085481565b61267e6127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461270d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270490613d56565b60405180910390fd5b600960009054906101000a900460ff161561275d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275490614761565b60405180910390fd5b6001600960006101000a81548160ff02191690831515021790555043600a81905550565b600c6020528060005260406000206000915054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280f906147f3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287e90614885565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129659190613ba1565b60405180910390a3505050565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612a165750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612a6c5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ac25750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b0d57601054811115612b0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0390614917565b60405180910390fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612bb45750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c1257601154612bc5836114b6565b82612bd0919061416a565b1115612c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0890614983565b60405180910390fd5b5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612cb65750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f7157600960009054906101000a900460ff16612d0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d01906149ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7090614a81565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ddf90614b13565b60405180910390fd5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612e8c5750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec290614b7f565b60405180910390fd5b600b60009054906101000a900460ff1615612f705743600854600a54612ef1919061416a565b10612f53576001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612f6f565b6000600b60006101000a81548160ff0219169083151502179055505b5b5b60008103612f8a57612f858383600061326f565b613247565b6000612f95306114b6565b905060006016548210159050808015612fbb5750601560149054906101000a900460ff16155b80156130145750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15613059576001601560146101000a81548160ff02191690831515021790555061303d826134ee565b6000601560146101000a81548160ff0219169083151502179055505b6000601560149054906101000a900460ff16159050601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061310f5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561311957600090505b8015613238576000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff160361319757606460065486613186919061402a565b61319091906141cd565b9050613213565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361320d576064600754866131fc919061402a565b61320691906141cd565b9050613212565b600090505b5b808561321f9190614b9f565b945060008111156132365761323587308361326f565b5b505b61324386868661326f565b5050505b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036132de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132d590614a81565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361334d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334490614b13565b60405180910390fd5b613358838383613780565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156133de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133d590614c45565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613471919061416a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134d59190613ba1565b60405180910390a36134e8848484613785565b50505050565b60004790506000600267ffffffffffffffff8111156135105761350f614c65565b5b60405190808252806020026020018201604052801561353e5781602001602082028036833780820191505090505b509050308160008151811061355657613555614c94565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136219190614cd8565b8160018151811061363557613634614c94565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b81526004016136d3959493929190614dfe565b600060405180830381600087803b1580156136ed57600080fd5b505af1158015613701573d6000803e3d6000fd5b50505050600082476137139190614b9f565b9050613741601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261378a565b7f54c5e193a68e36b996e0c85b164c5953625d951c488fbad0e67aa32e1c45307b8482604051613772929190613f66565b60405180910390a150505050565b505050565b505050565b804710156137cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137c490614ea4565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516137f390614ef5565b60006040518083038185875af1925050503d8060008114613830576040519150601f19603f3d011682016040523d82523d6000602084013e613835565b606091505b5050905080613879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161387090614f7c565b60405180910390fd5b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006138ae82613883565b9050919050565b6138be816138a3565b81146138c957600080fd5b50565b6000813590506138db816138b5565b92915050565b60008115159050919050565b6138f6816138e1565b811461390157600080fd5b50565b600081359050613913816138ed565b92915050565b600080604083850312156139305761392f61387e565b5b600061393e858286016138cc565b925050602061394f85828601613904565b9150509250929050565b613962816138e1565b82525050565b600060208201905061397d6000830184613959565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156139bd5780820151818401526020810190506139a2565b60008484015250505050565b6000601f19601f8301169050919050565b60006139e582613983565b6139ef818561398e565b93506139ff81856020860161399f565b613a08816139c9565b840191505092915050565b60006020820190508181036000830152613a2d81846139da565b905092915050565b6000819050919050565b613a4881613a35565b8114613a5357600080fd5b50565b600081359050613a6581613a3f565b92915050565b60008060408385031215613a8257613a8161387e565b5b6000613a90858286016138cc565b9250506020613aa185828601613a56565b9150509250929050565b60008060408385031215613ac257613ac161387e565b5b6000613ad085828601613a56565b9250506020613ae185828601613a56565b9150509250929050565b600060208284031215613b0157613b0061387e565b5b6000613b0f84828501613a56565b91505092915050565b6000819050919050565b6000613b3d613b38613b3384613883565b613b18565b613883565b9050919050565b6000613b4f82613b22565b9050919050565b6000613b6182613b44565b9050919050565b613b7181613b56565b82525050565b6000602082019050613b8c6000830184613b68565b92915050565b613b9b81613a35565b82525050565b6000602082019050613bb66000830184613b92565b92915050565b600080600060608486031215613bd557613bd461387e565b5b6000613be3868287016138cc565b9350506020613bf4868287016138cc565b9250506040613c0586828701613a56565b9150509250925092565b600060ff82169050919050565b613c2581613c0f565b82525050565b6000602082019050613c406000830184613c1c565b92915050565b600060208284031215613c5c57613c5b61387e565b5b6000613c6a848285016138cc565b91505092915050565b613c7c816138a3565b82525050565b6000602082019050613c976000830184613c73565b92915050565b60008060408385031215613cb457613cb361387e565b5b6000613cc2858286016138cc565b9250506020613cd3858286016138cc565b9150509250929050565b600060208284031215613cf357613cf261387e565b5b6000613d0184828501613904565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613d4060208361398e565b9150613d4b82613d0a565b602082019050919050565b60006020820190508181036000830152613d6f81613d33565b9050919050565b7f416c7265616479206578636c7564656421000000000000000000000000000000600082015250565b6000613dac60118361398e565b9150613db782613d76565b602082019050919050565b60006020820190508181036000830152613ddb81613d9f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613e2957607f821691505b602082108103613e3c57613e3b613de2565b5b50919050565b7f4d61726b6574696e6720666565206f6e206275792063616e6e6f74206265206d60008201527f6f7265207468616e203525000000000000000000000000000000000000000000602082015250565b6000613e9e602b8361398e565b9150613ea982613e42565b604082019050919050565b60006020820190508181036000830152613ecd81613e91565b9050919050565b7f4d61726b6574696e6720666565206f6e2073656c6c2063616e6e6f742062652060008201527f6d6f7265207468616e2035250000000000000000000000000000000000000000602082015250565b6000613f30602c8361398e565b9150613f3b82613ed4565b604082019050919050565b60006020820190508181036000830152613f5f81613f23565b9050919050565b6000604082019050613f7b6000830185613b92565b613f886020830184613b92565b9392505050565b7f43616e2774207365742062656c6f7720316d696c000000000000000000000000600082015250565b6000613fc560148361398e565b9150613fd082613f8f565b602082019050919050565b60006020820190508181036000830152613ff481613fb8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061403582613a35565b915061404083613a35565b925082820261404e81613a35565b9150828204841483151761406557614064613ffb565b5b5092915050565b7f43616e277420736574202062656c6f7720316d696c0000000000000000000000600082015250565b60006140a260158361398e565b91506140ad8261406c565b602082019050919050565b600060208201905081810360008301526140d181614095565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061413460288361398e565b915061413f826140d8565b604082019050919050565b6000602082019050818103600083015261416381614127565b9050919050565b600061417582613a35565b915061418083613a35565b925082820190508082111561419857614197613ffb565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006141d882613a35565b91506141e383613a35565b9250826141f3576141f261419e565b5b828204905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061425a60258361398e565b9150614265826141fe565b604082019050919050565b600060208201905081810360008301526142898161424d565b9050919050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e30303125206f6620746f74616c20737570706c790000602082015250565b60006142ec603e8361398e565b91506142f782614290565b604082019050919050565b6000602082019050818103600083015261431b816142df565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b600061437e60288361398e565b915061438982614322565b604082019050919050565b600060208201905081810360008301526143ad81614371565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000614410602b8361398e565b915061441b826143b4565b604082019050919050565b6000602082019050818103600083015261443f81614403565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f74206265206120636f6e60008201527f7472616374000000000000000000000000000000000000000000000000000000602082015250565b60006144a260258361398e565b91506144ad82614446565b604082019050919050565b600060208201905081810360008301526144d181614495565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000614534602a8361398e565b915061453f826144d8565b604082019050919050565b6000602082019050818103600083015261456381614527565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006145c660268361398e565b91506145d18261456a565b604082019050919050565b600060208201905081810360008301526145f5816145b9565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e73600082015250565b600061463260208361398e565b915061463d826145fc565b602082019050919050565b6000602082019050818103600083015261466181614625565b9050919050565b60008151905061467781613a3f565b92915050565b6000602082840312156146935761469261387e565b5b60006146a184828501614668565b91505092915050565b60006040820190506146bf6000830185613c73565b6146cc6020830184613b92565b9392505050565b6000815190506146e2816138ed565b92915050565b6000602082840312156146fe576146fd61387e565b5b600061470c848285016146d3565b91505092915050565b7f54726164696e6720697320616c726561647920656e61626c6564210000000000600082015250565b600061474b601b8361398e565b915061475682614715565b602082019050919050565b6000602082019050818103600083015261477a8161473e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006147dd60248361398e565b91506147e882614781565b604082019050919050565b6000602082019050818103600083015261480c816147d0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061486f60228361398e565b915061487a82614813565b604082019050919050565b6000602082019050818103600083015261489e81614862565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f786e5472616e73616374696f6e416d6f756e742e000000000000000000000000602082015250565b600061490160348361398e565b915061490c826148a5565b604082019050919050565b60006020820190508181036000830152614930816148f4565b9050919050565b7f43616e277420657863656564206d617857616c6c657400000000000000000000600082015250565b600061496d60168361398e565b915061497882614937565b602082019050919050565b6000602082019050818103600083015261499c81614960565b9050919050565b7f54726164696e672069732064697361626c656400000000000000000000000000600082015250565b60006149d960138361398e565b91506149e4826149a3565b602082019050919050565b60006020820190508181036000830152614a08816149cc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614a6b60258361398e565b9150614a7682614a0f565b604082019050919050565b60006020820190508181036000830152614a9a81614a5e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614afd60238361398e565b9150614b0882614aa1565b604082019050919050565b60006020820190508181036000830152614b2c81614af0565b9050919050565b7f426c61636b6c6973746564206164647265737300000000000000000000000000600082015250565b6000614b6960138361398e565b9150614b7482614b33565b602082019050919050565b60006020820190508181036000830152614b9881614b5c565b9050919050565b6000614baa82613a35565b9150614bb583613a35565b9250828203905081811115614bcd57614bcc613ffb565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614c2f60268361398e565b9150614c3a82614bd3565b604082019050919050565b60006020820190508181036000830152614c5e81614c22565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614cd2816138b5565b92915050565b600060208284031215614cee57614ced61387e565b5b6000614cfc84828501614cc3565b91505092915050565b6000819050919050565b6000614d2a614d25614d2084614d05565b613b18565b613a35565b9050919050565b614d3a81614d0f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614d75816138a3565b82525050565b6000614d878383614d6c565b60208301905092915050565b6000602082019050919050565b6000614dab82614d40565b614db58185614d4b565b9350614dc083614d5c565b8060005b83811015614df1578151614dd88882614d7b565b9750614de383614d93565b925050600181019050614dc4565b5085935050505092915050565b600060a082019050614e136000830188613b92565b614e206020830187614d31565b8181036040830152614e328186614da0565b9050614e416060830185613c73565b614e4e6080830184613b92565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614e8e601d8361398e565b9150614e9982614e58565b602082019050919050565b60006020820190508181036000830152614ebd81614e81565b9050919050565b600081905092915050565b50565b6000614edf600083614ec4565b9150614eea82614ecf565b600082019050919050565b6000614f0082614ed2565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614f66603a8361398e565b9150614f7182614f0a565b604082019050919050565b60006020820190508181036000830152614f9581614f59565b905091905056fea264697066735822122067cc0cdc5592d158ed847e13cb67d7751cce23c2a0124e1f74f1a9ce568552e164736f6c63430008110033

Deployed Bytecode

0x60806040526004361061026b5760003560e01c80638b7c969c11610144578063dc4c7dbc116100b6578063f2fde38b1161007a578063f2fde38b14610987578063f8b45b05146109b0578063f9d0831a146109db578063fabb0b4f14610a04578063fb201b1d14610a2f578063fe575a8714610a4657610272565b8063dc4c7dbc146108a0578063dd62ed3e146108cb578063e2f4560514610908578063e71804cd14610933578063e8792c1a1461095c57610272565b8063a9059cbb11610108578063a9059cbb14610782578063afa4f3b2146107bf578063bb85c6d1146107e8578063c024666814610811578063d5f547f51461083a578063d9c81c571461086357610272565b80638b7c969c146106755780638da5cb5b146106b257806391c756f7146106dd57806395d89b411461071a578063a457c2d71461074557610272565b8063313ce567116101dd5780635fc2e596116101a15780635fc2e5961461057957806361588890146105a457806370a08231146105cd578063715018a61461060a57806375f0a87414610621578063797259841461064c57610272565b8063313ce5671461046c57806339509351146104975780633af32abf146104d457806349bd5a5e146105115780634fbee1931461053c57610272565b8063106b5da11161022f578063106b5da11461035c5780631694505e1461038557806318160ddd146103b05780631c499ab0146103db57806323b872dd14610404578063305c4c801461044157610272565b80630599a6fb14610277578063064a59d0146102a057806306fdde03146102cb578063095ea7b3146102f65780630b78f9c01461033357610272565b3661027257005b600080fd5b34801561028357600080fd5b5061029e60048036038101906102999190613919565b610a83565b005b3480156102ac57600080fd5b506102b5610ce6565b6040516102c29190613968565b60405180910390f35b3480156102d757600080fd5b506102e0610cf9565b6040516102ed9190613a13565b60405180910390f35b34801561030257600080fd5b5061031d60048036038101906103189190613a6b565b610d8b565b60405161032a9190613968565b60405180910390f35b34801561033f57600080fd5b5061035a60048036038101906103559190613aab565b610da9565b005b34801561036857600080fd5b50610383600480360381019061037e9190613aeb565b610f17565b005b34801561039157600080fd5b5061039a611011565b6040516103a79190613b77565b60405180910390f35b3480156103bc57600080fd5b506103c5611037565b6040516103d29190613ba1565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd9190613aeb565b611041565b005b34801561041057600080fd5b5061042b60048036038101906104269190613bbc565b61113b565b6040516104389190613968565b60405180910390f35b34801561044d57600080fd5b5061045661125a565b6040516104639190613968565b60405180910390f35b34801561047857600080fd5b5061048161126d565b60405161048e9190613c2b565b60405180910390f35b3480156104a357600080fd5b506104be60048036038101906104b99190613a6b565b611276565b6040516104cb9190613968565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f69190613c46565b611322565b6040516105089190613968565b60405180910390f35b34801561051d57600080fd5b50610526611342565b6040516105339190613c82565b60405180910390f35b34801561054857600080fd5b50610563600480360381019061055e9190613c46565b611368565b6040516105709190613968565b60405180910390f35b34801561058557600080fd5b5061058e6113be565b60405161059b9190613ba1565b60405180910390f35b3480156105b057600080fd5b506105cb60048036038101906105c69190613919565b6113c4565b005b3480156105d957600080fd5b506105f460048036038101906105ef9190613c46565b6114b6565b6040516106019190613ba1565b60405180910390f35b34801561061657600080fd5b5061061f6114fe565b005b34801561062d57600080fd5b50610636611656565b6040516106439190613c82565b60405180910390f35b34801561065857600080fd5b50610673600480360381019061066e9190613aeb565b61167c565b005b34801561068157600080fd5b5061069c60048036038101906106979190613c46565b61177a565b6040516106a99190613968565b60405180910390f35b3480156106be57600080fd5b506106c761179a565b6040516106d49190613c82565b60405180910390f35b3480156106e957600080fd5b5061070460048036038101906106ff9190613c46565b6117c4565b6040516107119190613968565b60405180910390f35b34801561072657600080fd5b5061072f61181a565b60405161073c9190613a13565b60405180910390f35b34801561075157600080fd5b5061076c60048036038101906107679190613a6b565b6118ac565b6040516107799190613968565b60405180910390f35b34801561078e57600080fd5b506107a960048036038101906107a49190613a6b565b611997565b6040516107b69190613968565b60405180910390f35b3480156107cb57600080fd5b506107e660048036038101906107e19190613aeb565b6119b5565b005b3480156107f457600080fd5b5061080f600480360381019061080a9190613c46565b611ae4565b005b34801561081d57600080fd5b5061083860048036038101906108339190613919565b611de6565b005b34801561084657600080fd5b50610861600480360381019061085c9190613919565b611fb8565b005b34801561086f57600080fd5b5061088a60048036038101906108859190613c46565b6120aa565b6040516108979190613968565b60405180910390f35b3480156108ac57600080fd5b506108b56120ca565b6040516108c29190613ba1565b60405180910390f35b3480156108d757600080fd5b506108f260048036038101906108ed9190613c9d565b6120d0565b6040516108ff9190613ba1565b60405180910390f35b34801561091457600080fd5b5061091d612157565b60405161092a9190613ba1565b60405180910390f35b34801561093f57600080fd5b5061095a60048036038101906109559190613cdd565b61215d565b005b34801561096857600080fd5b50610971612211565b60405161097e9190613ba1565b60405180910390f35b34801561099357600080fd5b506109ae60048036038101906109a99190613c46565b612217565b005b3480156109bc57600080fd5b506109c56123dd565b6040516109d29190613ba1565b60405180910390f35b3480156109e757600080fd5b50610a0260048036038101906109fd9190613c46565b6123e3565b005b348015610a1057600080fd5b50610a19612670565b604051610a269190613ba1565b60405180910390f35b348015610a3b57600080fd5b50610a44612676565b005b348015610a5257600080fd5b50610a6d6004803603810190610a689190613c46565b612781565b604051610a7a9190613968565b60405180910390f35b610a8b6127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1190613d56565b60405180910390fd5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9e90613dc2565b60405180910390fd5b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2b90613dc2565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600960009054906101000a900460ff1681565b606060038054610d0890613e11565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3490613e11565b8015610d815780601f10610d5657610100808354040283529160200191610d81565b820191906000526020600020905b815481529060010190602001808311610d6457829003601f168201915b5050505050905090565b6000610d9f610d986127a1565b84846127a9565b6001905092915050565b610db16127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3790613d56565b60405180910390fd5b6005821115610e84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7b90613eb4565b60405180910390fd5b6005811115610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf90613f46565b60405180910390fd5b81600681905550806007819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a1600654600754604051610f0b929190613f66565b60405180910390a15050565b610f1f6127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa590613d56565b60405180910390fd5b624c4b40811015610ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610feb90613fdb565b60405180910390fd5b670de0b6b3a764000081611008919061402a565b60108190555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6110496127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cf90613d56565b60405180910390fd5b624c4b4081101561111e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611115906140b8565b60405180910390fd5b670de0b6b3a764000081611132919061402a565b60118190555050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111876127a1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611243578281101561122e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112259061414a565b60405180910390fd5b6112428561123a6127a1565b8584036127a9565b5b61124e858585612972565b60019150509392505050565b600b60009054906101000a900460ff1681565b60006012905090565b60006113186112836127a1565b8484600160006112916127a1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611313919061416a565b6127a9565b6001905092915050565b600d6020528060005260406000206000915054906101000a900460ff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60065481565b6113cc6127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461145b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145290613d56565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115066127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158c90613d56565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116846127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170a90613d56565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc60648484611740919061402a565b61174a91906141cd565b9081150290604051600060405180830381858888f19350505050158015611775573d6000803e3d6000fd5b505050565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60606004805461182990613e11565b80601f016020809104026020016040519081016040528092919081815260200182805461185590613e11565b80156118a25780601f10611877576101008083540402835291602001916118a2565b820191906000526020600020905b81548152906001019060200180831161188557829003601f168201915b5050505050905090565b600080600160006118bb6127a1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196f90614270565b60405180910390fd5b61198c6119836127a1565b858584036127a9565b600191505092915050565b60006119ab6119a46127a1565b8484612972565b6001905092915050565b6119bd6127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4390613d56565b60405180910390fd5b620186a0611a58611037565b611a6291906141cd565b8111611aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9a90614302565b60405180910390fd5b806016819055507fcba17309eff0b14bb89cad72aef8b308a23d698dfff957e2255d17bbc03620bd81604051611ad99190613ba1565b60405180910390a150565b611aec6127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7290613d56565b60405180910390fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0290614394565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7190614426565b60405180910390fd5b611c838161324c565b15611cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cba906144b8565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160176000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b60405160405180910390a250565b611dee6127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7490613d56565b60405180910390fd5b801515601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f069061454a565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611fac9190613968565b60405180910390a25050565b611fc06127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461204f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204690613d56565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f6020528060005260406000206000915054906101000a900460ff1681565b60075481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60165481565b6121656127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121eb90613d56565b60405180910390fd5b80600b60006101000a81548160ff02191690831515021790555050565b60105481565b61221f6127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a590613d56565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361231d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612314906145dc565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b6123eb6127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461247a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247190613d56565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124df90614648565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612568573373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612562573d6000803e3d6000fd5b5061266d565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016125a89190613c82565b602060405180830381865afa1580156125c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e9919061467d565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016126269291906146aa565b6020604051808303816000875af1158015612645573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266991906146e8565b5050505b50565b60085481565b61267e6127a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461270d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270490613d56565b60405180910390fd5b600960009054906101000a900460ff161561275d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275490614761565b60405180910390fd5b6001600960006101000a81548160ff02191690831515021790555043600a81905550565b600c6020528060005260406000206000915054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280f906147f3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287e90614885565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129659190613ba1565b60405180910390a3505050565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612a165750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612a6c5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ac25750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b0d57601054811115612b0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0390614917565b60405180910390fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612bb45750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c1257601154612bc5836114b6565b82612bd0919061416a565b1115612c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0890614983565b60405180910390fd5b5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612cb65750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f7157600960009054906101000a900460ff16612d0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d01906149ef565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7090614a81565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ddf90614b13565b60405180910390fd5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612e8c5750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec290614b7f565b60405180910390fd5b600b60009054906101000a900460ff1615612f705743600854600a54612ef1919061416a565b10612f53576001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612f6f565b6000600b60006101000a81548160ff0219169083151502179055505b5b5b60008103612f8a57612f858383600061326f565b613247565b6000612f95306114b6565b905060006016548210159050808015612fbb5750601560149054906101000a900460ff16155b80156130145750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15613059576001601560146101000a81548160ff02191690831515021790555061303d826134ee565b6000601560146101000a81548160ff0219169083151502179055505b6000601560149054906101000a900460ff16159050601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061310f5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561311957600090505b8015613238576000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff160361319757606460065486613186919061402a565b61319091906141cd565b9050613213565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361320d576064600754866131fc919061402a565b61320691906141cd565b9050613212565b600090505b5b808561321f9190614b9f565b945060008111156132365761323587308361326f565b5b505b61324386868661326f565b5050505b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036132de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132d590614a81565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361334d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334490614b13565b60405180910390fd5b613358838383613780565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156133de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133d590614c45565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613471919061416a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134d59190613ba1565b60405180910390a36134e8848484613785565b50505050565b60004790506000600267ffffffffffffffff8111156135105761350f614c65565b5b60405190808252806020026020018201604052801561353e5781602001602082028036833780820191505090505b509050308160008151811061355657613555614c94565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136219190614cd8565b8160018151811061363557613634614c94565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b81526004016136d3959493929190614dfe565b600060405180830381600087803b1580156136ed57600080fd5b505af1158015613701573d6000803e3d6000fd5b50505050600082476137139190614b9f565b9050613741601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261378a565b7f54c5e193a68e36b996e0c85b164c5953625d951c488fbad0e67aa32e1c45307b8482604051613772929190613f66565b60405180910390a150505050565b505050565b505050565b804710156137cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137c490614ea4565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516137f390614ef5565b60006040518083038185875af1925050503d8060008114613830576040519150601f19603f3d011682016040523d82523d6000602084013e613835565b606091505b5050905080613879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161387090614f7c565b60405180910390fd5b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006138ae82613883565b9050919050565b6138be816138a3565b81146138c957600080fd5b50565b6000813590506138db816138b5565b92915050565b60008115159050919050565b6138f6816138e1565b811461390157600080fd5b50565b600081359050613913816138ed565b92915050565b600080604083850312156139305761392f61387e565b5b600061393e858286016138cc565b925050602061394f85828601613904565b9150509250929050565b613962816138e1565b82525050565b600060208201905061397d6000830184613959565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156139bd5780820151818401526020810190506139a2565b60008484015250505050565b6000601f19601f8301169050919050565b60006139e582613983565b6139ef818561398e565b93506139ff81856020860161399f565b613a08816139c9565b840191505092915050565b60006020820190508181036000830152613a2d81846139da565b905092915050565b6000819050919050565b613a4881613a35565b8114613a5357600080fd5b50565b600081359050613a6581613a3f565b92915050565b60008060408385031215613a8257613a8161387e565b5b6000613a90858286016138cc565b9250506020613aa185828601613a56565b9150509250929050565b60008060408385031215613ac257613ac161387e565b5b6000613ad085828601613a56565b9250506020613ae185828601613a56565b9150509250929050565b600060208284031215613b0157613b0061387e565b5b6000613b0f84828501613a56565b91505092915050565b6000819050919050565b6000613b3d613b38613b3384613883565b613b18565b613883565b9050919050565b6000613b4f82613b22565b9050919050565b6000613b6182613b44565b9050919050565b613b7181613b56565b82525050565b6000602082019050613b8c6000830184613b68565b92915050565b613b9b81613a35565b82525050565b6000602082019050613bb66000830184613b92565b92915050565b600080600060608486031215613bd557613bd461387e565b5b6000613be3868287016138cc565b9350506020613bf4868287016138cc565b9250506040613c0586828701613a56565b9150509250925092565b600060ff82169050919050565b613c2581613c0f565b82525050565b6000602082019050613c406000830184613c1c565b92915050565b600060208284031215613c5c57613c5b61387e565b5b6000613c6a848285016138cc565b91505092915050565b613c7c816138a3565b82525050565b6000602082019050613c976000830184613c73565b92915050565b60008060408385031215613cb457613cb361387e565b5b6000613cc2858286016138cc565b9250506020613cd3858286016138cc565b9150509250929050565b600060208284031215613cf357613cf261387e565b5b6000613d0184828501613904565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613d4060208361398e565b9150613d4b82613d0a565b602082019050919050565b60006020820190508181036000830152613d6f81613d33565b9050919050565b7f416c7265616479206578636c7564656421000000000000000000000000000000600082015250565b6000613dac60118361398e565b9150613db782613d76565b602082019050919050565b60006020820190508181036000830152613ddb81613d9f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613e2957607f821691505b602082108103613e3c57613e3b613de2565b5b50919050565b7f4d61726b6574696e6720666565206f6e206275792063616e6e6f74206265206d60008201527f6f7265207468616e203525000000000000000000000000000000000000000000602082015250565b6000613e9e602b8361398e565b9150613ea982613e42565b604082019050919050565b60006020820190508181036000830152613ecd81613e91565b9050919050565b7f4d61726b6574696e6720666565206f6e2073656c6c2063616e6e6f742062652060008201527f6d6f7265207468616e2035250000000000000000000000000000000000000000602082015250565b6000613f30602c8361398e565b9150613f3b82613ed4565b604082019050919050565b60006020820190508181036000830152613f5f81613f23565b9050919050565b6000604082019050613f7b6000830185613b92565b613f886020830184613b92565b9392505050565b7f43616e2774207365742062656c6f7720316d696c000000000000000000000000600082015250565b6000613fc560148361398e565b9150613fd082613f8f565b602082019050919050565b60006020820190508181036000830152613ff481613fb8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061403582613a35565b915061404083613a35565b925082820261404e81613a35565b9150828204841483151761406557614064613ffb565b5b5092915050565b7f43616e277420736574202062656c6f7720316d696c0000000000000000000000600082015250565b60006140a260158361398e565b91506140ad8261406c565b602082019050919050565b600060208201905081810360008301526140d181614095565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061413460288361398e565b915061413f826140d8565b604082019050919050565b6000602082019050818103600083015261416381614127565b9050919050565b600061417582613a35565b915061418083613a35565b925082820190508082111561419857614197613ffb565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006141d882613a35565b91506141e383613a35565b9250826141f3576141f261419e565b5b828204905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061425a60258361398e565b9150614265826141fe565b604082019050919050565b600060208201905081810360008301526142898161424d565b9050919050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e30303125206f6620746f74616c20737570706c790000602082015250565b60006142ec603e8361398e565b91506142f782614290565b604082019050919050565b6000602082019050818103600083015261431b816142df565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b600061437e60288361398e565b915061438982614322565b604082019050919050565b600060208201905081810360008301526143ad81614371565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000614410602b8361398e565b915061441b826143b4565b604082019050919050565b6000602082019050818103600083015261443f81614403565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f74206265206120636f6e60008201527f7472616374000000000000000000000000000000000000000000000000000000602082015250565b60006144a260258361398e565b91506144ad82614446565b604082019050919050565b600060208201905081810360008301526144d181614495565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000614534602a8361398e565b915061453f826144d8565b604082019050919050565b6000602082019050818103600083015261456381614527565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006145c660268361398e565b91506145d18261456a565b604082019050919050565b600060208201905081810360008301526145f5816145b9565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e73600082015250565b600061463260208361398e565b915061463d826145fc565b602082019050919050565b6000602082019050818103600083015261466181614625565b9050919050565b60008151905061467781613a3f565b92915050565b6000602082840312156146935761469261387e565b5b60006146a184828501614668565b91505092915050565b60006040820190506146bf6000830185613c73565b6146cc6020830184613b92565b9392505050565b6000815190506146e2816138ed565b92915050565b6000602082840312156146fe576146fd61387e565b5b600061470c848285016146d3565b91505092915050565b7f54726164696e6720697320616c726561647920656e61626c6564210000000000600082015250565b600061474b601b8361398e565b915061475682614715565b602082019050919050565b6000602082019050818103600083015261477a8161473e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006147dd60248361398e565b91506147e882614781565b604082019050919050565b6000602082019050818103600083015261480c816147d0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061486f60228361398e565b915061487a82614813565b604082019050919050565b6000602082019050818103600083015261489e81614862565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f786e5472616e73616374696f6e416d6f756e742e000000000000000000000000602082015250565b600061490160348361398e565b915061490c826148a5565b604082019050919050565b60006020820190508181036000830152614930816148f4565b9050919050565b7f43616e277420657863656564206d617857616c6c657400000000000000000000600082015250565b600061496d60168361398e565b915061497882614937565b602082019050919050565b6000602082019050818103600083015261499c81614960565b9050919050565b7f54726164696e672069732064697361626c656400000000000000000000000000600082015250565b60006149d960138361398e565b91506149e4826149a3565b602082019050919050565b60006020820190508181036000830152614a08816149cc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614a6b60258361398e565b9150614a7682614a0f565b604082019050919050565b60006020820190508181036000830152614a9a81614a5e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614afd60238361398e565b9150614b0882614aa1565b604082019050919050565b60006020820190508181036000830152614b2c81614af0565b9050919050565b7f426c61636b6c6973746564206164647265737300000000000000000000000000600082015250565b6000614b6960138361398e565b9150614b7482614b33565b602082019050919050565b60006020820190508181036000830152614b9881614b5c565b9050919050565b6000614baa82613a35565b9150614bb583613a35565b9250828203905081811115614bcd57614bcc613ffb565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614c2f60268361398e565b9150614c3a82614bd3565b604082019050919050565b60006020820190508181036000830152614c5e81614c22565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614cd2816138b5565b92915050565b600060208284031215614cee57614ced61387e565b5b6000614cfc84828501614cc3565b91505092915050565b6000819050919050565b6000614d2a614d25614d2084614d05565b613b18565b613a35565b9050919050565b614d3a81614d0f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614d75816138a3565b82525050565b6000614d878383614d6c565b60208301905092915050565b6000602082019050919050565b6000614dab82614d40565b614db58185614d4b565b9350614dc083614d5c565b8060005b83811015614df1578151614dd88882614d7b565b9750614de383614d93565b925050600181019050614dc4565b5085935050505092915050565b600060a082019050614e136000830188613b92565b614e206020830187614d31565b8181036040830152614e328186614da0565b9050614e416060830185613c73565b614e4e6080830184613b92565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614e8e601d8361398e565b9150614e9982614e58565b602082019050919050565b60006020820190508181036000830152614ebd81614e81565b9050919050565b600081905092915050565b50565b6000614edf600083614ec4565b9150614eea82614ecf565b600082019050919050565b6000614f0082614ed2565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614f66603a8361398e565b9150614f7182614f0a565b604082019050919050565b60006020820190508181036000830152614f9581614f59565b905091905056fea264697066735822122067cc0cdc5592d158ed847e13cb67d7751cce23c2a0124e1f74f1a9ce568552e164736f6c63430008110033

Deployed Bytecode Sourcemap

16734:9753:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21143:353;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16901:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4062:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4976:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21863:450;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21508:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17381:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4383:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21683:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5153:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16977:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4282:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5734:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17063:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17429:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21009:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16777:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22990:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4499:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3249:148;;;;;;;;;;;;;:::i;:::-;;17297:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19730:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17115:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3035:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20882:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4170:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5957:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4634:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23214:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22321:524;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20584:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22857:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17172:53;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16821:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4817:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17576:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23123:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17232:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3405:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17260:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19284:441;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16865:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20067:184;;;;;;;;;;;;;:::i;:::-;;17011:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21143:353;3172:12;:10;:12::i;:::-;3162:22;;:6;;;;;;;;;;;:22;;;3154:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21253:17:::1;:33;21271:14;21253:33;;;;;;;;;;;;;;;;;;;;;;;;;21252:34;21244:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21328:20;:36;21349:14;21328:36;;;;;;;;;;;;;;;;;;;;;;;;;21327:37;21319:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21433:2;21397:17;:33;21415:14;21397:33;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;21485:2;21446:20;:36;21467:14;21446:36;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;21143:353:::0;;:::o;16901:36::-;;;;;;;;;;;;;:::o;4062:100::-;4116:13;4149:5;4142:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4062:100;:::o;4976:169::-;5059:4;5076:39;5085:12;:10;:12::i;:::-;5099:7;5108:6;5076:8;:39::i;:::-;5133:4;5126:11;;4976:169;;;;:::o;21863:450::-;3172:12;:10;:12::i;:::-;3162:22;;:6;;;;;;;;;;;:22;;;3154:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21997:1:::1;21975:18;:23;;21967:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;22088:1;22065:19;:24;;22057:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;22170:18;22149:17;:39;;;;22220:19;22199:18;:40;;;;22255:50;22267:17;;22286:18;;22255:50;;;;;;;:::i;:::-;;;;;;;;21863:450:::0;;:::o;21508:170::-;3172:12;:10;:12::i;:::-;3162:22;;:6;;;;;;;;;;;:22;;;3154:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21597:7:::1;21587:6;:17;;21579:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;21659:6;21649;:17;;;;:::i;:::-;21640:6;:26;;;;21508:170:::0;:::o;17381:41::-;;;;;;;;;;;;;:::o;4383:108::-;4444:7;4471:12;;4464:19;;4383:108;:::o;21683:172::-;3172:12;:10;:12::i;:::-;3162:22;;:6;;;;;;;;;;;:22;;;3154:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21772:7:::1;21762:6;:17;;21754:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;21838:6;21828;:17;;;;:::i;:::-;21816:9;:29;;;;21683:172:::0;:::o;5153:573::-;5293:4;5310:24;5337:11;:19;5349:6;5337:19;;;;;;;;;;;;;;;:33;5357:12;:10;:12::i;:::-;5337:33;;;;;;;;;;;;;;;;5310:60;;5405:17;5385:16;:37;5381:265;;5467:6;5447:16;:26;;5439:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5562:57;5571:6;5579:12;:10;:12::i;:::-;5612:6;5593:16;:25;5562:8;:57::i;:::-;5381:265;5658:36;5668:6;5676:9;5687:6;5658:9;:36::i;:::-;5714:4;5707:11;;;5153:573;;;;;:::o;16977:27::-;;;;;;;;;;;;;:::o;4282:93::-;4340:5;4365:2;4358:9;;4282:93;:::o;5734:215::-;5822:4;5839:80;5848:12;:10;:12::i;:::-;5862:7;5908:10;5871:11;:25;5883:12;:10;:12::i;:::-;5871:25;;;;;;;;;;;;;;;:34;5897:7;5871:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5839:8;:80::i;:::-;5937:4;5930:11;;5734:215;;;;:::o;17063:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;17429:29::-;;;;;;;;;;;;;:::o;21009:125::-;21074:4;21098:19;:28;21118:7;21098:28;;;;;;;;;;;;;;;;;;;;;;;;;21091:35;;21009:125;;;:::o;16777:37::-;;;;:::o;22990:121::-;3172:12;:10;:12::i;:::-;3162:22;;:6;;;;;;;;;;;:22;;;3154:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23098:5:::1;23073:13;:22;23087:7;23073:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;22990:121:::0;;:::o;4499:127::-;4573:7;4600:9;:18;4610:7;4600:18;;;;;;;;;;;;;;;;4593:25;;4499:127;;;:::o;3249:148::-;3172:12;:10;:12::i;:::-;3162:22;;:6;;;;;;;;;;;:22;;;3154:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3356:1:::1;3319:40;;3340:6;;;;;;;;;;;3319:40;;;;;;;;;;;;3387:1;3370:6;;:19;;;;;;;;;;;;;;;;;;3249:148::o:0;17297:75::-;;;;;;;;;;;;;:::o;19730:202::-;3172:12;:10;:12::i;:::-;3162:22;;:6;;;;;;;;;;;:22;;;3154:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19806:17:::1;19826:21;19806:41;;19866:10;19858:28;;:66;19920:3;19900:16;19888:9;:28;;;;:::i;:::-;19887:36;;;;:::i;:::-;19858:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;19795:137;19730:202:::0;:::o;17115:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;3035:79::-;3073:7;3100:6;;;;;;;;;;;3093:13;;3035:79;:::o;20882:121::-;20945:4;20969:17;:26;20987:7;20969:26;;;;;;;;;;;;;;;;;;;;;;;;;20962:33;;20882:121;;;:::o;4170:104::-;4226:13;4259:7;4252:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4170:104;:::o;5957:413::-;6050:4;6067:24;6094:11;:25;6106:12;:10;:12::i;:::-;6094:25;;;;;;;;;;;;;;;:34;6120:7;6094:34;;;;;;;;;;;;;;;;6067:61;;6167:15;6147:16;:35;;6139:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6260:67;6269:12;:10;:12::i;:::-;6283:7;6311:15;6292:16;:34;6260:8;:67::i;:::-;6358:4;6351:11;;;5957:413;;;;:::o;4634:175::-;4720:4;4737:42;4747:12;:10;:12::i;:::-;4761:9;4772:6;4737:9;:42::i;:::-;4797:4;4790:11;;4634:175;;;;:::o;23214:289::-;3172:12;:10;:12::i;:::-;3162:22;;:6;;;;;;;;;;;:22;;;3154:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23329:6:::1;23313:13;:11;:13::i;:::-;:22;;;;:::i;:::-;23301:9;:34;23293:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;23434:9;23413:18;:30;;;;23459:36;23485:9;23459:36;;;;;;:::i;:::-;;;;;;;;23214:289:::0;:::o;22321:524::-;3172:12;:10;:12::i;:::-;3162:22;;:6;;;;;;;;;;;:22;;;3154:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22436:15:::1;;;;;;;;;;;22416:35;;:16;:35;;::::0;22408:88:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22543:1;22515:30;;:16;:30;;::::0;22507:86:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22613:28;22624:16;22613:10;:28::i;:::-;22612:29;22604:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;22712:16;22694:15;;:34;;;;;;;;;;;;;;;;;;22778:4;22739:19;:36;22759:15;;;;;;;;;;;22739:36;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;22821:15;;;;;;;;;;;22798:39;;;;;;;;;;;;22321:524:::0;:::o;20584:292::-;3172:12;:10;:12::i;:::-;3162:22;;:6;;;;;;;;;;;:22;;;3154:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20711:8:::1;20679:40;;:19;:28;20699:7;20679:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;::::0;20671:95:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20808:8;20777:19;:28;20797:7;20777:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20850:7;20834:34;;;20859:8;20834:34;;;;;;:::i;:::-;;;;;;;;20584:292:::0;;:::o;22857:121::-;3172:12;:10;:12::i;:::-;3162:22;;:6;;;;;;;;;;;:22;;;3154:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22965:5:::1;22940:13;:22;22954:7;22940:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;22857:121:::0;;:::o;17172:53::-;;;;;;;;;;;;;;;;;;;;;;:::o;16821:37::-;;;;:::o;4817:151::-;4906:7;4933:11;:18;4945:5;4933:18;;;;;;;;;;;;;;;:27;4952:7;4933:27;;;;;;;;;;;;;;;;4926:34;;4817:151;;;;:::o;17576:33::-;;;;:::o;23123:83::-;3172:12;:10;:12::i;:::-;3162:22;;:6;;;;;;;;;;;:22;;;3154:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23193:5:::1;23183:7;;:15;;;;;;;;;;;;;;;;;;23123:83:::0;:::o;17232:21::-;;;;:::o;3405:244::-;3172:12;:10;:12::i;:::-;3162:22;;:6;;;;;;;;;;;:22;;;3154:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3514:1:::1;3494:22;;:8;:22;;::::0;3486:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3604:8;3575:38;;3596:6;;;;;;;;;;;3575:38;;;;;;;;;;;;3633:8;3624:6;;:17;;;;;;;;;;;;;;;;;;3405:244:::0;:::o;17260:24::-;;;;:::o;19284:441::-;3172:12;:10;:12::i;:::-;3162:22;;:6;;;;;;;;;;;:22;;;3154:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19380:4:::1;19363:22;;:5;:22;;::::0;19355:67:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19454:3;19437:21;;:5;:21;;::::0;19433:126:::1;;19483:10;19475:28;;:51;19504:21;19475:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;19541:7;;19433:126;19569:17;19596:5;19569:33;;19613:15;19631:10;:20;;;19660:4;19631:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19613:53;;19677:10;:19;;;19697:10;19709:7;19677:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19344:381;;3232:1;19284:441:::0;:::o;16865:29::-;;;;:::o;20067:184::-;3172:12;:10;:12::i;:::-;3162:22;;:6;;;;;;;;;;;:22;;;3154:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20125:16:::1;;;;;;;;;;;20124:17;20116:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;20203:4;20184:16;;:23;;;;;;;;;;;;;;;;;;20231:12;20218:10;:25;;;;20067:184::o:0;17011:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;2358:98::-;2411:7;2438:10;2431:17;;2358:98;:::o;8125:380::-;8278:1;8261:19;;:5;:19;;;8253:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8359:1;8340:21;;:7;:21;;;8332:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8443:6;8413:11;:18;8425:5;8413:18;;;;;;;;;;;;;;;:27;8432:7;8413:27;;;;;;;;;;;;;;;:36;;;;8481:7;8465:32;;8474:5;8465:32;;;8490:6;8465:32;;;;;;:::i;:::-;;;;;;;;8125:380;;;:::o;23511:2299::-;23645:17;:23;23663:4;23645:23;;;;;;;;;;;;;;;;;;;;;;;;;23644:24;:50;;;;;23673:17;:21;23691:2;23673:21;;;;;;;;;;;;;;;;;;;;;;;;;23672:22;23644:50;:80;;;;;23699:19;:25;23719:4;23699:25;;;;;;;;;;;;;;;;;;;;;;;;;23698:26;23644:80;:108;;;;;23729:19;:23;23749:2;23729:23;;;;;;;;;;;;;;;;;;;;;;;;;23728:24;23644:108;23641:225;;;23787:6;;23777;:16;;23769:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;23641:225;23893:13;;;;;;;;;;;23885:21;;:4;:21;;;:51;;;;;23912:20;:24;23933:2;23912:24;;;;;;;;;;;;;;;;;;;;;;;;;23911:25;23885:51;23880:151;;;23983:9;;23966:13;23976:2;23966:9;:13::i;:::-;23957:6;:22;;;;:::i;:::-;:35;;23949:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;23880:151;24048:13;:19;24062:4;24048:19;;;;;;;;;;;;;;;;;;;;;;;;;24047:20;:42;;;;;24072:13;:17;24086:2;24072:17;;;;;;;;;;;;;;;;;;;;;;;;;24071:18;24047:42;24043:599;;;24110:16;;;;;;;;;;;24102:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;24185:1;24169:18;;:4;:18;;;24161:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24262:1;24248:16;;:2;:16;;;24240:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24324:13;:19;24338:4;24324:19;;;;;;;;;;;;;;;;;;;;;;;;;24323:20;:42;;;;;24348:13;:17;24362:2;24348:17;;;;;;;;;;;;;;;;;;;;;;;;;24347:18;24323:42;24315:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;24412:7;;;;;;;;;;;24408:223;;;24471:12;24457:10;;24444;;:23;;;;:::i;:::-;:39;24440:176;;24528:4;24508:13;:17;24522:2;24508:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;24440:176;;;24591:5;24581:7;;:15;;;;;;;;;;;;;;;;;;24440:176;24408:223;24043:599;24675:1;24665:6;:11;24662:92;;24693:28;24709:4;24715:2;24719:1;24693:15;:28::i;:::-;24736:7;;24662:92;24774:28;24805:24;24823:4;24805:9;:24::i;:::-;24774:55;;24842:12;24881:18;;24857:20;:42;;24842:57;;24916:7;:33;;;;;24941:8;;;;;;;;;;;24940:9;24916:33;:69;;;;;24972:13;;;;;;;;;;;24966:19;;:2;:19;;;24916:69;24912:225;;;25023:4;25012:8;;:15;;;;;;;;;;;;;;;;;;25056:36;25071:20;25056:14;:36::i;:::-;25120:5;25109:8;;:16;;;;;;;;;;;;;;;;;;24912:225;25149:12;25165:8;;;;;;;;;;;25164:9;25149:24;;25189:19;:25;25209:4;25189:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25218:19;:23;25238:2;25218:23;;;;;;;;;;;;;;;;;;;;;;;;;25189:52;25186:100;;;25267:5;25257:15;;25186:100;25303:7;25300:455;;;25327:12;25365:13;;;;;;;;;;;25357:21;;:4;:21;;;25354:257;;25435:3;25415:17;;25406:6;:26;;;;:::i;:::-;:32;;;;:::i;:::-;25399:39;;25354:257;;;25470:13;;;;;;;;;;;25464:19;;:2;:19;;;25460:151;;25541:3;25520:18;;25511:6;:27;;;;:::i;:::-;:33;;;;:::i;:::-;25504:40;;25460:151;;;25594:1;25587:8;;25460:151;25354:257;25635:4;25625:14;;;;;:::i;:::-;;;25664:1;25657:4;:8;25654:90;;;25686:42;25702:4;25716;25723;25686:15;:42::i;:::-;25654:90;25312:443;25300:455;25769:33;25785:4;25791:2;25795:6;25769:15;:33::i;:::-;23625:2185;;;23511:2299;;;;:::o;19940:115::-;20000:4;20046:1;20024:7;:19;;;:23;20017:30;;19940:115;;;:::o;6378:733::-;6536:1;6518:20;;:6;:20;;;6510:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6620:1;6599:23;;:9;:23;;;6591:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6675:47;6696:6;6704:9;6715:6;6675:20;:47::i;:::-;6735:21;6759:9;:17;6769:6;6759:17;;;;;;;;;;;;;;;;6735:41;;6812:6;6795:13;:23;;6787:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6933:6;6917:13;:22;6897:9;:17;6907:6;6897:17;;;;;;;;;;;;;;;:42;;;;6985:6;6961:9;:20;6971:9;6961:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7026:9;7009:35;;7018:6;7009:35;;;7037:6;7009:35;;;;;;:::i;:::-;;;;;;;;7057:46;7077:6;7085:9;7096:6;7057:19;:46::i;:::-;6499:612;6378:733;;;:::o;25822:662::-;25886:22;25911:21;25886:46;;25945:21;25983:1;25969:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25945:40;;26014:4;25996;26001:1;25996:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26040:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26030:4;26035:1;26030:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;26075:15;;;;;;;;;;;:66;;;26156:11;26182:1;26226:4;26253;26273:15;26075:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26302:18;26347:14;26323:21;:38;;;;:::i;:::-;26302:59;;26374:45;26390:15;;;;;;;;;;;26408:10;26374:7;:45::i;:::-;26437:39;26452:11;26465:10;26437:39;;;;;;;:::i;:::-;;;;;;;;25875:609;;;25822:662;:::o;8513:125::-;;;;:::o;8646:124::-;;;;:::o;20261:315::-;20374:6;20349:21;:31;;20341:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;20428:12;20446:9;:14;;20468:6;20446:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20427:52;;;20498:7;20490:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;20330:246;20261:315;;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:90::-;875:7;918:5;911:13;904:21;893:32;;841:90;;;:::o;937:116::-;1007:21;1022:5;1007:21;:::i;:::-;1000:5;997:32;987:60;;1043:1;1040;1033:12;987:60;937:116;:::o;1059:133::-;1102:5;1140:6;1127:20;1118:29;;1156:30;1180:5;1156:30;:::i;:::-;1059:133;;;;:::o;1198:468::-;1263:6;1271;1320:2;1308:9;1299:7;1295:23;1291:32;1288:119;;;1326:79;;:::i;:::-;1288:119;1446:1;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1417:117;1573:2;1599:50;1641:7;1632:6;1621:9;1617:22;1599:50;:::i;:::-;1589:60;;1544:115;1198:468;;;;;:::o;1672:109::-;1753:21;1768:5;1753:21;:::i;:::-;1748:3;1741:34;1672:109;;:::o;1787:210::-;1874:4;1912:2;1901:9;1897:18;1889:26;;1925:65;1987:1;1976:9;1972:17;1963:6;1925:65;:::i;:::-;1787:210;;;;:::o;2003:99::-;2055:6;2089:5;2083:12;2073:22;;2003:99;;;:::o;2108:169::-;2192:11;2226:6;2221:3;2214:19;2266:4;2261:3;2257:14;2242:29;;2108:169;;;;:::o;2283:246::-;2364:1;2374:113;2388:6;2385:1;2382:13;2374:113;;;2473:1;2468:3;2464:11;2458:18;2454:1;2449:3;2445:11;2438:39;2410:2;2407:1;2403:10;2398:15;;2374:113;;;2521:1;2512:6;2507:3;2503:16;2496:27;2345:184;2283:246;;;:::o;2535:102::-;2576:6;2627:2;2623:7;2618:2;2611:5;2607:14;2603:28;2593:38;;2535:102;;;:::o;2643:377::-;2731:3;2759:39;2792:5;2759:39;:::i;:::-;2814:71;2878:6;2873:3;2814:71;:::i;:::-;2807:78;;2894:65;2952:6;2947:3;2940:4;2933:5;2929:16;2894:65;:::i;:::-;2984:29;3006:6;2984:29;:::i;:::-;2979:3;2975:39;2968:46;;2735:285;2643:377;;;;:::o;3026:313::-;3139:4;3177:2;3166:9;3162:18;3154:26;;3226:9;3220:4;3216:20;3212:1;3201:9;3197:17;3190:47;3254:78;3327:4;3318:6;3254:78;:::i;:::-;3246:86;;3026:313;;;;:::o;3345:77::-;3382:7;3411:5;3400:16;;3345:77;;;:::o;3428:122::-;3501:24;3519:5;3501:24;:::i;:::-;3494:5;3491:35;3481:63;;3540:1;3537;3530:12;3481:63;3428:122;:::o;3556:139::-;3602:5;3640:6;3627:20;3618:29;;3656:33;3683:5;3656:33;:::i;:::-;3556:139;;;;:::o;3701:474::-;3769:6;3777;3826:2;3814:9;3805:7;3801:23;3797:32;3794:119;;;3832:79;;:::i;:::-;3794:119;3952:1;3977:53;4022:7;4013:6;4002:9;3998:22;3977:53;:::i;:::-;3967:63;;3923:117;4079:2;4105:53;4150:7;4141:6;4130:9;4126:22;4105:53;:::i;:::-;4095:63;;4050:118;3701:474;;;;;:::o;4181:::-;4249:6;4257;4306:2;4294:9;4285:7;4281:23;4277:32;4274:119;;;4312:79;;:::i;:::-;4274:119;4432:1;4457:53;4502:7;4493:6;4482:9;4478:22;4457:53;:::i;:::-;4447:63;;4403:117;4559:2;4585:53;4630:7;4621:6;4610:9;4606:22;4585:53;:::i;:::-;4575:63;;4530:118;4181:474;;;;;:::o;4661:329::-;4720:6;4769:2;4757:9;4748:7;4744:23;4740:32;4737:119;;;4775:79;;:::i;:::-;4737:119;4895:1;4920:53;4965:7;4956:6;4945:9;4941:22;4920:53;:::i;:::-;4910:63;;4866:117;4661:329;;;;:::o;4996:60::-;5024:3;5045:5;5038:12;;4996:60;;;:::o;5062:142::-;5112:9;5145:53;5163:34;5172:24;5190:5;5172:24;:::i;:::-;5163:34;:::i;:::-;5145:53;:::i;:::-;5132:66;;5062:142;;;:::o;5210:126::-;5260:9;5293:37;5324:5;5293:37;:::i;:::-;5280:50;;5210:126;;;:::o;5342:153::-;5419:9;5452:37;5483:5;5452:37;:::i;:::-;5439:50;;5342:153;;;:::o;5501:185::-;5615:64;5673:5;5615:64;:::i;:::-;5610:3;5603:77;5501:185;;:::o;5692:276::-;5812:4;5850:2;5839:9;5835:18;5827:26;;5863:98;5958:1;5947:9;5943:17;5934:6;5863:98;:::i;:::-;5692:276;;;;:::o;5974:118::-;6061:24;6079:5;6061:24;:::i;:::-;6056:3;6049:37;5974:118;;:::o;6098:222::-;6191:4;6229:2;6218:9;6214:18;6206:26;;6242:71;6310:1;6299:9;6295:17;6286:6;6242:71;:::i;:::-;6098:222;;;;:::o;6326:619::-;6403:6;6411;6419;6468:2;6456:9;6447:7;6443:23;6439:32;6436:119;;;6474:79;;:::i;:::-;6436:119;6594:1;6619:53;6664:7;6655:6;6644:9;6640:22;6619:53;:::i;:::-;6609:63;;6565:117;6721:2;6747:53;6792:7;6783:6;6772:9;6768:22;6747:53;:::i;:::-;6737:63;;6692:118;6849:2;6875:53;6920:7;6911:6;6900:9;6896:22;6875:53;:::i;:::-;6865:63;;6820:118;6326:619;;;;;:::o;6951:86::-;6986:7;7026:4;7019:5;7015:16;7004:27;;6951:86;;;:::o;7043:112::-;7126:22;7142:5;7126:22;:::i;:::-;7121:3;7114:35;7043:112;;:::o;7161:214::-;7250:4;7288:2;7277:9;7273:18;7265:26;;7301:67;7365:1;7354:9;7350:17;7341:6;7301:67;:::i;:::-;7161:214;;;;:::o;7381:329::-;7440:6;7489:2;7477:9;7468:7;7464:23;7460:32;7457:119;;;7495:79;;:::i;:::-;7457:119;7615:1;7640:53;7685:7;7676:6;7665:9;7661:22;7640:53;:::i;:::-;7630:63;;7586:117;7381:329;;;;:::o;7716:118::-;7803:24;7821:5;7803:24;:::i;:::-;7798:3;7791:37;7716:118;;:::o;7840:222::-;7933:4;7971:2;7960:9;7956:18;7948:26;;7984:71;8052:1;8041:9;8037:17;8028:6;7984:71;:::i;:::-;7840:222;;;;:::o;8068:474::-;8136:6;8144;8193:2;8181:9;8172:7;8168:23;8164:32;8161:119;;;8199:79;;:::i;:::-;8161:119;8319:1;8344:53;8389:7;8380:6;8369:9;8365:22;8344:53;:::i;:::-;8334:63;;8290:117;8446:2;8472:53;8517:7;8508:6;8497:9;8493:22;8472:53;:::i;:::-;8462:63;;8417:118;8068:474;;;;;:::o;8548:323::-;8604:6;8653:2;8641:9;8632:7;8628:23;8624:32;8621:119;;;8659:79;;:::i;:::-;8621:119;8779:1;8804:50;8846:7;8837:6;8826:9;8822:22;8804:50;:::i;:::-;8794:60;;8750:114;8548:323;;;;:::o;8877:182::-;9017:34;9013:1;9005:6;9001:14;8994:58;8877:182;:::o;9065:366::-;9207:3;9228:67;9292:2;9287:3;9228:67;:::i;:::-;9221:74;;9304:93;9393:3;9304:93;:::i;:::-;9422:2;9417:3;9413:12;9406:19;;9065:366;;;:::o;9437:419::-;9603:4;9641:2;9630:9;9626:18;9618:26;;9690:9;9684:4;9680:20;9676:1;9665:9;9661:17;9654:47;9718:131;9844:4;9718:131;:::i;:::-;9710:139;;9437:419;;;:::o;9862:167::-;10002:19;9998:1;9990:6;9986:14;9979:43;9862:167;:::o;10035:366::-;10177:3;10198:67;10262:2;10257:3;10198:67;:::i;:::-;10191:74;;10274:93;10363:3;10274:93;:::i;:::-;10392:2;10387:3;10383:12;10376:19;;10035:366;;;:::o;10407:419::-;10573:4;10611:2;10600:9;10596:18;10588:26;;10660:9;10654:4;10650:20;10646:1;10635:9;10631:17;10624:47;10688:131;10814:4;10688:131;:::i;:::-;10680:139;;10407:419;;;:::o;10832:180::-;10880:77;10877:1;10870:88;10977:4;10974:1;10967:15;11001:4;10998:1;10991:15;11018:320;11062:6;11099:1;11093:4;11089:12;11079:22;;11146:1;11140:4;11136:12;11167:18;11157:81;;11223:4;11215:6;11211:17;11201:27;;11157:81;11285:2;11277:6;11274:14;11254:18;11251:38;11248:84;;11304:18;;:::i;:::-;11248:84;11069:269;11018:320;;;:::o;11344:230::-;11484:34;11480:1;11472:6;11468:14;11461:58;11553:13;11548:2;11540:6;11536:15;11529:38;11344:230;:::o;11580:366::-;11722:3;11743:67;11807:2;11802:3;11743:67;:::i;:::-;11736:74;;11819:93;11908:3;11819:93;:::i;:::-;11937:2;11932:3;11928:12;11921:19;;11580:366;;;:::o;11952:419::-;12118:4;12156:2;12145:9;12141:18;12133:26;;12205:9;12199:4;12195:20;12191:1;12180:9;12176:17;12169:47;12233:131;12359:4;12233:131;:::i;:::-;12225:139;;11952:419;;;:::o;12377:231::-;12517:34;12513:1;12505:6;12501:14;12494:58;12586:14;12581:2;12573:6;12569:15;12562:39;12377:231;:::o;12614:366::-;12756:3;12777:67;12841:2;12836:3;12777:67;:::i;:::-;12770:74;;12853:93;12942:3;12853:93;:::i;:::-;12971:2;12966:3;12962:12;12955:19;;12614:366;;;:::o;12986:419::-;13152:4;13190:2;13179:9;13175:18;13167:26;;13239:9;13233:4;13229:20;13225:1;13214:9;13210:17;13203:47;13267:131;13393:4;13267:131;:::i;:::-;13259:139;;12986:419;;;:::o;13411:332::-;13532:4;13570:2;13559:9;13555:18;13547:26;;13583:71;13651:1;13640:9;13636:17;13627:6;13583:71;:::i;:::-;13664:72;13732:2;13721:9;13717:18;13708:6;13664:72;:::i;:::-;13411:332;;;;;:::o;13749:170::-;13889:22;13885:1;13877:6;13873:14;13866:46;13749:170;:::o;13925:366::-;14067:3;14088:67;14152:2;14147:3;14088:67;:::i;:::-;14081:74;;14164:93;14253:3;14164:93;:::i;:::-;14282:2;14277:3;14273:12;14266:19;;13925:366;;;:::o;14297:419::-;14463:4;14501:2;14490:9;14486:18;14478:26;;14550:9;14544:4;14540:20;14536:1;14525:9;14521:17;14514:47;14578:131;14704:4;14578:131;:::i;:::-;14570:139;;14297:419;;;:::o;14722:180::-;14770:77;14767:1;14760:88;14867:4;14864:1;14857:15;14891:4;14888:1;14881:15;14908:410;14948:7;14971:20;14989:1;14971:20;:::i;:::-;14966:25;;15005:20;15023:1;15005:20;:::i;:::-;15000:25;;15060:1;15057;15053:9;15082:30;15100:11;15082:30;:::i;:::-;15071:41;;15261:1;15252:7;15248:15;15245:1;15242:22;15222:1;15215:9;15195:83;15172:139;;15291:18;;:::i;:::-;15172:139;14956:362;14908:410;;;;:::o;15324:171::-;15464:23;15460:1;15452:6;15448:14;15441:47;15324:171;:::o;15501:366::-;15643:3;15664:67;15728:2;15723:3;15664:67;:::i;:::-;15657:74;;15740:93;15829:3;15740:93;:::i;:::-;15858:2;15853:3;15849:12;15842:19;;15501:366;;;:::o;15873:419::-;16039:4;16077:2;16066:9;16062:18;16054:26;;16126:9;16120:4;16116:20;16112:1;16101:9;16097:17;16090:47;16154:131;16280:4;16154:131;:::i;:::-;16146:139;;15873:419;;;:::o;16298:227::-;16438:34;16434:1;16426:6;16422:14;16415:58;16507:10;16502:2;16494:6;16490:15;16483:35;16298:227;:::o;16531:366::-;16673:3;16694:67;16758:2;16753:3;16694:67;:::i;:::-;16687:74;;16770:93;16859:3;16770:93;:::i;:::-;16888:2;16883:3;16879:12;16872:19;;16531:366;;;:::o;16903:419::-;17069:4;17107:2;17096:9;17092:18;17084:26;;17156:9;17150:4;17146:20;17142:1;17131:9;17127:17;17120:47;17184:131;17310:4;17184:131;:::i;:::-;17176:139;;16903:419;;;:::o;17328:191::-;17368:3;17387:20;17405:1;17387:20;:::i;:::-;17382:25;;17421:20;17439:1;17421:20;:::i;:::-;17416:25;;17464:1;17461;17457:9;17450:16;;17485:3;17482:1;17479:10;17476:36;;;17492:18;;:::i;:::-;17476:36;17328:191;;;;:::o;17525:180::-;17573:77;17570:1;17563:88;17670:4;17667:1;17660:15;17694:4;17691:1;17684:15;17711:185;17751:1;17768:20;17786:1;17768:20;:::i;:::-;17763:25;;17802:20;17820:1;17802:20;:::i;:::-;17797:25;;17841:1;17831:35;;17846:18;;:::i;:::-;17831:35;17888:1;17885;17881:9;17876:14;;17711:185;;;;:::o;17902:224::-;18042:34;18038:1;18030:6;18026:14;18019:58;18111:7;18106:2;18098:6;18094:15;18087:32;17902:224;:::o;18132:366::-;18274:3;18295:67;18359:2;18354:3;18295:67;:::i;:::-;18288:74;;18371:93;18460:3;18371:93;:::i;:::-;18489:2;18484:3;18480:12;18473:19;;18132:366;;;:::o;18504:419::-;18670:4;18708:2;18697:9;18693:18;18685:26;;18757:9;18751:4;18747:20;18743:1;18732:9;18728:17;18721:47;18785:131;18911:4;18785:131;:::i;:::-;18777:139;;18504:419;;;:::o;18929:249::-;19069:34;19065:1;19057:6;19053:14;19046:58;19138:32;19133:2;19125:6;19121:15;19114:57;18929:249;:::o;19184:366::-;19326:3;19347:67;19411:2;19406:3;19347:67;:::i;:::-;19340:74;;19423:93;19512:3;19423:93;:::i;:::-;19541:2;19536:3;19532:12;19525:19;;19184:366;;;:::o;19556:419::-;19722:4;19760:2;19749:9;19745:18;19737:26;;19809:9;19803:4;19799:20;19795:1;19784:9;19780:17;19773:47;19837:131;19963:4;19837:131;:::i;:::-;19829:139;;19556:419;;;:::o;19981:227::-;20121:34;20117:1;20109:6;20105:14;20098:58;20190:10;20185:2;20177:6;20173:15;20166:35;19981:227;:::o;20214:366::-;20356:3;20377:67;20441:2;20436:3;20377:67;:::i;:::-;20370:74;;20453:93;20542:3;20453:93;:::i;:::-;20571:2;20566:3;20562:12;20555:19;;20214:366;;;:::o;20586:419::-;20752:4;20790:2;20779:9;20775:18;20767:26;;20839:9;20833:4;20829:20;20825:1;20814:9;20810:17;20803:47;20867:131;20993:4;20867:131;:::i;:::-;20859:139;;20586:419;;;:::o;21011:230::-;21151:34;21147:1;21139:6;21135:14;21128:58;21220:13;21215:2;21207:6;21203:15;21196:38;21011:230;:::o;21247:366::-;21389:3;21410:67;21474:2;21469:3;21410:67;:::i;:::-;21403:74;;21486:93;21575:3;21486:93;:::i;:::-;21604:2;21599:3;21595:12;21588:19;;21247:366;;;:::o;21619:419::-;21785:4;21823:2;21812:9;21808:18;21800:26;;21872:9;21866:4;21862:20;21858:1;21847:9;21843:17;21836:47;21900:131;22026:4;21900:131;:::i;:::-;21892:139;;21619:419;;;:::o;22044:224::-;22184:34;22180:1;22172:6;22168:14;22161:58;22253:7;22248:2;22240:6;22236:15;22229:32;22044:224;:::o;22274:366::-;22416:3;22437:67;22501:2;22496:3;22437:67;:::i;:::-;22430:74;;22513:93;22602:3;22513:93;:::i;:::-;22631:2;22626:3;22622:12;22615:19;;22274:366;;;:::o;22646:419::-;22812:4;22850:2;22839:9;22835:18;22827:26;;22899:9;22893:4;22889:20;22885:1;22874:9;22870:17;22863:47;22927:131;23053:4;22927:131;:::i;:::-;22919:139;;22646:419;;;:::o;23071:229::-;23211:34;23207:1;23199:6;23195:14;23188:58;23280:12;23275:2;23267:6;23263:15;23256:37;23071:229;:::o;23306:366::-;23448:3;23469:67;23533:2;23528:3;23469:67;:::i;:::-;23462:74;;23545:93;23634:3;23545:93;:::i;:::-;23663:2;23658:3;23654:12;23647:19;;23306:366;;;:::o;23678:419::-;23844:4;23882:2;23871:9;23867:18;23859:26;;23931:9;23925:4;23921:20;23917:1;23906:9;23902:17;23895:47;23959:131;24085:4;23959:131;:::i;:::-;23951:139;;23678:419;;;:::o;24103:225::-;24243:34;24239:1;24231:6;24227:14;24220:58;24312:8;24307:2;24299:6;24295:15;24288:33;24103:225;:::o;24334:366::-;24476:3;24497:67;24561:2;24556:3;24497:67;:::i;:::-;24490:74;;24573:93;24662:3;24573:93;:::i;:::-;24691:2;24686:3;24682:12;24675:19;;24334:366;;;:::o;24706:419::-;24872:4;24910:2;24899:9;24895:18;24887:26;;24959:9;24953:4;24949:20;24945:1;24934:9;24930:17;24923:47;24987:131;25113:4;24987:131;:::i;:::-;24979:139;;24706:419;;;:::o;25131:182::-;25271:34;25267:1;25259:6;25255:14;25248:58;25131:182;:::o;25319:366::-;25461:3;25482:67;25546:2;25541:3;25482:67;:::i;:::-;25475:74;;25558:93;25647:3;25558:93;:::i;:::-;25676:2;25671:3;25667:12;25660:19;;25319:366;;;:::o;25691:419::-;25857:4;25895:2;25884:9;25880:18;25872:26;;25944:9;25938:4;25934:20;25930:1;25919:9;25915:17;25908:47;25972:131;26098:4;25972:131;:::i;:::-;25964:139;;25691:419;;;:::o;26116:143::-;26173:5;26204:6;26198:13;26189:22;;26220:33;26247:5;26220:33;:::i;:::-;26116:143;;;;:::o;26265:351::-;26335:6;26384:2;26372:9;26363:7;26359:23;26355:32;26352:119;;;26390:79;;:::i;:::-;26352:119;26510:1;26535:64;26591:7;26582:6;26571:9;26567:22;26535:64;:::i;:::-;26525:74;;26481:128;26265:351;;;;:::o;26622:332::-;26743:4;26781:2;26770:9;26766:18;26758:26;;26794:71;26862:1;26851:9;26847:17;26838:6;26794:71;:::i;:::-;26875:72;26943:2;26932:9;26928:18;26919:6;26875:72;:::i;:::-;26622:332;;;;;:::o;26960:137::-;27014:5;27045:6;27039:13;27030:22;;27061:30;27085:5;27061:30;:::i;:::-;26960:137;;;;:::o;27103:345::-;27170:6;27219:2;27207:9;27198:7;27194:23;27190:32;27187:119;;;27225:79;;:::i;:::-;27187:119;27345:1;27370:61;27423:7;27414:6;27403:9;27399:22;27370:61;:::i;:::-;27360:71;;27316:125;27103:345;;;;:::o;27454:177::-;27594:29;27590:1;27582:6;27578:14;27571:53;27454:177;:::o;27637:366::-;27779:3;27800:67;27864:2;27859:3;27800:67;:::i;:::-;27793:74;;27876:93;27965:3;27876:93;:::i;:::-;27994:2;27989:3;27985:12;27978:19;;27637:366;;;:::o;28009:419::-;28175:4;28213:2;28202:9;28198:18;28190:26;;28262:9;28256:4;28252:20;28248:1;28237:9;28233:17;28226:47;28290:131;28416:4;28290:131;:::i;:::-;28282:139;;28009:419;;;:::o;28434:223::-;28574:34;28570:1;28562:6;28558:14;28551:58;28643:6;28638:2;28630:6;28626:15;28619:31;28434:223;:::o;28663:366::-;28805:3;28826:67;28890:2;28885:3;28826:67;:::i;:::-;28819:74;;28902:93;28991:3;28902:93;:::i;:::-;29020:2;29015:3;29011:12;29004:19;;28663:366;;;:::o;29035:419::-;29201:4;29239:2;29228:9;29224:18;29216:26;;29288:9;29282:4;29278:20;29274:1;29263:9;29259:17;29252:47;29316:131;29442:4;29316:131;:::i;:::-;29308:139;;29035:419;;;:::o;29460:221::-;29600:34;29596:1;29588:6;29584:14;29577:58;29669:4;29664:2;29656:6;29652:15;29645:29;29460:221;:::o;29687:366::-;29829:3;29850:67;29914:2;29909:3;29850:67;:::i;:::-;29843:74;;29926:93;30015:3;29926:93;:::i;:::-;30044:2;30039:3;30035:12;30028:19;;29687:366;;;:::o;30059:419::-;30225:4;30263:2;30252:9;30248:18;30240:26;;30312:9;30306:4;30302:20;30298:1;30287:9;30283:17;30276:47;30340:131;30466:4;30340:131;:::i;:::-;30332:139;;30059:419;;;:::o;30484:239::-;30624:34;30620:1;30612:6;30608:14;30601:58;30693:22;30688:2;30680:6;30676:15;30669:47;30484:239;:::o;30729:366::-;30871:3;30892:67;30956:2;30951:3;30892:67;:::i;:::-;30885:74;;30968:93;31057:3;30968:93;:::i;:::-;31086:2;31081:3;31077:12;31070:19;;30729:366;;;:::o;31101:419::-;31267:4;31305:2;31294:9;31290:18;31282:26;;31354:9;31348:4;31344:20;31340:1;31329:9;31325:17;31318:47;31382:131;31508:4;31382:131;:::i;:::-;31374:139;;31101:419;;;:::o;31526:172::-;31666:24;31662:1;31654:6;31650:14;31643:48;31526:172;:::o;31704:366::-;31846:3;31867:67;31931:2;31926:3;31867:67;:::i;:::-;31860:74;;31943:93;32032:3;31943:93;:::i;:::-;32061:2;32056:3;32052:12;32045:19;;31704:366;;;:::o;32076:419::-;32242:4;32280:2;32269:9;32265:18;32257:26;;32329:9;32323:4;32319:20;32315:1;32304:9;32300:17;32293:47;32357:131;32483:4;32357:131;:::i;:::-;32349:139;;32076:419;;;:::o;32501:169::-;32641:21;32637:1;32629:6;32625:14;32618:45;32501:169;:::o;32676:366::-;32818:3;32839:67;32903:2;32898:3;32839:67;:::i;:::-;32832:74;;32915:93;33004:3;32915:93;:::i;:::-;33033:2;33028:3;33024:12;33017:19;;32676:366;;;:::o;33048:419::-;33214:4;33252:2;33241:9;33237:18;33229:26;;33301:9;33295:4;33291:20;33287:1;33276:9;33272:17;33265:47;33329:131;33455:4;33329:131;:::i;:::-;33321:139;;33048:419;;;:::o;33473:224::-;33613:34;33609:1;33601:6;33597:14;33590:58;33682:7;33677:2;33669:6;33665:15;33658:32;33473:224;:::o;33703:366::-;33845:3;33866:67;33930:2;33925:3;33866:67;:::i;:::-;33859:74;;33942:93;34031:3;33942:93;:::i;:::-;34060:2;34055:3;34051:12;34044:19;;33703:366;;;:::o;34075:419::-;34241:4;34279:2;34268:9;34264:18;34256:26;;34328:9;34322:4;34318:20;34314:1;34303:9;34299:17;34292:47;34356:131;34482:4;34356:131;:::i;:::-;34348:139;;34075:419;;;:::o;34500:222::-;34640:34;34636:1;34628:6;34624:14;34617:58;34709:5;34704:2;34696:6;34692:15;34685:30;34500:222;:::o;34728:366::-;34870:3;34891:67;34955:2;34950:3;34891:67;:::i;:::-;34884:74;;34967:93;35056:3;34967:93;:::i;:::-;35085:2;35080:3;35076:12;35069:19;;34728:366;;;:::o;35100:419::-;35266:4;35304:2;35293:9;35289:18;35281:26;;35353:9;35347:4;35343:20;35339:1;35328:9;35324:17;35317:47;35381:131;35507:4;35381:131;:::i;:::-;35373:139;;35100:419;;;:::o;35525:169::-;35665:21;35661:1;35653:6;35649:14;35642:45;35525:169;:::o;35700:366::-;35842:3;35863:67;35927:2;35922:3;35863:67;:::i;:::-;35856:74;;35939:93;36028:3;35939:93;:::i;:::-;36057:2;36052:3;36048:12;36041:19;;35700:366;;;:::o;36072:419::-;36238:4;36276:2;36265:9;36261:18;36253:26;;36325:9;36319:4;36315:20;36311:1;36300:9;36296:17;36289:47;36353:131;36479:4;36353:131;:::i;:::-;36345:139;;36072:419;;;:::o;36497:194::-;36537:4;36557:20;36575:1;36557:20;:::i;:::-;36552:25;;36591:20;36609:1;36591:20;:::i;:::-;36586:25;;36635:1;36632;36628:9;36620:17;;36659:1;36653:4;36650:11;36647:37;;;36664:18;;:::i;:::-;36647:37;36497:194;;;;:::o;36697:225::-;36837:34;36833:1;36825:6;36821:14;36814:58;36906:8;36901:2;36893:6;36889:15;36882:33;36697:225;:::o;36928:366::-;37070:3;37091:67;37155:2;37150:3;37091:67;:::i;:::-;37084:74;;37167:93;37256:3;37167:93;:::i;:::-;37285:2;37280:3;37276:12;37269:19;;36928:366;;;:::o;37300:419::-;37466:4;37504:2;37493:9;37489:18;37481:26;;37553:9;37547:4;37543:20;37539:1;37528:9;37524:17;37517:47;37581:131;37707:4;37581:131;:::i;:::-;37573:139;;37300:419;;;:::o;37725:180::-;37773:77;37770:1;37763:88;37870:4;37867:1;37860:15;37894:4;37891:1;37884:15;37911:180;37959:77;37956:1;37949:88;38056:4;38053:1;38046:15;38080:4;38077:1;38070:15;38097:143;38154:5;38185:6;38179:13;38170:22;;38201:33;38228:5;38201:33;:::i;:::-;38097:143;;;;:::o;38246:351::-;38316:6;38365:2;38353:9;38344:7;38340:23;38336:32;38333:119;;;38371:79;;:::i;:::-;38333:119;38491:1;38516:64;38572:7;38563:6;38552:9;38548:22;38516:64;:::i;:::-;38506:74;;38462:128;38246:351;;;;:::o;38603:85::-;38648:7;38677:5;38666:16;;38603:85;;;:::o;38694:158::-;38752:9;38785:61;38803:42;38812:32;38838:5;38812:32;:::i;:::-;38803:42;:::i;:::-;38785:61;:::i;:::-;38772:74;;38694:158;;;:::o;38858:147::-;38953:45;38992:5;38953:45;:::i;:::-;38948:3;38941:58;38858:147;;:::o;39011:114::-;39078:6;39112:5;39106:12;39096:22;;39011:114;;;:::o;39131:184::-;39230:11;39264:6;39259:3;39252:19;39304:4;39299:3;39295:14;39280:29;;39131:184;;;;:::o;39321:132::-;39388:4;39411:3;39403:11;;39441:4;39436:3;39432:14;39424:22;;39321:132;;;:::o;39459:108::-;39536:24;39554:5;39536:24;:::i;:::-;39531:3;39524:37;39459:108;;:::o;39573:179::-;39642:10;39663:46;39705:3;39697:6;39663:46;:::i;:::-;39741:4;39736:3;39732:14;39718:28;;39573:179;;;;:::o;39758:113::-;39828:4;39860;39855:3;39851:14;39843:22;;39758:113;;;:::o;39907:732::-;40026:3;40055:54;40103:5;40055:54;:::i;:::-;40125:86;40204:6;40199:3;40125:86;:::i;:::-;40118:93;;40235:56;40285:5;40235:56;:::i;:::-;40314:7;40345:1;40330:284;40355:6;40352:1;40349:13;40330:284;;;40431:6;40425:13;40458:63;40517:3;40502:13;40458:63;:::i;:::-;40451:70;;40544:60;40597:6;40544:60;:::i;:::-;40534:70;;40390:224;40377:1;40374;40370:9;40365:14;;40330:284;;;40334:14;40630:3;40623:10;;40031:608;;;39907:732;;;;:::o;40645:831::-;40908:4;40946:3;40935:9;40931:19;40923:27;;40960:71;41028:1;41017:9;41013:17;41004:6;40960:71;:::i;:::-;41041:80;41117:2;41106:9;41102:18;41093:6;41041:80;:::i;:::-;41168:9;41162:4;41158:20;41153:2;41142:9;41138:18;41131:48;41196:108;41299:4;41290:6;41196:108;:::i;:::-;41188:116;;41314:72;41382:2;41371:9;41367:18;41358:6;41314:72;:::i;:::-;41396:73;41464:3;41453:9;41449:19;41440:6;41396:73;:::i;:::-;40645:831;;;;;;;;:::o;41482:179::-;41622:31;41618:1;41610:6;41606:14;41599:55;41482:179;:::o;41667:366::-;41809:3;41830:67;41894:2;41889:3;41830:67;:::i;:::-;41823:74;;41906:93;41995:3;41906:93;:::i;:::-;42024:2;42019:3;42015:12;42008:19;;41667:366;;;:::o;42039:419::-;42205:4;42243:2;42232:9;42228:18;42220:26;;42292:9;42286:4;42282:20;42278:1;42267:9;42263:17;42256:47;42320:131;42446:4;42320:131;:::i;:::-;42312:139;;42039:419;;;:::o;42464:147::-;42565:11;42602:3;42587:18;;42464:147;;;;:::o;42617:114::-;;:::o;42737:398::-;42896:3;42917:83;42998:1;42993:3;42917:83;:::i;:::-;42910:90;;43009:93;43098:3;43009:93;:::i;:::-;43127:1;43122:3;43118:11;43111:18;;42737:398;;;:::o;43141:379::-;43325:3;43347:147;43490:3;43347:147;:::i;:::-;43340:154;;43511:3;43504:10;;43141:379;;;:::o;43526:245::-;43666:34;43662:1;43654:6;43650:14;43643:58;43735:28;43730:2;43722:6;43718:15;43711:53;43526:245;:::o;43777:366::-;43919:3;43940:67;44004:2;43999:3;43940:67;:::i;:::-;43933:74;;44016:93;44105:3;44016:93;:::i;:::-;44134:2;44129:3;44125:12;44118:19;;43777:366;;;:::o;44149:419::-;44315:4;44353:2;44342:9;44338:18;44330:26;;44402:9;44396:4;44392:20;44388:1;44377:9;44373:17;44366:47;44430:131;44556:4;44430:131;:::i;:::-;44422:139;;44149:419;;;:::o

Swarm Source

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