ETH Price: $2,477.65 (+1.17%)
 

Overview

Max Total Supply

1,000,000,000 FakeAI

Holders

4,517 ( 0.066%)

Market

Price

$0.01 @ 0.000003 ETH (+0.61%)

Onchain Market Cap

$7,172,260.00

Circulating Supply Market Cap

$6,870,875.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
37,073.648380885100695668 FakeAI

Value
$265.90 ( ~0.107319401657506 Eth) [0.0037%]
0xcf482124f10a9f3fd8e235ddaee5c14075ac669e
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

DeepFakeAI is a program that allows people to create deep fakes in a few clicks using our Telegram Bot and Web app.

Market

Volume (24H):$25,737.00
Market Capitalization:$6,870,875.00
Circulating Supply:958,824,031.00 FakeAI
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume
1
MEXC
FAKEAI-USDT$0.007
0.0000028 Eth
$12,556.51
1,784,643.550 FAKEAI
49.3514%
2
Uniswap V2 (Ethereum)
0X5AEF5BBA19E6A1644805BD4F5C93C8557B87C62C-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2$0.0073
0.0000030 Eth
$7,326.07
1,014,893.900 0X5AEF5BBA19E6A1644805BD4F5C93C8557B87C62C
28.0652%
3
Gate.io
FAKEAI-USDT$0.0072
0.0000029 Eth
$5,580.06
807,256.400 FAKEAI
22.3233%
4
Uniswap V3 (Ethereum)
0X9AFC975EDB8A0B57F066E8E0A72A5E2ADBDCB605-0X5AEF5BBA19E6A1644805BD4F5C93C8557B87C62C$0.0071
0.0000029 Eth
$384.04
9,405.297 0X9AFC975EDB8A0B57F066E8E0A72A5E2ADBDCB605
0.2601%

Contract Source Code Verified (Exact Match)

Contract Name:
DeepFakeAI

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
 * Website: FakeAI.io
 * Telegram: https://t.me/FakeAI
 * Twitter: https://twitter.com/DeepFakeAI_
*/

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

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

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

contract DeepFakeAI is ERC20, Ownable {

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

    IDexRouter public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address public TreasuryAddress;

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

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

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

    uint256 public tokensForTreasury;
    uint256 public tokensForLiquidity;

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

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

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event EnabledTrading(bool tradingActive);
    event RemovedLimits();
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event UpdatedMaxBuyAmount(uint256 newAmount);
    event UpdatedMaxSellAmount(uint256 newAmount);
    event UpdatedMaxWalletAmount(uint256 newAmount);
    event UpdatedTreasuryAddress(address indexed newWallet);
    event UpdatedRewardsAddress(address indexed newWallet);
    event MaxTransactionExclusion(address _address, bool excluded);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    constructor() ERC20("DeepFakeAI", "FakeAI") {

        address newOwner = msg.sender; 

        IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

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

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

        uint256 totalSupply = 1000000000 * 1e18;

        maxBuyAmount = totalSupply *  20 / 1000;
        maxSellAmount = totalSupply *  20 / 1000;
        maxWalletAmount = totalSupply * 20 / 1000;
        swapTokensAtAmount = totalSupply * 50 / 100000; 

        buyTreasuryFee = 2;
        buyLiquidityFee = 1;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee;

        sellTreasuryFee = 2;
        sellLiquidityFee = 1;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee;

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

        TreasuryAddress = address(0xac9976241993Edae3Dc0d1FaC87c326e1Df6C535);

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

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

    receive() external payable {}

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

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

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

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

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

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

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

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

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

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

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

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");

        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead)){
                if(!tradingActive){
                    require(_isExcludedMaxTransactionAmount[from] || _isExcludedMaxTransactionAmount[to], "Trading is not active.");
                    require(from == owner(), "Trading is enabled");
                }

                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                }
                else if (!_isExcludedMaxTransactionAmount[to] && !_isExcludedMaxTransactionAmount[from]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

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

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

        if(takeFee){
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees /100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForTreasury += fees * sellTreasuryFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForTreasury += fees * buyTreasuryFee / buyTotalFees;
            }

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

            amount -= fees;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

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

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

    function multiSend(address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

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

        uint256 SCCC = 0;

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

        require(balanceOf(msg.sender) >= SCCC, "Not enough tokens in wallet");

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

    function setTreasuryAddress(address _TreasuryAddress) external onlyOwner {
        require(_TreasuryAddress != address(0), "_TreasuryAddress address cannot be 0");
        TreasuryAddress = payable(_TreasuryAddress);
        emit UpdatedTreasuryAddress(_TreasuryAddress);
    }

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

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

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

        bool success;

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

        swapTokensForEth(contractBalance - liquidityTokens);

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

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

        ethForLiquidity -= ethForTreasury;

        tokensForLiquidity = 0;
        tokensForTreasury = 0;

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

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

    function claimStuckTokens(address _token) external onlyOwner {
        if (_token == address(0x0)) {
            payable(owner()).transfer(address(this).balance);
            return;
        }
        IERC20 erc20token = IERC20(_token);
        uint256 balance = erc20token.balanceOf(address(this));
        erc20token.transfer(owner(), balance);
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"tradingActive","type":"bool"}],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedRewardsAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedTreasuryAddress","type":"event"},{"inputs":[],"name":"TreasuryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_TreasuryAddress","type":"address"}],"name":"setTreasuryAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTreasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"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 IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600b60146101000a81548160ff0219169083151502179055506000600b60156101000a81548160ff0219169083151502179055506000600b60166101000a81548160ff0219169083151502179055503480156200006257600080fd5b506040518060400160405280600a81526020017f4465657046616b654149000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f46616b65414900000000000000000000000000000000000000000000000000008152508160039080519060200190620000e792919062000b73565b5080600490805190602001906200010092919062000b73565b505050600062000115620005af60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001e5816001620005b760201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000265573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028b919062000c8d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000319919062000c8d565b6040518363ffffffff1660e01b81526004016200033892919062000cd0565b6020604051808303816000875af115801562000358573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037e919062000c8d565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003c660a05160016200064d60201b60201c565b60006b033b2e3c9fd0803ce800000090506103e8601482620003e9919062000d36565b620003f5919062000dc6565b6006819055506103e86014826200040d919062000d36565b62000419919062000dc6565b6007819055506103e860148262000431919062000d36565b6200043d919062000dc6565b600881905550620186a060328262000456919062000d36565b62000462919062000dc6565b600a819055506002600d819055506001600e81905550600e54600d546200048a919062000dfe565b600c8190555060026010819055506001601181905550601154601054620004b2919062000dfe565b600f81905550620004cb836001620005b760201b60201c565b620004de306001620005b760201b60201c565b620004f361dead6001620005b760201b60201c565b73ac9976241993edae3dc0d1fac87c326e1df6c535600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200055b8360016200070060201b60201c565b6200056e3060016200070060201b60201c565b6200058361dead60016200070060201b60201c565b6200059583826200084d60201b60201c565b620005a6836200099e60201b60201c565b505050620010e2565b600033905090565b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674682826040516200064192919062000e78565b60405180910390a15050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006b68282620005b760201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b62000710620005af60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620007a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007999062000f06565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000841919062000f28565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620008c0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008b79062000f95565b60405180910390fd5b8060026000828254620008d4919062000dfe565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200092b919062000dfe565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000992919062000fc8565b60405180910390a35050565b620009ae620005af60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a379062000f06565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000ab3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000aaa906200105b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b82805462000b8190620010ac565b90600052602060002090601f01602090048101928262000ba5576000855562000bf1565b82601f1062000bc057805160ff191683800117855562000bf1565b8280016001018555821562000bf1579182015b8281111562000bf057825182559160200191906001019062000bd3565b5b50905062000c00919062000c04565b5090565b5b8082111562000c1f57600081600090555060010162000c05565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c558262000c28565b9050919050565b62000c678162000c48565b811462000c7357600080fd5b50565b60008151905062000c878162000c5c565b92915050565b60006020828403121562000ca65762000ca562000c23565b5b600062000cb68482850162000c76565b91505092915050565b62000cca8162000c48565b82525050565b600060408201905062000ce7600083018562000cbf565b62000cf6602083018462000cbf565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d438262000cfd565b915062000d508362000cfd565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d8c5762000d8b62000d07565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000dd38262000cfd565b915062000de08362000cfd565b92508262000df35762000df262000d97565b5b828204905092915050565b600062000e0b8262000cfd565b915062000e188362000cfd565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000e505762000e4f62000d07565b5b828201905092915050565b60008115159050919050565b62000e728162000e5b565b82525050565b600060408201905062000e8f600083018562000cbf565b62000e9e602083018462000e67565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000eee60208362000ea5565b915062000efb8262000eb6565b602082019050919050565b6000602082019050818103600083015262000f218162000edf565b9050919050565b600060208201905062000f3f600083018462000e67565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000f7d601f8362000ea5565b915062000f8a8262000f45565b602082019050919050565b6000602082019050818103600083015262000fb08162000f6e565b9050919050565b62000fc28162000cfd565b82525050565b600060208201905062000fdf600083018462000fb7565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006200104360268362000ea5565b9150620010508262000fe5565b604082019050919050565b60006020820190508181036000830152620010768162001034565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620010c557607f821691505b60208210811415620010dc57620010db6200107d565b5b50919050565b60805160a051615a68620011396000396000818161102c0152818161166301526118a7015260008181610ce801528181613b4b01528181613c2c01528181613c5301528181613cef0152613d160152615a686000f3fe6080604052600436106102975760003560e01c80637571336a1161015a578063c18bc195116100c1578063e2f456051161007a578063e2f4560514610a15578063f11a24d314610a40578063f275f64b14610a6b578063f2fde38b14610a94578063f637434214610abd578063f9d0831a14610ae85761029e565b8063c18bc19514610907578063cc2ffe7c14610930578063d257b34f1461095b578063d85ba06314610984578063dc3f0d0f146109af578063dd62ed3e146109d85761029e565b8063a9059cbb11610113578063a9059cbb146107e5578063aa4bde2814610822578063b62496f51461084d578063bb4c9f0b1461088a578063bbc0c742146108b3578063c0246668146108de5761029e565b80637571336a146106d557806388e765ff146106fe5780638da5cb5b1461072957806395d89b41146107545780639a7a23d61461077f578063a457c2d7146107a85761029e565b80634a62bb65116101fe5780636a486a8e116101b75780636a486a8e146105e95780636b2fb124146106145780636ddd17131461063f57806370a082311461066a578063715018a6146106a7578063751039fc146106be5761029e565b80634a62bb65146104eb5780635b5c251f146105165780635c068a8c146105415780636605bfda1461056c57806366ca9b831461059557806366d602ae146105be5761029e565b80631a8145bb116102505780631a8145bb146103c757806323b872dd146103f25780632be32b611461042f578063313ce56714610458578063395093511461048357806349bd5a5e146104c05761029e565b806302dbd8f8146102a357806306fdde03146102cc578063095ea7b3146102f757806310d5de53146103345780631694505e1461037157806318160ddd1461039c5761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102ca60048036038101906102c59190613e0a565b610b11565b005b3480156102d857600080fd5b506102e1610c16565b6040516102ee9190613ee3565b60405180910390f35b34801561030357600080fd5b5061031e60048036038101906103199190613f63565b610ca8565b60405161032b9190613fbe565b60405180910390f35b34801561034057600080fd5b5061035b60048036038101906103569190613fd9565b610cc6565b6040516103689190613fbe565b60405180910390f35b34801561037d57600080fd5b50610386610ce6565b6040516103939190614065565b60405180910390f35b3480156103a857600080fd5b506103b1610d0a565b6040516103be919061408f565b60405180910390f35b3480156103d357600080fd5b506103dc610d14565b6040516103e9919061408f565b60405180910390f35b3480156103fe57600080fd5b50610419600480360381019061041491906140aa565b610d1a565b6040516104269190613fbe565b60405180910390f35b34801561043b57600080fd5b50610456600480360381019061045191906140fd565b610e12565b005b34801561046457600080fd5b5061046d610f75565b60405161047a9190614146565b60405180910390f35b34801561048f57600080fd5b506104aa60048036038101906104a59190613f63565b610f7e565b6040516104b79190613fbe565b60405180910390f35b3480156104cc57600080fd5b506104d561102a565b6040516104e29190614170565b60405180910390f35b3480156104f757600080fd5b5061050061104e565b60405161050d9190613fbe565b60405180910390f35b34801561052257600080fd5b5061052b611061565b6040516105389190614170565b60405180910390f35b34801561054d57600080fd5b50610556611087565b604051610563919061408f565b60405180910390f35b34801561057857600080fd5b50610593600480360381019061058e9190613fd9565b61108d565b005b3480156105a157600080fd5b506105bc60048036038101906105b79190613e0a565b61121b565b005b3480156105ca57600080fd5b506105d3611320565b6040516105e0919061408f565b60405180910390f35b3480156105f557600080fd5b506105fe611326565b60405161060b919061408f565b60405180910390f35b34801561062057600080fd5b5061062961132c565b604051610636919061408f565b60405180910390f35b34801561064b57600080fd5b50610654611332565b6040516106619190613fbe565b60405180910390f35b34801561067657600080fd5b50610691600480360381019061068c9190613fd9565b611345565b60405161069e919061408f565b60405180910390f35b3480156106b357600080fd5b506106bc61138d565b005b3480156106ca57600080fd5b506106d36114e5565b005b3480156106e157600080fd5b506106fc60048036038101906106f791906141b7565b6115c5565b005b34801561070a57600080fd5b5061071361174c565b604051610720919061408f565b60405180910390f35b34801561073557600080fd5b5061073e611752565b60405161074b9190614170565b60405180910390f35b34801561076057600080fd5b5061076961177c565b6040516107769190613ee3565b60405180910390f35b34801561078b57600080fd5b506107a660048036038101906107a191906141b7565b61180e565b005b3480156107b457600080fd5b506107cf60048036038101906107ca9190613f63565b611942565b6040516107dc9190613fbe565b60405180910390f35b3480156107f157600080fd5b5061080c60048036038101906108079190613f63565b611a2d565b6040516108199190613fbe565b60405180910390f35b34801561082e57600080fd5b50610837611a4b565b604051610844919061408f565b60405180910390f35b34801561085957600080fd5b50610874600480360381019061086f9190613fd9565b611a51565b6040516108819190613fbe565b60405180910390f35b34801561089657600080fd5b506108b160048036038101906108ac91906142b2565b611a71565b005b3480156108bf57600080fd5b506108c8611cdc565b6040516108d59190613fbe565b60405180910390f35b3480156108ea57600080fd5b50610905600480360381019061090091906141b7565b611cef565b005b34801561091357600080fd5b5061092e600480360381019061092991906140fd565b611e2f565b005b34801561093c57600080fd5b50610945611f92565b604051610952919061408f565b60405180910390f35b34801561096757600080fd5b50610982600480360381019061097d91906140fd565b611f98565b005b34801561099057600080fd5b50610999612100565b6040516109a6919061408f565b60405180910390f35b3480156109bb57600080fd5b506109d660048036038101906109d191906140fd565b612106565b005b3480156109e457600080fd5b506109ff60048036038101906109fa9190614333565b612269565b604051610a0c919061408f565b60405180910390f35b348015610a2157600080fd5b50610a2a6122f0565b604051610a37919061408f565b60405180910390f35b348015610a4c57600080fd5b50610a556122f6565b604051610a62919061408f565b60405180910390f35b348015610a7757600080fd5b50610a926004803603810190610a8d9190614373565b6122fc565b005b348015610aa057600080fd5b50610abb6004803603810190610ab69190613fd9565b612461565b005b348015610ac957600080fd5b50610ad2612628565b604051610adf919061408f565b60405180910390f35b348015610af457600080fd5b50610b0f6004803603810190610b0a9190613fd9565b61262e565b005b610b1961285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9f906143ec565b60405180910390fd5b8160108190555080601181905550601154601054610bc6919061443b565b600f81905550601e600f541115610c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c09906144dd565b60405180910390fd5b5050565b606060038054610c259061452c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c519061452c565b8015610c9e5780601f10610c7357610100808354040283529160200191610c9e565b820191906000526020600020905b815481529060010190602001808311610c8157829003601f168201915b5050505050905090565b6000610cbc610cb561285c565b8484612864565b6001905092915050565b60156020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60135481565b6000610d27848484612a2f565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d7261285c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610df2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de9906145d0565b60405180910390fd5b610e0685610dfe61285c565b858403612864565b60019150509392505050565b610e1a61285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea0906143ec565b60405180910390fd5b670de0b6b3a76400006103e86001610ebf610d0a565b610ec991906145f0565b610ed39190614679565b610edd9190614679565b811015610f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f169061471c565b60405180910390fd5b670de0b6b3a764000081610f3391906145f0565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009600654604051610f6a919061408f565b60405180910390a150565b60006012905090565b6000611020610f8b61285c565b848460016000610f9961285c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461101b919061443b565b612864565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b60149054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b61109561285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111b906143ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611194576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118b906147ae565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f60405160405180910390a250565b61122361285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a9906143ec565b60405180910390fd5b81600d8190555080600e81905550600e54600d546112d0919061443b565b600c81905550600f600c54111561131c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113139061481a565b60405180910390fd5b5050565b60075481565b600f5481565b60105481565b600b60169054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61139561285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141b906143ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6114ed61285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461157c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611573906143ec565b60405180910390fd5b6000600b60146101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b6115cd61285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461165c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611653906143ec565b60405180910390fd5b806116f1577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e7906148ac565b60405180910390fd5b5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60065481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461178b9061452c565b80601f01602080910402602001604051908101604052809291908181526020018280546117b79061452c565b80156118045780601f106117d957610100808354040283529160200191611804565b820191906000526020600020905b8154815290600101906020018083116117e757829003601f168201915b5050505050905090565b61181661285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189c906143ec565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192b9061493e565b60405180910390fd5b61193e828261354c565b5050565b6000806001600061195161285c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a05906149d0565b60405180910390fd5b611a22611a1961285c565b85858403612864565b600191505092915050565b6000611a41611a3a61285c565b8484612a2f565b6001905092915050565b60085481565b60166020528060005260406000206000915054906101000a900460ff1681565b611a7961285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aff906143ec565b60405180910390fd5b6103218484905010611b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4690614a62565b60405180910390fd5b818190508484905014611b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8e90614af4565b60405180910390fd5b6000805b85859050811015611bfe57611bae610f75565b600a611bba9190614c47565b848483818110611bcd57611bcc614c92565b5b90506020020135611bde91906145f0565b82611be9919061443b565b91508080611bf690614cc1565b915050611b9b565b5080611c0933611345565b1015611c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4190614d56565b60405180910390fd5b60005b85859050811015611cd457611cc133878784818110611c6f57611c6e614c92565b5b9050602002016020810190611c849190613fd9565b611c8c610f75565b600a611c989190614c47565b878786818110611cab57611caa614c92565b5b90506020020135611cbc91906145f0565b612a2f565b8080611ccc90614cc1565b915050611c4d565b505050505050565b600b60159054906101000a900460ff1681565b611cf761285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7d906143ec565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611e239190613fbe565b60405180910390a25050565b611e3761285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebd906143ec565b60405180910390fd5b670de0b6b3a76400006103e86003611edc610d0a565b611ee691906145f0565b611ef09190614679565b611efa9190614679565b811015611f3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3390614de8565b60405180910390fd5b670de0b6b3a764000081611f5091906145f0565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc600854604051611f87919061408f565b60405180910390a150565b60125481565b611fa061285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461202f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612026906143ec565b60405180910390fd5b620186a0600161203d610d0a565b61204791906145f0565b6120519190614679565b811015612093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208a90614e7a565b60405180910390fd5b6103e860016120a0610d0a565b6120aa91906145f0565b6120b49190614679565b8111156120f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ed90614f0c565b60405180910390fd5b80600a8190555050565b600c5481565b61210e61285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461219d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612194906143ec565b60405180910390fd5b670de0b6b3a76400006103e860016121b3610d0a565b6121bd91906145f0565b6121c79190614679565b6121d19190614679565b811015612213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220a90614f9e565b60405180910390fd5b670de0b6b3a76400008161222791906145f0565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e60075460405161225e919061408f565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600e5481565b61230461285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238a906143ec565b60405180910390fd5b600b60159054906101000a900460ff16156123e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123da9061500a565b60405180910390fd5b80600b60156101000a81548160ff0219169083151502179055506001600b60166101000a81548160ff0219169083151502179055507fe8a59d3db38e5220ac9d0f72590b7ac876e0916dc8f4db3e7614e6f91fe52089600b60159054906101000a900460ff166040516124569190613fbe565b60405180910390a150565b61246961285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ef906143ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255f9061509c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b61263661285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bc906143ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561274d57612702611752565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612747573d6000803e3d6000fd5b50612859565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161278d9190614170565b602060405180830381865afa1580156127aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ce91906150d1565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6127f4611752565b836040518363ffffffff1660e01b81526004016128129291906150fe565b6020604051808303816000875af1158015612831573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612855919061513c565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128cb906151db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293b9061526d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a22919061408f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a96906152ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0690615391565b60405180910390fd5b60008111612b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b49906153fd565b60405180910390fd5b600b60149054906101000a900460ff161561310157612b6f611752565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612bdd5750612bad611752565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c165750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c50575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561310057600b60159054906101000a900460ff16612dbf57601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d0a5750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4090615469565b60405180910390fd5b612d51611752565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db5906154d5565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e625750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f0957600654811115612eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea390615567565b60405180910390fd5b600854612eb883611345565b82612ec3919061443b565b1115612f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612efb906155d3565b60405180910390fd5b6130ff565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fac5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ffb57600754811115612ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fed90615665565b60405180910390fd5b6130fe565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561309f5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130fd576008546130b083611345565b826130bb919061443b565b11156130fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f3906155d3565b60405180910390fd5b5b5b5b5b5b600061310c30611345565b90506000600a5482101590508080156131315750600b60169054906101000a900460ff165b801561314a5750600960009054906101000a900460ff16155b80156131a05750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131f65750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561324c5750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613290576001600960006101000a81548160ff0219169083151502179055506132746135f7565b6000600960006101000a81548160ff0219169083151502179055505b600060019050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133375750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561334157600090505b6000811561353857601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133a457506000600f54115b15613430576064600f54866133b991906145f0565b6133c39190614679565b9050600f54601154826133d691906145f0565b6133e09190614679565b601360008282546133f1919061443b565b92505081905550600f546010548261340991906145f0565b6134139190614679565b60126000828254613424919061443b565b92505081905550613514565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561348b57506000600c54115b15613513576064600c54866134a091906145f0565b6134aa9190614679565b9050600c54600e54826134bd91906145f0565b6134c79190614679565b601360008282546134d8919061443b565b92505081905550600c54600d54826134f091906145f0565b6134fa9190614679565b6012600082825461350b919061443b565b925050819055505b5b6000811115613529576135288730836137ad565b5b80856135359190615685565b94505b6135438787876137ad565b50505050505050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506135ad8282613a18565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600061360230611345565b90506000601254601354613616919061443b565b905060008214806136275750600081145b156136335750506137ab565b600a805461364191906145f0565b82111561365957600a805461365691906145f0565b91505b6000806002836013548661366d91906145f0565b6136779190614679565b6136819190614679565b905061369781856136929190615685565b613aac565b60004790506000819050600060026013546136b29190614679565b866136bd9190615685565b601254846136cb91906145f0565b6136d59190614679565b905080826136e39190615685565b9150600060138190555060006012819055506000841180156137055750600082115b15613715576137148483613ce9565b5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161375b906156ea565b60006040518083038185875af1925050503d8060008114613798576040519150601f19603f3d011682016040523d82523d6000602084013e61379d565b606091505b505080955050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561381d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613814906152ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561388d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161388490615391565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161390a90615771565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546139a6919061443b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613a0a919061408f565b60405180910390a350505050565b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613aa0929190615791565b60405180910390a15050565b6000600267ffffffffffffffff811115613ac957613ac86157ba565b5b604051908082528060200260200182016040528015613af75781602001602082028036833780820191505090505b5090503081600081518110613b0f57613b0e614c92565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bd891906157fe565b81600181518110613bec57613beb614c92565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613c51307f000000000000000000000000000000000000000000000000000000000000000084612864565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613cb3959493929190615924565b600060405180830381600087803b158015613ccd57600080fd5b505af1158015613ce1573d6000803e3d6000fd5b505050505050565b613d14307f000000000000000000000000000000000000000000000000000000000000000084612864565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613d5e611752565b426040518863ffffffff1660e01b8152600401613d809695949392919061597e565b60606040518083038185885af1158015613d9e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613dc391906159df565b5050505050565b600080fd5b600080fd5b6000819050919050565b613de781613dd4565b8114613df257600080fd5b50565b600081359050613e0481613dde565b92915050565b60008060408385031215613e2157613e20613dca565b5b6000613e2f85828601613df5565b9250506020613e4085828601613df5565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613e84578082015181840152602081019050613e69565b83811115613e93576000848401525b50505050565b6000601f19601f8301169050919050565b6000613eb582613e4a565b613ebf8185613e55565b9350613ecf818560208601613e66565b613ed881613e99565b840191505092915050565b60006020820190508181036000830152613efd8184613eaa565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613f3082613f05565b9050919050565b613f4081613f25565b8114613f4b57600080fd5b50565b600081359050613f5d81613f37565b92915050565b60008060408385031215613f7a57613f79613dca565b5b6000613f8885828601613f4e565b9250506020613f9985828601613df5565b9150509250929050565b60008115159050919050565b613fb881613fa3565b82525050565b6000602082019050613fd36000830184613faf565b92915050565b600060208284031215613fef57613fee613dca565b5b6000613ffd84828501613f4e565b91505092915050565b6000819050919050565b600061402b61402661402184613f05565b614006565b613f05565b9050919050565b600061403d82614010565b9050919050565b600061404f82614032565b9050919050565b61405f81614044565b82525050565b600060208201905061407a6000830184614056565b92915050565b61408981613dd4565b82525050565b60006020820190506140a46000830184614080565b92915050565b6000806000606084860312156140c3576140c2613dca565b5b60006140d186828701613f4e565b93505060206140e286828701613f4e565b92505060406140f386828701613df5565b9150509250925092565b60006020828403121561411357614112613dca565b5b600061412184828501613df5565b91505092915050565b600060ff82169050919050565b6141408161412a565b82525050565b600060208201905061415b6000830184614137565b92915050565b61416a81613f25565b82525050565b60006020820190506141856000830184614161565b92915050565b61419481613fa3565b811461419f57600080fd5b50565b6000813590506141b18161418b565b92915050565b600080604083850312156141ce576141cd613dca565b5b60006141dc85828601613f4e565b92505060206141ed858286016141a2565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261421c5761421b6141f7565b5b8235905067ffffffffffffffff811115614239576142386141fc565b5b60208301915083602082028301111561425557614254614201565b5b9250929050565b60008083601f840112614272576142716141f7565b5b8235905067ffffffffffffffff81111561428f5761428e6141fc565b5b6020830191508360208202830111156142ab576142aa614201565b5b9250929050565b600080600080604085870312156142cc576142cb613dca565b5b600085013567ffffffffffffffff8111156142ea576142e9613dcf565b5b6142f687828801614206565b9450945050602085013567ffffffffffffffff81111561431957614318613dcf565b5b6143258782880161425c565b925092505092959194509250565b6000806040838503121561434a57614349613dca565b5b600061435885828601613f4e565b925050602061436985828601613f4e565b9150509250929050565b60006020828403121561438957614388613dca565b5b6000614397848285016141a2565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006143d6602083613e55565b91506143e1826143a0565b602082019050919050565b60006020820190508181036000830152614405816143c9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061444682613dd4565b915061445183613dd4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156144865761448561440c565b5b828201905092915050565b7f4d757374206b656570206665657320617420333025206f72206c657373000000600082015250565b60006144c7601d83613e55565b91506144d282614491565b602082019050919050565b600060208201905081810360008301526144f6816144ba565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061454457607f821691505b60208210811415614558576145576144fd565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006145ba602883613e55565b91506145c58261455e565b604082019050919050565b600060208201905081810360008301526145e9816145ad565b9050919050565b60006145fb82613dd4565b915061460683613dd4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561463f5761463e61440c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061468482613dd4565b915061468f83613dd4565b92508261469f5761469e61464a565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614706602983613e55565b9150614711826146aa565b604082019050919050565b60006020820190508181036000830152614735816146f9565b9050919050565b7f5f54726561737572794164647265737320616464726573732063616e6e6f742060008201527f6265203000000000000000000000000000000000000000000000000000000000602082015250565b6000614798602483613e55565b91506147a38261473c565b604082019050919050565b600060208201905081810360008301526147c78161478b565b9050919050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b6000614804601d83613e55565b915061480f826147ce565b602082019050919050565b60006020820190508181036000830152614833816147f7565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614896602783613e55565b91506148a18261483a565b604082019050919050565b600060208201905081810360008301526148c581614889565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614928603983613e55565b9150614933826148cc565b604082019050919050565b600060208201905081810360008301526149578161491b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006149ba602583613e55565b91506149c58261495e565b604082019050919050565b600060208201905081810360008301526149e9816149ad565b9050919050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3530302061646472657373657300000000000000000000000000000000000000602082015250565b6000614a4c602d83613e55565b9150614a57826149f0565b604082019050919050565b60006020820190508181036000830152614a7b81614a3f565b9050919050565b7f4d69736d61746368206265747765656e204164647265737320616e6420746f6b60008201527f656e20636f756e74000000000000000000000000000000000000000000000000602082015250565b6000614ade602883613e55565b9150614ae982614a82565b604082019050919050565b60006020820190508181036000830152614b0d81614ad1565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115614b6b57808604811115614b4757614b4661440c565b5b6001851615614b565780820291505b8081029050614b6485614b14565b9450614b2b565b94509492505050565b600082614b845760019050614c40565b81614b925760009050614c40565b8160018114614ba85760028114614bb257614be1565b6001915050614c40565b60ff841115614bc457614bc361440c565b5b8360020a915084821115614bdb57614bda61440c565b5b50614c40565b5060208310610133831016604e8410600b8410161715614c165782820a905083811115614c1157614c1061440c565b5b614c40565b614c238484846001614b21565b92509050818404811115614c3a57614c3961440c565b5b81810290505b9392505050565b6000614c5282613dd4565b9150614c5d8361412a565b9250614c8a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614b74565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614ccc82613dd4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614cff57614cfe61440c565b5b600182019050919050565b7f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000600082015250565b6000614d40601b83613e55565b9150614d4b82614d0a565b602082019050919050565b60006020820190508181036000830152614d6f81614d33565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b6000614dd2602c83613e55565b9150614ddd82614d76565b604082019050919050565b60006020820190508181036000830152614e0181614dc5565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614e64603583613e55565b9150614e6f82614e08565b604082019050919050565b60006020820190508181036000830152614e9381614e57565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614ef6603483613e55565b9150614f0182614e9a565b604082019050919050565b60006020820190508181036000830152614f2581614ee9565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b6000614f88602a83613e55565b9150614f9382614f2c565b604082019050919050565b60006020820190508181036000830152614fb781614f7b565b9050919050565b7f43616e6e6f7420726520656e61626c652074726164696e670000000000000000600082015250565b6000614ff4601883613e55565b9150614fff82614fbe565b602082019050919050565b6000602082019050818103600083015261502381614fe7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615086602683613e55565b91506150918261502a565b604082019050919050565b600060208201905081810360008301526150b581615079565b9050919050565b6000815190506150cb81613dde565b92915050565b6000602082840312156150e7576150e6613dca565b5b60006150f5848285016150bc565b91505092915050565b60006040820190506151136000830185614161565b6151206020830184614080565b9392505050565b6000815190506151368161418b565b92915050565b60006020828403121561515257615151613dca565b5b600061516084828501615127565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006151c5602483613e55565b91506151d082615169565b604082019050919050565b600060208201905081810360008301526151f4816151b8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615257602283613e55565b9150615262826151fb565b604082019050919050565b600060208201905081810360008301526152868161524a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006152e9602583613e55565b91506152f48261528d565b604082019050919050565b60006020820190508181036000830152615318816152dc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061537b602383613e55565b91506153868261531f565b604082019050919050565b600060208201905081810360008301526153aa8161536e565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b60006153e7601d83613e55565b91506153f2826153b1565b602082019050919050565b60006020820190508181036000830152615416816153da565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000615453601683613e55565b915061545e8261541d565b602082019050919050565b6000602082019050818103600083015261548281615446565b9050919050565b7f54726164696e6720697320656e61626c65640000000000000000000000000000600082015250565b60006154bf601283613e55565b91506154ca82615489565b602082019050919050565b600060208201905081810360008301526154ee816154b2565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000615551602883613e55565b915061555c826154f5565b604082019050919050565b6000602082019050818103600083015261558081615544565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b60006155bd601883613e55565b91506155c882615587565b602082019050919050565b600060208201905081810360008301526155ec816155b0565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b600061564f602a83613e55565b915061565a826155f3565b604082019050919050565b6000602082019050818103600083015261567e81615642565b9050919050565b600061569082613dd4565b915061569b83613dd4565b9250828210156156ae576156ad61440c565b5b828203905092915050565b600081905092915050565b50565b60006156d46000836156b9565b91506156df826156c4565b600082019050919050565b60006156f5826156c7565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061575b602683613e55565b9150615766826156ff565b604082019050919050565b6000602082019050818103600083015261578a8161574e565b9050919050565b60006040820190506157a66000830185614161565b6157b36020830184613faf565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506157f881613f37565b92915050565b60006020828403121561581457615813613dca565b5b6000615822848285016157e9565b91505092915050565b6000819050919050565b600061585061584b6158468461582b565b614006565b613dd4565b9050919050565b61586081615835565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61589b81613f25565b82525050565b60006158ad8383615892565b60208301905092915050565b6000602082019050919050565b60006158d182615866565b6158db8185615871565b93506158e683615882565b8060005b838110156159175781516158fe88826158a1565b9750615909836158b9565b9250506001810190506158ea565b5085935050505092915050565b600060a0820190506159396000830188614080565b6159466020830187615857565b818103604083015261595881866158c6565b90506159676060830185614161565b6159746080830184614080565b9695505050505050565b600060c0820190506159936000830189614161565b6159a06020830188614080565b6159ad6040830187615857565b6159ba6060830186615857565b6159c76080830185614161565b6159d460a0830184614080565b979650505050505050565b6000806000606084860312156159f8576159f7613dca565b5b6000615a06868287016150bc565b9350506020615a17868287016150bc565b9250506040615a28868287016150bc565b915050925092509256fea26469706673582212202b3924f2369ad7dbfe9fd105b94c4a05d4bc51962f92db5064ae9a5099609e8564736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106102975760003560e01c80637571336a1161015a578063c18bc195116100c1578063e2f456051161007a578063e2f4560514610a15578063f11a24d314610a40578063f275f64b14610a6b578063f2fde38b14610a94578063f637434214610abd578063f9d0831a14610ae85761029e565b8063c18bc19514610907578063cc2ffe7c14610930578063d257b34f1461095b578063d85ba06314610984578063dc3f0d0f146109af578063dd62ed3e146109d85761029e565b8063a9059cbb11610113578063a9059cbb146107e5578063aa4bde2814610822578063b62496f51461084d578063bb4c9f0b1461088a578063bbc0c742146108b3578063c0246668146108de5761029e565b80637571336a146106d557806388e765ff146106fe5780638da5cb5b1461072957806395d89b41146107545780639a7a23d61461077f578063a457c2d7146107a85761029e565b80634a62bb65116101fe5780636a486a8e116101b75780636a486a8e146105e95780636b2fb124146106145780636ddd17131461063f57806370a082311461066a578063715018a6146106a7578063751039fc146106be5761029e565b80634a62bb65146104eb5780635b5c251f146105165780635c068a8c146105415780636605bfda1461056c57806366ca9b831461059557806366d602ae146105be5761029e565b80631a8145bb116102505780631a8145bb146103c757806323b872dd146103f25780632be32b611461042f578063313ce56714610458578063395093511461048357806349bd5a5e146104c05761029e565b806302dbd8f8146102a357806306fdde03146102cc578063095ea7b3146102f757806310d5de53146103345780631694505e1461037157806318160ddd1461039c5761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102ca60048036038101906102c59190613e0a565b610b11565b005b3480156102d857600080fd5b506102e1610c16565b6040516102ee9190613ee3565b60405180910390f35b34801561030357600080fd5b5061031e60048036038101906103199190613f63565b610ca8565b60405161032b9190613fbe565b60405180910390f35b34801561034057600080fd5b5061035b60048036038101906103569190613fd9565b610cc6565b6040516103689190613fbe565b60405180910390f35b34801561037d57600080fd5b50610386610ce6565b6040516103939190614065565b60405180910390f35b3480156103a857600080fd5b506103b1610d0a565b6040516103be919061408f565b60405180910390f35b3480156103d357600080fd5b506103dc610d14565b6040516103e9919061408f565b60405180910390f35b3480156103fe57600080fd5b50610419600480360381019061041491906140aa565b610d1a565b6040516104269190613fbe565b60405180910390f35b34801561043b57600080fd5b50610456600480360381019061045191906140fd565b610e12565b005b34801561046457600080fd5b5061046d610f75565b60405161047a9190614146565b60405180910390f35b34801561048f57600080fd5b506104aa60048036038101906104a59190613f63565b610f7e565b6040516104b79190613fbe565b60405180910390f35b3480156104cc57600080fd5b506104d561102a565b6040516104e29190614170565b60405180910390f35b3480156104f757600080fd5b5061050061104e565b60405161050d9190613fbe565b60405180910390f35b34801561052257600080fd5b5061052b611061565b6040516105389190614170565b60405180910390f35b34801561054d57600080fd5b50610556611087565b604051610563919061408f565b60405180910390f35b34801561057857600080fd5b50610593600480360381019061058e9190613fd9565b61108d565b005b3480156105a157600080fd5b506105bc60048036038101906105b79190613e0a565b61121b565b005b3480156105ca57600080fd5b506105d3611320565b6040516105e0919061408f565b60405180910390f35b3480156105f557600080fd5b506105fe611326565b60405161060b919061408f565b60405180910390f35b34801561062057600080fd5b5061062961132c565b604051610636919061408f565b60405180910390f35b34801561064b57600080fd5b50610654611332565b6040516106619190613fbe565b60405180910390f35b34801561067657600080fd5b50610691600480360381019061068c9190613fd9565b611345565b60405161069e919061408f565b60405180910390f35b3480156106b357600080fd5b506106bc61138d565b005b3480156106ca57600080fd5b506106d36114e5565b005b3480156106e157600080fd5b506106fc60048036038101906106f791906141b7565b6115c5565b005b34801561070a57600080fd5b5061071361174c565b604051610720919061408f565b60405180910390f35b34801561073557600080fd5b5061073e611752565b60405161074b9190614170565b60405180910390f35b34801561076057600080fd5b5061076961177c565b6040516107769190613ee3565b60405180910390f35b34801561078b57600080fd5b506107a660048036038101906107a191906141b7565b61180e565b005b3480156107b457600080fd5b506107cf60048036038101906107ca9190613f63565b611942565b6040516107dc9190613fbe565b60405180910390f35b3480156107f157600080fd5b5061080c60048036038101906108079190613f63565b611a2d565b6040516108199190613fbe565b60405180910390f35b34801561082e57600080fd5b50610837611a4b565b604051610844919061408f565b60405180910390f35b34801561085957600080fd5b50610874600480360381019061086f9190613fd9565b611a51565b6040516108819190613fbe565b60405180910390f35b34801561089657600080fd5b506108b160048036038101906108ac91906142b2565b611a71565b005b3480156108bf57600080fd5b506108c8611cdc565b6040516108d59190613fbe565b60405180910390f35b3480156108ea57600080fd5b50610905600480360381019061090091906141b7565b611cef565b005b34801561091357600080fd5b5061092e600480360381019061092991906140fd565b611e2f565b005b34801561093c57600080fd5b50610945611f92565b604051610952919061408f565b60405180910390f35b34801561096757600080fd5b50610982600480360381019061097d91906140fd565b611f98565b005b34801561099057600080fd5b50610999612100565b6040516109a6919061408f565b60405180910390f35b3480156109bb57600080fd5b506109d660048036038101906109d191906140fd565b612106565b005b3480156109e457600080fd5b506109ff60048036038101906109fa9190614333565b612269565b604051610a0c919061408f565b60405180910390f35b348015610a2157600080fd5b50610a2a6122f0565b604051610a37919061408f565b60405180910390f35b348015610a4c57600080fd5b50610a556122f6565b604051610a62919061408f565b60405180910390f35b348015610a7757600080fd5b50610a926004803603810190610a8d9190614373565b6122fc565b005b348015610aa057600080fd5b50610abb6004803603810190610ab69190613fd9565b612461565b005b348015610ac957600080fd5b50610ad2612628565b604051610adf919061408f565b60405180910390f35b348015610af457600080fd5b50610b0f6004803603810190610b0a9190613fd9565b61262e565b005b610b1961285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9f906143ec565b60405180910390fd5b8160108190555080601181905550601154601054610bc6919061443b565b600f81905550601e600f541115610c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c09906144dd565b60405180910390fd5b5050565b606060038054610c259061452c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c519061452c565b8015610c9e5780601f10610c7357610100808354040283529160200191610c9e565b820191906000526020600020905b815481529060010190602001808311610c8157829003601f168201915b5050505050905090565b6000610cbc610cb561285c565b8484612864565b6001905092915050565b60156020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60135481565b6000610d27848484612a2f565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d7261285c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610df2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de9906145d0565b60405180910390fd5b610e0685610dfe61285c565b858403612864565b60019150509392505050565b610e1a61285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea0906143ec565b60405180910390fd5b670de0b6b3a76400006103e86001610ebf610d0a565b610ec991906145f0565b610ed39190614679565b610edd9190614679565b811015610f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f169061471c565b60405180910390fd5b670de0b6b3a764000081610f3391906145f0565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009600654604051610f6a919061408f565b60405180910390a150565b60006012905090565b6000611020610f8b61285c565b848460016000610f9961285c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461101b919061443b565b612864565b6001905092915050565b7f00000000000000000000000078359500f08157eac9ef566040242abca8f4d9ab81565b600b60149054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b61109561285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111b906143ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611194576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118b906147ae565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f60405160405180910390a250565b61122361285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a9906143ec565b60405180910390fd5b81600d8190555080600e81905550600e54600d546112d0919061443b565b600c81905550600f600c54111561131c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113139061481a565b60405180910390fd5b5050565b60075481565b600f5481565b60105481565b600b60169054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61139561285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141b906143ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6114ed61285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461157c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611573906143ec565b60405180910390fd5b6000600b60146101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b6115cd61285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461165c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611653906143ec565b60405180910390fd5b806116f1577f00000000000000000000000078359500f08157eac9ef566040242abca8f4d9ab73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e7906148ac565b60405180910390fd5b5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60065481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461178b9061452c565b80601f01602080910402602001604051908101604052809291908181526020018280546117b79061452c565b80156118045780601f106117d957610100808354040283529160200191611804565b820191906000526020600020905b8154815290600101906020018083116117e757829003601f168201915b5050505050905090565b61181661285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189c906143ec565b60405180910390fd5b7f00000000000000000000000078359500f08157eac9ef566040242abca8f4d9ab73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192b9061493e565b60405180910390fd5b61193e828261354c565b5050565b6000806001600061195161285c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a05906149d0565b60405180910390fd5b611a22611a1961285c565b85858403612864565b600191505092915050565b6000611a41611a3a61285c565b8484612a2f565b6001905092915050565b60085481565b60166020528060005260406000206000915054906101000a900460ff1681565b611a7961285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aff906143ec565b60405180910390fd5b6103218484905010611b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4690614a62565b60405180910390fd5b818190508484905014611b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8e90614af4565b60405180910390fd5b6000805b85859050811015611bfe57611bae610f75565b600a611bba9190614c47565b848483818110611bcd57611bcc614c92565b5b90506020020135611bde91906145f0565b82611be9919061443b565b91508080611bf690614cc1565b915050611b9b565b5080611c0933611345565b1015611c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4190614d56565b60405180910390fd5b60005b85859050811015611cd457611cc133878784818110611c6f57611c6e614c92565b5b9050602002016020810190611c849190613fd9565b611c8c610f75565b600a611c989190614c47565b878786818110611cab57611caa614c92565b5b90506020020135611cbc91906145f0565b612a2f565b8080611ccc90614cc1565b915050611c4d565b505050505050565b600b60159054906101000a900460ff1681565b611cf761285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7d906143ec565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611e239190613fbe565b60405180910390a25050565b611e3761285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebd906143ec565b60405180910390fd5b670de0b6b3a76400006103e86003611edc610d0a565b611ee691906145f0565b611ef09190614679565b611efa9190614679565b811015611f3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3390614de8565b60405180910390fd5b670de0b6b3a764000081611f5091906145f0565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc600854604051611f87919061408f565b60405180910390a150565b60125481565b611fa061285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461202f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612026906143ec565b60405180910390fd5b620186a0600161203d610d0a565b61204791906145f0565b6120519190614679565b811015612093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208a90614e7a565b60405180910390fd5b6103e860016120a0610d0a565b6120aa91906145f0565b6120b49190614679565b8111156120f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ed90614f0c565b60405180910390fd5b80600a8190555050565b600c5481565b61210e61285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461219d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612194906143ec565b60405180910390fd5b670de0b6b3a76400006103e860016121b3610d0a565b6121bd91906145f0565b6121c79190614679565b6121d19190614679565b811015612213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220a90614f9e565b60405180910390fd5b670de0b6b3a76400008161222791906145f0565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e60075460405161225e919061408f565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600e5481565b61230461285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238a906143ec565b60405180910390fd5b600b60159054906101000a900460ff16156123e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123da9061500a565b60405180910390fd5b80600b60156101000a81548160ff0219169083151502179055506001600b60166101000a81548160ff0219169083151502179055507fe8a59d3db38e5220ac9d0f72590b7ac876e0916dc8f4db3e7614e6f91fe52089600b60159054906101000a900460ff166040516124569190613fbe565b60405180910390a150565b61246961285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ef906143ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255f9061509c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b61263661285c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126bc906143ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561274d57612702611752565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612747573d6000803e3d6000fd5b50612859565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161278d9190614170565b602060405180830381865afa1580156127aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ce91906150d1565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6127f4611752565b836040518363ffffffff1660e01b81526004016128129291906150fe565b6020604051808303816000875af1158015612831573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612855919061513c565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128cb906151db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293b9061526d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a22919061408f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a96906152ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0690615391565b60405180910390fd5b60008111612b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b49906153fd565b60405180910390fd5b600b60149054906101000a900460ff161561310157612b6f611752565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612bdd5750612bad611752565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c165750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c50575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561310057600b60159054906101000a900460ff16612dbf57601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d0a5750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4090615469565b60405180910390fd5b612d51611752565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db5906154d5565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e625750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f0957600654811115612eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea390615567565b60405180910390fd5b600854612eb883611345565b82612ec3919061443b565b1115612f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612efb906155d3565b60405180910390fd5b6130ff565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fac5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ffb57600754811115612ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fed90615665565b60405180910390fd5b6130fe565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561309f5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130fd576008546130b083611345565b826130bb919061443b565b11156130fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f3906155d3565b60405180910390fd5b5b5b5b5b5b600061310c30611345565b90506000600a5482101590508080156131315750600b60169054906101000a900460ff165b801561314a5750600960009054906101000a900460ff16155b80156131a05750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131f65750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561324c5750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613290576001600960006101000a81548160ff0219169083151502179055506132746135f7565b6000600960006101000a81548160ff0219169083151502179055505b600060019050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133375750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561334157600090505b6000811561353857601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133a457506000600f54115b15613430576064600f54866133b991906145f0565b6133c39190614679565b9050600f54601154826133d691906145f0565b6133e09190614679565b601360008282546133f1919061443b565b92505081905550600f546010548261340991906145f0565b6134139190614679565b60126000828254613424919061443b565b92505081905550613514565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561348b57506000600c54115b15613513576064600c54866134a091906145f0565b6134aa9190614679565b9050600c54600e54826134bd91906145f0565b6134c79190614679565b601360008282546134d8919061443b565b92505081905550600c54600d54826134f091906145f0565b6134fa9190614679565b6012600082825461350b919061443b565b925050819055505b5b6000811115613529576135288730836137ad565b5b80856135359190615685565b94505b6135438787876137ad565b50505050505050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506135ad8282613a18565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600061360230611345565b90506000601254601354613616919061443b565b905060008214806136275750600081145b156136335750506137ab565b600a805461364191906145f0565b82111561365957600a805461365691906145f0565b91505b6000806002836013548661366d91906145f0565b6136779190614679565b6136819190614679565b905061369781856136929190615685565b613aac565b60004790506000819050600060026013546136b29190614679565b866136bd9190615685565b601254846136cb91906145f0565b6136d59190614679565b905080826136e39190615685565b9150600060138190555060006012819055506000841180156137055750600082115b15613715576137148483613ce9565b5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161375b906156ea565b60006040518083038185875af1925050503d8060008114613798576040519150601f19603f3d011682016040523d82523d6000602084013e61379d565b606091505b505080955050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561381d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613814906152ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561388d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161388490615391565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161390a90615771565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546139a6919061443b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613a0a919061408f565b60405180910390a350505050565b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613aa0929190615791565b60405180910390a15050565b6000600267ffffffffffffffff811115613ac957613ac86157ba565b5b604051908082528060200260200182016040528015613af75781602001602082028036833780820191505090505b5090503081600081518110613b0f57613b0e614c92565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bd891906157fe565b81600181518110613bec57613beb614c92565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613c51307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612864565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613cb3959493929190615924565b600060405180830381600087803b158015613ccd57600080fd5b505af1158015613ce1573d6000803e3d6000fd5b505050505050565b613d14307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612864565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613d5e611752565b426040518863ffffffff1660e01b8152600401613d809695949392919061597e565b60606040518083038185885af1158015613d9e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613dc391906159df565b5050505050565b600080fd5b600080fd5b6000819050919050565b613de781613dd4565b8114613df257600080fd5b50565b600081359050613e0481613dde565b92915050565b60008060408385031215613e2157613e20613dca565b5b6000613e2f85828601613df5565b9250506020613e4085828601613df5565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613e84578082015181840152602081019050613e69565b83811115613e93576000848401525b50505050565b6000601f19601f8301169050919050565b6000613eb582613e4a565b613ebf8185613e55565b9350613ecf818560208601613e66565b613ed881613e99565b840191505092915050565b60006020820190508181036000830152613efd8184613eaa565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613f3082613f05565b9050919050565b613f4081613f25565b8114613f4b57600080fd5b50565b600081359050613f5d81613f37565b92915050565b60008060408385031215613f7a57613f79613dca565b5b6000613f8885828601613f4e565b9250506020613f9985828601613df5565b9150509250929050565b60008115159050919050565b613fb881613fa3565b82525050565b6000602082019050613fd36000830184613faf565b92915050565b600060208284031215613fef57613fee613dca565b5b6000613ffd84828501613f4e565b91505092915050565b6000819050919050565b600061402b61402661402184613f05565b614006565b613f05565b9050919050565b600061403d82614010565b9050919050565b600061404f82614032565b9050919050565b61405f81614044565b82525050565b600060208201905061407a6000830184614056565b92915050565b61408981613dd4565b82525050565b60006020820190506140a46000830184614080565b92915050565b6000806000606084860312156140c3576140c2613dca565b5b60006140d186828701613f4e565b93505060206140e286828701613f4e565b92505060406140f386828701613df5565b9150509250925092565b60006020828403121561411357614112613dca565b5b600061412184828501613df5565b91505092915050565b600060ff82169050919050565b6141408161412a565b82525050565b600060208201905061415b6000830184614137565b92915050565b61416a81613f25565b82525050565b60006020820190506141856000830184614161565b92915050565b61419481613fa3565b811461419f57600080fd5b50565b6000813590506141b18161418b565b92915050565b600080604083850312156141ce576141cd613dca565b5b60006141dc85828601613f4e565b92505060206141ed858286016141a2565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261421c5761421b6141f7565b5b8235905067ffffffffffffffff811115614239576142386141fc565b5b60208301915083602082028301111561425557614254614201565b5b9250929050565b60008083601f840112614272576142716141f7565b5b8235905067ffffffffffffffff81111561428f5761428e6141fc565b5b6020830191508360208202830111156142ab576142aa614201565b5b9250929050565b600080600080604085870312156142cc576142cb613dca565b5b600085013567ffffffffffffffff8111156142ea576142e9613dcf565b5b6142f687828801614206565b9450945050602085013567ffffffffffffffff81111561431957614318613dcf565b5b6143258782880161425c565b925092505092959194509250565b6000806040838503121561434a57614349613dca565b5b600061435885828601613f4e565b925050602061436985828601613f4e565b9150509250929050565b60006020828403121561438957614388613dca565b5b6000614397848285016141a2565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006143d6602083613e55565b91506143e1826143a0565b602082019050919050565b60006020820190508181036000830152614405816143c9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061444682613dd4565b915061445183613dd4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156144865761448561440c565b5b828201905092915050565b7f4d757374206b656570206665657320617420333025206f72206c657373000000600082015250565b60006144c7601d83613e55565b91506144d282614491565b602082019050919050565b600060208201905081810360008301526144f6816144ba565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061454457607f821691505b60208210811415614558576145576144fd565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006145ba602883613e55565b91506145c58261455e565b604082019050919050565b600060208201905081810360008301526145e9816145ad565b9050919050565b60006145fb82613dd4565b915061460683613dd4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561463f5761463e61440c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061468482613dd4565b915061468f83613dd4565b92508261469f5761469e61464a565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614706602983613e55565b9150614711826146aa565b604082019050919050565b60006020820190508181036000830152614735816146f9565b9050919050565b7f5f54726561737572794164647265737320616464726573732063616e6e6f742060008201527f6265203000000000000000000000000000000000000000000000000000000000602082015250565b6000614798602483613e55565b91506147a38261473c565b604082019050919050565b600060208201905081810360008301526147c78161478b565b9050919050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b6000614804601d83613e55565b915061480f826147ce565b602082019050919050565b60006020820190508181036000830152614833816147f7565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614896602783613e55565b91506148a18261483a565b604082019050919050565b600060208201905081810360008301526148c581614889565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614928603983613e55565b9150614933826148cc565b604082019050919050565b600060208201905081810360008301526149578161491b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006149ba602583613e55565b91506149c58261495e565b604082019050919050565b600060208201905081810360008301526149e9816149ad565b9050919050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3530302061646472657373657300000000000000000000000000000000000000602082015250565b6000614a4c602d83613e55565b9150614a57826149f0565b604082019050919050565b60006020820190508181036000830152614a7b81614a3f565b9050919050565b7f4d69736d61746368206265747765656e204164647265737320616e6420746f6b60008201527f656e20636f756e74000000000000000000000000000000000000000000000000602082015250565b6000614ade602883613e55565b9150614ae982614a82565b604082019050919050565b60006020820190508181036000830152614b0d81614ad1565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115614b6b57808604811115614b4757614b4661440c565b5b6001851615614b565780820291505b8081029050614b6485614b14565b9450614b2b565b94509492505050565b600082614b845760019050614c40565b81614b925760009050614c40565b8160018114614ba85760028114614bb257614be1565b6001915050614c40565b60ff841115614bc457614bc361440c565b5b8360020a915084821115614bdb57614bda61440c565b5b50614c40565b5060208310610133831016604e8410600b8410161715614c165782820a905083811115614c1157614c1061440c565b5b614c40565b614c238484846001614b21565b92509050818404811115614c3a57614c3961440c565b5b81810290505b9392505050565b6000614c5282613dd4565b9150614c5d8361412a565b9250614c8a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614b74565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614ccc82613dd4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614cff57614cfe61440c565b5b600182019050919050565b7f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000600082015250565b6000614d40601b83613e55565b9150614d4b82614d0a565b602082019050919050565b60006020820190508181036000830152614d6f81614d33565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b6000614dd2602c83613e55565b9150614ddd82614d76565b604082019050919050565b60006020820190508181036000830152614e0181614dc5565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614e64603583613e55565b9150614e6f82614e08565b604082019050919050565b60006020820190508181036000830152614e9381614e57565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614ef6603483613e55565b9150614f0182614e9a565b604082019050919050565b60006020820190508181036000830152614f2581614ee9565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b6000614f88602a83613e55565b9150614f9382614f2c565b604082019050919050565b60006020820190508181036000830152614fb781614f7b565b9050919050565b7f43616e6e6f7420726520656e61626c652074726164696e670000000000000000600082015250565b6000614ff4601883613e55565b9150614fff82614fbe565b602082019050919050565b6000602082019050818103600083015261502381614fe7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615086602683613e55565b91506150918261502a565b604082019050919050565b600060208201905081810360008301526150b581615079565b9050919050565b6000815190506150cb81613dde565b92915050565b6000602082840312156150e7576150e6613dca565b5b60006150f5848285016150bc565b91505092915050565b60006040820190506151136000830185614161565b6151206020830184614080565b9392505050565b6000815190506151368161418b565b92915050565b60006020828403121561515257615151613dca565b5b600061516084828501615127565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006151c5602483613e55565b91506151d082615169565b604082019050919050565b600060208201905081810360008301526151f4816151b8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615257602283613e55565b9150615262826151fb565b604082019050919050565b600060208201905081810360008301526152868161524a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006152e9602583613e55565b91506152f48261528d565b604082019050919050565b60006020820190508181036000830152615318816152dc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061537b602383613e55565b91506153868261531f565b604082019050919050565b600060208201905081810360008301526153aa8161536e565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b60006153e7601d83613e55565b91506153f2826153b1565b602082019050919050565b60006020820190508181036000830152615416816153da565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000615453601683613e55565b915061545e8261541d565b602082019050919050565b6000602082019050818103600083015261548281615446565b9050919050565b7f54726164696e6720697320656e61626c65640000000000000000000000000000600082015250565b60006154bf601283613e55565b91506154ca82615489565b602082019050919050565b600060208201905081810360008301526154ee816154b2565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000615551602883613e55565b915061555c826154f5565b604082019050919050565b6000602082019050818103600083015261558081615544565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b60006155bd601883613e55565b91506155c882615587565b602082019050919050565b600060208201905081810360008301526155ec816155b0565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b600061564f602a83613e55565b915061565a826155f3565b604082019050919050565b6000602082019050818103600083015261567e81615642565b9050919050565b600061569082613dd4565b915061569b83613dd4565b9250828210156156ae576156ad61440c565b5b828203905092915050565b600081905092915050565b50565b60006156d46000836156b9565b91506156df826156c4565b600082019050919050565b60006156f5826156c7565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061575b602683613e55565b9150615766826156ff565b604082019050919050565b6000602082019050818103600083015261578a8161574e565b9050919050565b60006040820190506157a66000830185614161565b6157b36020830184613faf565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506157f881613f37565b92915050565b60006020828403121561581457615813613dca565b5b6000615822848285016157e9565b91505092915050565b6000819050919050565b600061585061584b6158468461582b565b614006565b613dd4565b9050919050565b61586081615835565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61589b81613f25565b82525050565b60006158ad8383615892565b60208301905092915050565b6000602082019050919050565b60006158d182615866565b6158db8185615871565b93506158e683615882565b8060005b838110156159175781516158fe88826158a1565b9750615909836158b9565b9250506001810190506158ea565b5085935050505092915050565b600060a0820190506159396000830188614080565b6159466020830187615857565b818103604083015261595881866158c6565b90506159676060830185614161565b6159746080830184614080565b9695505050505050565b600060c0820190506159936000830189614161565b6159a06020830188614080565b6159ad6040830187615857565b6159ba6060830186615857565b6159c76080830185614161565b6159d460a0830184614080565b979650505050505050565b6000806000606084860312156159f8576159f7613dca565b5b6000615a06868287016150bc565b9350506020615a17868287016150bc565b9250506040615a28868287016150bc565b915050925092509256fea26469706673582212202b3924f2369ad7dbfe9fd105b94c4a05d4bc51962f92db5064ae9a5099609e8564736f6c634300080c0033

Deployed Bytecode Sourcemap

7049:13738:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12727:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1767:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2681:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7945:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7204:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2088:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7790:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2858:480;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10485:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1987:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3346:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7254:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7410:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7371:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7564:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18958:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12413:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7130:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7639;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7674:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7490:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2204:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5808:150;;;;;;;;;;;;;:::i;:::-;;11088:115;;;;;;;;;;;;;:::i;:::-;;11426:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7096:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5594:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1875:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16942:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3569:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2339:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7165:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8167:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18262:688;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7450:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13048:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11701:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7751:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12055:350;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7530:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10762:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2522:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7329:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7600:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17490:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5966:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7711:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20418:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12727:313;5731:12;:10;:12::i;:::-;5721:22;;:6;;;;;;;;;;;:22;;;5713:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12844:12:::1;12826:15;:30;;;;12886:13;12867:16;:32;;;;12944:16;;12926:15;;:34;;;;:::i;:::-;12910:13;:50;;;;12996:2;12979:13;;:19;;12971:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;12727:313:::0;;:::o;1767:100::-;1821:13;1854:5;1847:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1767:100;:::o;2681:169::-;2764:4;2781:39;2790:12;:10;:12::i;:::-;2804:7;2813:6;2781:8;:39::i;:::-;2838:4;2831:11;;2681:169;;;;:::o;7945:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;7204:43::-;;;:::o;2088:108::-;2149:7;2176:12;;2169:19;;2088:108;:::o;7790:33::-;;;;:::o;2858:480::-;2998:4;3015:36;3025:6;3033:9;3044:6;3015:9;:36::i;:::-;3064:24;3091:11;:19;3103:6;3091:19;;;;;;;;;;;;;;;:33;3111:12;:10;:12::i;:::-;3091:33;;;;;;;;;;;;;;;;3064:60;;3163:6;3143:16;:26;;3135:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;3242:57;3251:6;3259:12;:10;:12::i;:::-;3292:6;3273:16;:25;3242:8;:57::i;:::-;3326:4;3319:11;;;2858:480;;;;;:::o;10485:269::-;5731:12;:10;:12::i;:::-;5721:22;;:6;;;;;;;;;;;:22;;;5713:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10604:4:::1;10598;10594:1;10578:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;10577:31;;;;:::i;:::-;10567:6;:41;;10559:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;10690:6;10680;:17;;;;:::i;:::-;10665:12;:32;;;;10713:33;10733:12;;10713:33;;;;;;:::i;:::-;;;;;;;;10485:269:::0;:::o;1987:93::-;2045:5;2070:2;2063:9;;1987:93;:::o;3346:215::-;3434:4;3451:80;3460:12;:10;:12::i;:::-;3474:7;3520:10;3483:11;:25;3495:12;:10;:12::i;:::-;3483:25;;;;;;;;;;;;;;;:34;3509:7;3483:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;3451:8;:80::i;:::-;3549:4;3542:11;;3346:215;;;;:::o;7254:38::-;;;:::o;7410:33::-;;;;;;;;;;;;;:::o;7371:30::-;;;;;;;;;;;;;:::o;7564:29::-;;;;:::o;18958:281::-;5731:12;:10;:12::i;:::-;5721:22;;:6;;;;;;;;;;;:22;;;5713:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19078:1:::1;19050:30;;:16;:30;;;;19042:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;19158:16;19132:15;;:43;;;;;;;;;;;;;;;;;;19214:16;19191:40;;;;;;;;;;;;18958:281:::0;:::o;12413:306::-;5731:12;:10;:12::i;:::-;5721:22;;:6;;;;;;;;;;;:22;;;5713:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12528:12:::1;12511:14;:29;;;;12569:13;12551:15;:31;;;;12625:15;;12608:14;;:32;;;;:::i;:::-;12593:12;:47;;;;12675:2;12659:12;;:18;;12651:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12413:306:::0;;:::o;7130:28::-;;;;:::o;7639:::-;;;;:::o;7674:30::-;;;;:::o;7490:31::-;;;;;;;;;;;;;:::o;2204:127::-;2278:7;2305:9;:18;2315:7;2305:18;;;;;;;;;;;;;;;;2298:25;;2204:127;;;:::o;5808:150::-;5731:12;:10;:12::i;:::-;5721:22;;:6;;;;;;;;;;;:22;;;5713:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5917:1:::1;5880:40;;5901:6;;;;;;;;;;;5880:40;;;;;;;;;;;;5948:1;5931:6;;:19;;;;;;;;;;;;;;;;;;5808:150::o:0;11088:115::-;5731:12;:10;:12::i;:::-;5721:22;;:6;;;;;;;;;;;:22;;;5713:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11159:5:::1;11142:14;;:22;;;;;;;;;;;;;;;;;;11180:15;;;;;;;;;;11088:115::o:0;11426:267::-;5731:12;:10;:12::i;:::-;5721:22;;:6;;;;;;;;;;;:22;;;5713:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11522:4:::1;11518:111;;11560:13;11550:23;;:6;:23;;;;11542:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;11518:111;11681:4;11639:31;:39;11671:6;11639:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;11426:267:::0;;:::o;7096:27::-;;;;:::o;5594:79::-;5632:7;5659:6;;;;;;;;;;;5652:13;;5594:79;:::o;1875:104::-;1931:13;1964:7;1957:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1875:104;:::o;16942:246::-;5731:12;:10;:12::i;:::-;5721:22;;:6;;;;;;;;;;;:22;;;5713:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17051:13:::1;17043:21;;:4;:21;;;;17035:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;17139:41;17168:4;17174:5;17139:28;:41::i;:::-;16942:246:::0;;:::o;3569:401::-;3662:4;3679:24;3706:11;:25;3718:12;:10;:12::i;:::-;3706:25;;;;;;;;;;;;;;;:34;3732:7;3706:34;;;;;;;;;;;;;;;;3679:61;;3779:15;3759:16;:35;;3751:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3864:67;3873:12;:10;:12::i;:::-;3887:7;3915:15;3896:16;:34;3864:8;:67::i;:::-;3958:4;3951:11;;;3569:401;;;;:::o;2339:175::-;2425:4;2442:42;2452:12;:10;:12::i;:::-;2466:9;2477:6;2442:9;:42::i;:::-;2502:4;2495:11;;2339:175;;;;:::o;7165:30::-;;;;:::o;8167:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;18262:688::-;5731:12;:10;:12::i;:::-;5721:22;;:6;;;;;;;;;;;:22;;;5713:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18397:3:::1;18378:9;;:16;;:22;18370:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;18511:6;;:13;;18491:9;;:16;;:33;18483:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;18581:12;18614:6:::0;18610:109:::1;18628:9;;:16;;18624:1;:20;18610:109;;;18696:10;:8;:10::i;:::-;18692:2;:14;;;;:::i;:::-;18680:6;;18687:1;18680:9;;;;;;;:::i;:::-;;;;;;;;:26;;;;:::i;:::-;18672:4;:35;;;;:::i;:::-;18665:42;;18646:3;;;;;:::i;:::-;;;;18610:109;;;;18764:4;18739:21;18749:10;18739:9;:21::i;:::-;:29;;18731:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;18817:6;18813:130;18831:9;;:16;;18827:1;:20;18813:130;;;18868:63;18878:10;18889:9;;18899:1;18889:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18919:10;:8;:10::i;:::-;18915:2;:14;;;;:::i;:::-;18903:6;;18910:1;18903:9;;;;;;;:::i;:::-;;;;;;;;:26;;;;:::i;:::-;18868:9;:63::i;:::-;18849:3;;;;;:::i;:::-;;;;18813:130;;;;18357:593;18262:688:::0;;;;:::o;7450:33::-;;;;;;;;;;;;;:::o;13048:182::-;5731:12;:10;:12::i;:::-;5721:22;;:6;;;;;;;;;;;:22;;;5713:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13164:8:::1;13133:19;:28;13153:7;13133:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;13204:7;13188:34;;;13213:8;13188:34;;;;;;:::i;:::-;;;;;;;;13048:182:::0;;:::o;11701:284::-;5731:12;:10;:12::i;:::-;5721:22;;:6;;;;;;;;;;;:22;;;5713:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11823:4:::1;11817;11813:1;11797:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;11796:31;;;;:::i;:::-;11786:6;:41;;11778:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;11915:6;11905;:17;;;;:::i;:::-;11887:15;:35;;;;11938:39;11961:15;;11938:39;;;;;;:::i;:::-;;;;;;;;11701:284:::0;:::o;7751:32::-;;;;:::o;12055:350::-;5731:12;:10;:12::i;:::-;5721:22;;:6;;;;;;;;;;;:22;;;5713:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12179:6:::1;12175:1;12159:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;12146:9;:39;;12138:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;12295:4;12291:1;12275:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;12262:9;:37;;12254:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;12388:9;12367:18;:30;;;;12055:350:::0;:::o;7530:27::-;;;;:::o;10762:274::-;5731:12;:10;:12::i;:::-;5721:22;;:6;;;;;;;;;;;:22;;;5713:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10882:4:::1;10876;10872:1;10856:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;10855:31;;;;:::i;:::-;10845:6;:41;;10837:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;10970:6;10960;:17;;;;:::i;:::-;10944:13;:33;;;;10993:35;11014:13;;10993:35;;;;;;:::i;:::-;;;;;;;;10762:274:::0;:::o;2522:151::-;2611:7;2638:11;:18;2650:5;2638:18;;;;;;;;;;;;;;;:27;2657:7;2638:27;;;;;;;;;;;;;;;;2631:34;;2522:151;;;;:::o;7329:33::-;;;;:::o;7600:30::-;;;;:::o;17490:234::-;5731:12;:10;:12::i;:::-;5721:22;;:6;;;;;;;;;;;:22;;;5713:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17566:13:::1;;;;;;;;;;;17565:14;17557:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;17635:7;17619:13;;:23;;;;;;;;;;;;;;;;;;17667:4;17653:11;;:18;;;;;;;;;;;;;;;;;;17687:29;17702:13;;;;;;;;;;;17687:29;;;;;;:::i;:::-;;;;;;;;17490:234:::0;:::o;5966:244::-;5731:12;:10;:12::i;:::-;5721:22;;:6;;;;;;;;;;;:22;;;5713:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6075:1:::1;6055:22;;:8;:22;;;;6047:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6165:8;6136:38;;6157:6;;;;;;;;;;;6136:38;;;;;;;;;;;;6194:8;6185:6;;:17;;;;;;;;;;;;;;;;;;5966:244:::0;:::o;7711:31::-;;;;:::o;20418:360::-;5731:12;:10;:12::i;:::-;5721:22;;:6;;;;;;;;;;;:22;;;5713:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20512:3:::1;20494:22;;:6;:22;;;20490:124;;;20541:7;:5;:7::i;:::-;20533:25;;:48;20559:21;20533:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;20596:7;;20490:124;20624:17;20651:6;20624:34;;20669:15;20687:10;:20;;;20716:4;20687:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20669:53;;20733:10;:19;;;20753:7;:5;:7::i;:::-;20762;20733:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20479:299;;5791:1;20418:360:::0;:::o;206:98::-;259:7;286:10;279:17;;206:98;:::o;4887:380::-;5040:1;5023:19;;:5;:19;;;;5015:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5121:1;5102:21;;:7;:21;;;;5094:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5205:6;5175:11;:18;5187:5;5175:18;;;;;;;;;;;;;;;:27;5194:7;5175:27;;;;;;;;;;;;;;;:36;;;;5243:7;5227:32;;5236:5;5227:32;;;5252:6;5227:32;;;;;;:::i;:::-;;;;;;;;4887:380;;;:::o;13238:3097::-;13354:1;13338:18;;:4;:18;;;;13330:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13431:1;13417:16;;:2;:16;;;;13409:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13501:1;13492:6;:10;13484:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;13552:14;;;;;;;;;;;13549:1222;;;13594:7;:5;:7::i;:::-;13586:15;;:4;:15;;;;:32;;;;;13611:7;:5;:7::i;:::-;13605:13;;:2;:13;;;;13586:32;:52;;;;;13636:1;13622:16;;:2;:16;;;;13586:52;:77;;;;;13656:6;13642:21;;:2;:21;;;;13586:77;13582:1178;;;13687:13;;;;;;;;;;;13683:241;;13732:31;:37;13764:4;13732:37;;;;;;;;;;;;;;;;;;;;;;;;;:76;;;;13773:31;:35;13805:2;13773:35;;;;;;;;;;;;;;;;;;;;;;;;;13732:76;13724:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;13874:7;:5;:7::i;:::-;13866:15;;:4;:15;;;13858:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;13683:241;13976:25;:31;14002:4;13976:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;14012:31;:35;14044:2;14012:35;;;;;;;;;;;;;;;;;;;;;;;;;14011:36;13976:71;13972:773;;;14090:12;;14080:6;:22;;14072:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;14204:15;;14187:13;14197:2;14187:9;:13::i;:::-;14178:6;:22;;;;:::i;:::-;:41;;14170:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;13972:773;;;14324:25;:29;14350:2;14324:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;14358:31;:37;14390:4;14358:37;;;;;;;;;;;;;;;;;;;;;;;;;14357:38;14324:71;14320:425;;;14438:13;;14428:6;:23;;14420:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;14320:425;;;14546:31;:35;14578:2;14546:35;;;;;;;;;;;;;;;;;;;;;;;;;14545:36;:78;;;;;14586:31;:37;14618:4;14586:37;;;;;;;;;;;;;;;;;;;;;;;;;14585:38;14545:78;14541:204;;;14681:15;;14664:13;14674:2;14664:9;:13::i;:::-;14655:6;:22;;;;:::i;:::-;:41;;14647:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;14541:204;14320:425;13972:773;13582:1178;13549:1222;14783:28;14814:24;14832:4;14814:9;:24::i;:::-;14783:55;;14851:12;14890:18;;14866:20;:42;;14851:57;;14924:7;:22;;;;;14935:11;;;;;;;;;;;14924:22;:35;;;;;14951:8;;;;;;;;;;;14950:9;14924:35;:71;;;;;14964:25;:31;14990:4;14964:31;;;;;;;;;;;;;;;;;;;;;;;;;14963:32;14924:71;:101;;;;;15000:19;:25;15020:4;15000:25;;;;;;;;;;;;;;;;;;;;;;;;;14999:26;14924:101;:129;;;;;15030:19;:23;15050:2;15030:23;;;;;;;;;;;;;;;;;;;;;;;;;15029:24;14924:129;14921:232;;;15081:4;15070:8;;:15;;;;;;;;;;;;;;;;;;15100:10;:8;:10::i;:::-;15136:5;15125:8;;:16;;;;;;;;;;;;;;;;;;14921:232;15165:12;15180:4;15165:19;;15283;:25;15303:4;15283:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;15312:19;:23;15332:2;15312:23;;;;;;;;;;;;;;;;;;;;;;;;;15283:52;15280:99;;;15362:5;15352:15;;15280:99;15391:12;15485:7;15482:800;;;15536:25;:29;15562:2;15536:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;15585:1;15569:13;;:17;15536:50;15532:603;;;15637:3;15622:13;;15613:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;15606:34;;15707:13;;15688:16;;15681:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;15659:18;;:61;;;;;;;:::i;:::-;;;;;;;;15785:13;;15767:15;;15760:4;:22;;;;:::i;:::-;:38;;;;:::i;:::-;15739:17;;:59;;;;;;;:::i;:::-;;;;;;;;15532:603;;;15859:25;:31;15885:4;15859:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;15909:1;15894:12;;:16;15859:51;15856:279;;;15962:3;15947:12;;15938:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;15931:34;;16031:12;;16013:15;;16006:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;15984:18;;:59;;;;;;;:::i;:::-;;;;;;;;16107:12;;16090:14;;16083:4;:21;;;;:::i;:::-;:36;;;;:::i;:::-;16062:17;;:57;;;;;;;:::i;:::-;;;;;;;;15856:279;15532:603;16161:1;16154:4;:8;16151:89;;;16182:42;16198:4;16212;16219;16182:15;:42::i;:::-;16151:89;16266:4;16256:14;;;;;:::i;:::-;;;15482:800;16294:33;16310:4;16316:2;16320:6;16294:15;:33::i;:::-;13317:3018;;;;13238:3097;;;:::o;17196:240::-;17313:5;17279:25;:31;17305:4;17279:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17331;17358:4;17364:5;17331:26;:39::i;:::-;17422:5;17388:40;;17416:4;17388:40;;;;;;;;;;;;17196:240;;:::o;19252:1158::-;19291:23;19317:24;19335:4;19317:9;:24::i;:::-;19291:50;;19352:25;19401:17;;19380:18;;:38;;;;:::i;:::-;19352:66;;19453:1;19434:15;:20;:46;;;;19479:1;19458:17;:22;19434:46;19431:60;;;19483:7;;;;19431:60;19545:2;19524:18;;:23;;;;:::i;:::-;19506:15;:41;19503:113;;;19602:2;19581:18;;:23;;;;:::i;:::-;19563:41;;19503:113;19628:12;19702:23;19787:1;19767:17;19746:18;;19728:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;19702:86;;19801:51;19836:15;19818;:33;;;;:::i;:::-;19801:16;:51::i;:::-;19865:18;19886:21;19865:42;;19918:23;19944:10;19918:36;;19967:22;20066:1;20047:18;;:20;;;;:::i;:::-;20026:17;:42;;;;:::i;:::-;20005:17;;19992:10;:30;;;;:::i;:::-;:77;;;;:::i;:::-;19967:102;;20101:14;20082:33;;;;;:::i;:::-;;;20149:1;20128:18;:22;;;;20181:1;20161:17;:21;;;;20216:1;20198:15;:19;:42;;;;;20239:1;20221:15;:19;20198:42;20195:119;;;20256:46;20269:15;20286;20256:12;:46::i;:::-;20195:119;20347:15;;;;;;;;;;;20339:29;;20376:21;20339:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20326:76;;;;;19280:1130;;;;;;;19252:1158;:::o;3978:602::-;4136:1;4118:20;;:6;:20;;;;4110:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4220:1;4199:23;;:9;:23;;;;4191:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4275:21;4299:9;:17;4309:6;4299:17;;;;;;;;;;;;;;;;4275:41;;4352:6;4335:13;:23;;4327:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4465:6;4449:13;:22;4429:9;:17;4439:6;4429:17;;;;;;;;;;;;;;;:42;;;;4513:6;4489:9;:20;4499:9;4489:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4554:9;4537:35;;4546:6;4537:35;;;4565:6;4537:35;;;;;;:::i;:::-;;;;;;;;4099:481;3978:602;;;:::o;11211:207::-;11341:10;11299:31;:39;11331:6;11299:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;11367:43;11391:6;11399:10;11367:43;;;;;;;:::i;:::-;;;;;;;;11211:207;;:::o;16343:591::-;16471:21;16509:1;16495:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16471:40;;16540:4;16522;16527:1;16522:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;16566:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16556:4;16561:1;16556:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;16601:62;16618:4;16633:15;16651:11;16601:8;:62::i;:::-;16702:15;:66;;;16783:11;16809:1;16853:4;16880;16900:15;16702:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16398:536;16343:591;:::o;17732:522::-;17880:62;17897:4;17912:15;17930:11;17880:8;:62::i;:::-;17985:15;:31;;;18024:9;18057:4;18077:11;18103:1;18146;18197:7;:5;:7::i;:::-;18220:15;17985:261;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17732:522;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:307::-;1518:1;1528:113;1542:6;1539:1;1536:13;1528:113;;;1627:1;1622:3;1618:11;1612:18;1608:1;1603:3;1599:11;1592:39;1564:2;1561:1;1557:10;1552:15;;1528:113;;;1659:6;1656:1;1653:13;1650:101;;;1739:1;1730:6;1725:3;1721:16;1714:27;1650:101;1499:258;1450:307;;;:::o;1763:102::-;1804:6;1855:2;1851:7;1846:2;1839:5;1835:14;1831:28;1821:38;;1763:102;;;:::o;1871:364::-;1959:3;1987:39;2020:5;1987:39;:::i;:::-;2042:71;2106:6;2101:3;2042:71;:::i;:::-;2035:78;;2122:52;2167:6;2162:3;2155:4;2148:5;2144:16;2122:52;:::i;:::-;2199:29;2221:6;2199:29;:::i;:::-;2194:3;2190:39;2183:46;;1963:272;1871:364;;;;:::o;2241:313::-;2354:4;2392:2;2381:9;2377:18;2369:26;;2441:9;2435:4;2431:20;2427:1;2416:9;2412:17;2405:47;2469:78;2542:4;2533:6;2469:78;:::i;:::-;2461:86;;2241:313;;;;:::o;2560:126::-;2597:7;2637:42;2630:5;2626:54;2615:65;;2560:126;;;:::o;2692:96::-;2729:7;2758:24;2776:5;2758:24;:::i;:::-;2747:35;;2692:96;;;:::o;2794:122::-;2867:24;2885:5;2867:24;:::i;:::-;2860:5;2857:35;2847:63;;2906:1;2903;2896:12;2847:63;2794:122;:::o;2922:139::-;2968:5;3006:6;2993:20;2984:29;;3022:33;3049:5;3022:33;:::i;:::-;2922:139;;;;:::o;3067:474::-;3135:6;3143;3192:2;3180:9;3171:7;3167:23;3163:32;3160:119;;;3198:79;;:::i;:::-;3160:119;3318:1;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3289:117;3445:2;3471:53;3516:7;3507:6;3496:9;3492:22;3471:53;:::i;:::-;3461:63;;3416:118;3067:474;;;;;:::o;3547:90::-;3581:7;3624:5;3617:13;3610:21;3599:32;;3547:90;;;:::o;3643:109::-;3724:21;3739:5;3724:21;:::i;:::-;3719:3;3712:34;3643:109;;:::o;3758:210::-;3845:4;3883:2;3872:9;3868:18;3860:26;;3896:65;3958:1;3947:9;3943:17;3934:6;3896:65;:::i;:::-;3758:210;;;;:::o;3974:329::-;4033:6;4082:2;4070:9;4061:7;4057:23;4053:32;4050:119;;;4088:79;;:::i;:::-;4050:119;4208:1;4233:53;4278:7;4269:6;4258:9;4254:22;4233:53;:::i;:::-;4223:63;;4179:117;3974:329;;;;:::o;4309:60::-;4337:3;4358:5;4351:12;;4309:60;;;:::o;4375:142::-;4425:9;4458:53;4476:34;4485:24;4503:5;4485:24;:::i;:::-;4476:34;:::i;:::-;4458:53;:::i;:::-;4445:66;;4375:142;;;:::o;4523:126::-;4573:9;4606:37;4637:5;4606:37;:::i;:::-;4593:50;;4523:126;;;:::o;4655:144::-;4723:9;4756:37;4787:5;4756:37;:::i;:::-;4743:50;;4655:144;;;:::o;4805:167::-;4910:55;4959:5;4910:55;:::i;:::-;4905:3;4898:68;4805:167;;:::o;4978:258::-;5089:4;5127:2;5116:9;5112:18;5104:26;;5140:89;5226:1;5215:9;5211:17;5202:6;5140:89;:::i;:::-;4978:258;;;;:::o;5242:118::-;5329:24;5347:5;5329:24;:::i;:::-;5324:3;5317:37;5242:118;;:::o;5366:222::-;5459:4;5497:2;5486:9;5482:18;5474:26;;5510:71;5578:1;5567:9;5563:17;5554:6;5510:71;:::i;:::-;5366:222;;;;:::o;5594:619::-;5671:6;5679;5687;5736:2;5724:9;5715:7;5711:23;5707:32;5704:119;;;5742:79;;:::i;:::-;5704:119;5862:1;5887:53;5932:7;5923:6;5912:9;5908:22;5887:53;:::i;:::-;5877:63;;5833:117;5989:2;6015:53;6060:7;6051:6;6040:9;6036:22;6015:53;:::i;:::-;6005:63;;5960:118;6117:2;6143:53;6188:7;6179:6;6168:9;6164:22;6143:53;:::i;:::-;6133:63;;6088:118;5594:619;;;;;:::o;6219:329::-;6278:6;6327:2;6315:9;6306:7;6302:23;6298:32;6295:119;;;6333:79;;:::i;:::-;6295:119;6453:1;6478:53;6523:7;6514:6;6503:9;6499:22;6478:53;:::i;:::-;6468:63;;6424:117;6219:329;;;;:::o;6554:86::-;6589:7;6629:4;6622:5;6618:16;6607:27;;6554:86;;;:::o;6646:112::-;6729:22;6745:5;6729:22;:::i;:::-;6724:3;6717:35;6646:112;;:::o;6764:214::-;6853:4;6891:2;6880:9;6876:18;6868:26;;6904:67;6968:1;6957:9;6953:17;6944:6;6904:67;:::i;:::-;6764:214;;;;:::o;6984:118::-;7071:24;7089:5;7071:24;:::i;:::-;7066:3;7059:37;6984:118;;:::o;7108:222::-;7201:4;7239:2;7228:9;7224:18;7216:26;;7252:71;7320:1;7309:9;7305:17;7296:6;7252:71;:::i;:::-;7108:222;;;;:::o;7336:116::-;7406:21;7421:5;7406:21;:::i;:::-;7399:5;7396:32;7386:60;;7442:1;7439;7432:12;7386:60;7336:116;:::o;7458:133::-;7501:5;7539:6;7526:20;7517:29;;7555:30;7579:5;7555:30;:::i;:::-;7458:133;;;;:::o;7597:468::-;7662:6;7670;7719:2;7707:9;7698:7;7694:23;7690:32;7687:119;;;7725:79;;:::i;:::-;7687:119;7845:1;7870:53;7915:7;7906:6;7895:9;7891:22;7870:53;:::i;:::-;7860:63;;7816:117;7972:2;7998:50;8040:7;8031:6;8020:9;8016:22;7998:50;:::i;:::-;7988:60;;7943:115;7597:468;;;;;:::o;8071:117::-;8180:1;8177;8170:12;8194:117;8303:1;8300;8293:12;8317:117;8426:1;8423;8416:12;8457:568;8530:8;8540:6;8590:3;8583:4;8575:6;8571:17;8567:27;8557:122;;8598:79;;:::i;:::-;8557:122;8711:6;8698:20;8688:30;;8741:18;8733:6;8730:30;8727:117;;;8763:79;;:::i;:::-;8727:117;8877:4;8869:6;8865:17;8853:29;;8931:3;8923:4;8915:6;8911:17;8901:8;8897:32;8894:41;8891:128;;;8938:79;;:::i;:::-;8891:128;8457:568;;;;;:::o;9048:::-;9121:8;9131:6;9181:3;9174:4;9166:6;9162:17;9158:27;9148:122;;9189:79;;:::i;:::-;9148:122;9302:6;9289:20;9279:30;;9332:18;9324:6;9321:30;9318:117;;;9354:79;;:::i;:::-;9318:117;9468:4;9460:6;9456:17;9444:29;;9522:3;9514:4;9506:6;9502:17;9492:8;9488:32;9485:41;9482:128;;;9529:79;;:::i;:::-;9482:128;9048:568;;;;;:::o;9622:934::-;9744:6;9752;9760;9768;9817:2;9805:9;9796:7;9792:23;9788:32;9785:119;;;9823:79;;:::i;:::-;9785:119;9971:1;9960:9;9956:17;9943:31;10001:18;9993:6;9990:30;9987:117;;;10023:79;;:::i;:::-;9987:117;10136:80;10208:7;10199:6;10188:9;10184:22;10136:80;:::i;:::-;10118:98;;;;9914:312;10293:2;10282:9;10278:18;10265:32;10324:18;10316:6;10313:30;10310:117;;;10346:79;;:::i;:::-;10310:117;10459:80;10531:7;10522:6;10511:9;10507:22;10459:80;:::i;:::-;10441:98;;;;10236:313;9622:934;;;;;;;:::o;10562:474::-;10630:6;10638;10687:2;10675:9;10666:7;10662:23;10658:32;10655:119;;;10693:79;;:::i;:::-;10655:119;10813:1;10838:53;10883:7;10874:6;10863:9;10859:22;10838:53;:::i;:::-;10828:63;;10784:117;10940:2;10966:53;11011:7;11002:6;10991:9;10987:22;10966:53;:::i;:::-;10956:63;;10911:118;10562:474;;;;;:::o;11042:323::-;11098:6;11147:2;11135:9;11126:7;11122:23;11118:32;11115:119;;;11153:79;;:::i;:::-;11115:119;11273:1;11298:50;11340:7;11331:6;11320:9;11316:22;11298:50;:::i;:::-;11288:60;;11244:114;11042:323;;;;:::o;11371:182::-;11511:34;11507:1;11499:6;11495:14;11488:58;11371:182;:::o;11559:366::-;11701:3;11722:67;11786:2;11781:3;11722:67;:::i;:::-;11715:74;;11798:93;11887:3;11798:93;:::i;:::-;11916:2;11911:3;11907:12;11900:19;;11559:366;;;:::o;11931:419::-;12097:4;12135:2;12124:9;12120:18;12112:26;;12184:9;12178:4;12174:20;12170:1;12159:9;12155:17;12148:47;12212:131;12338:4;12212:131;:::i;:::-;12204:139;;11931:419;;;:::o;12356:180::-;12404:77;12401:1;12394:88;12501:4;12498:1;12491:15;12525:4;12522:1;12515:15;12542:305;12582:3;12601:20;12619:1;12601:20;:::i;:::-;12596:25;;12635:20;12653:1;12635:20;:::i;:::-;12630:25;;12789:1;12721:66;12717:74;12714:1;12711:81;12708:107;;;12795:18;;:::i;:::-;12708:107;12839:1;12836;12832:9;12825:16;;12542:305;;;;:::o;12853:179::-;12993:31;12989:1;12981:6;12977:14;12970:55;12853:179;:::o;13038:366::-;13180:3;13201:67;13265:2;13260:3;13201:67;:::i;:::-;13194:74;;13277:93;13366:3;13277:93;:::i;:::-;13395:2;13390:3;13386:12;13379:19;;13038:366;;;:::o;13410:419::-;13576:4;13614:2;13603:9;13599:18;13591:26;;13663:9;13657:4;13653:20;13649:1;13638:9;13634:17;13627:47;13691:131;13817:4;13691:131;:::i;:::-;13683:139;;13410:419;;;:::o;13835:180::-;13883:77;13880:1;13873:88;13980:4;13977:1;13970:15;14004:4;14001:1;13994:15;14021:320;14065:6;14102:1;14096:4;14092:12;14082:22;;14149:1;14143:4;14139:12;14170:18;14160:81;;14226:4;14218:6;14214:17;14204:27;;14160:81;14288:2;14280:6;14277:14;14257:18;14254:38;14251:84;;;14307:18;;:::i;:::-;14251:84;14072:269;14021:320;;;:::o;14347:227::-;14487:34;14483:1;14475:6;14471:14;14464:58;14556:10;14551:2;14543:6;14539:15;14532:35;14347:227;:::o;14580:366::-;14722:3;14743:67;14807:2;14802:3;14743:67;:::i;:::-;14736:74;;14819:93;14908:3;14819:93;:::i;:::-;14937:2;14932:3;14928:12;14921:19;;14580:366;;;:::o;14952:419::-;15118:4;15156:2;15145:9;15141:18;15133:26;;15205:9;15199:4;15195:20;15191:1;15180:9;15176:17;15169:47;15233:131;15359:4;15233:131;:::i;:::-;15225:139;;14952:419;;;:::o;15377:348::-;15417:7;15440:20;15458:1;15440:20;:::i;:::-;15435:25;;15474:20;15492:1;15474:20;:::i;:::-;15469:25;;15662:1;15594:66;15590:74;15587:1;15584:81;15579:1;15572:9;15565:17;15561:105;15558:131;;;15669:18;;:::i;:::-;15558:131;15717:1;15714;15710:9;15699:20;;15377:348;;;;:::o;15731:180::-;15779:77;15776:1;15769:88;15876:4;15873:1;15866:15;15900:4;15897:1;15890:15;15917:185;15957:1;15974:20;15992:1;15974:20;:::i;:::-;15969:25;;16008:20;16026:1;16008:20;:::i;:::-;16003:25;;16047:1;16037:35;;16052:18;;:::i;:::-;16037:35;16094:1;16091;16087:9;16082:14;;15917:185;;;;:::o;16108:228::-;16248:34;16244:1;16236:6;16232:14;16225:58;16317:11;16312:2;16304:6;16300:15;16293:36;16108:228;:::o;16342:366::-;16484:3;16505:67;16569:2;16564:3;16505:67;:::i;:::-;16498:74;;16581:93;16670:3;16581:93;:::i;:::-;16699:2;16694:3;16690:12;16683:19;;16342:366;;;:::o;16714:419::-;16880:4;16918:2;16907:9;16903:18;16895:26;;16967:9;16961:4;16957:20;16953:1;16942:9;16938:17;16931:47;16995:131;17121:4;16995:131;:::i;:::-;16987:139;;16714:419;;;:::o;17139:223::-;17279:34;17275:1;17267:6;17263:14;17256:58;17348:6;17343:2;17335:6;17331:15;17324:31;17139:223;:::o;17368:366::-;17510:3;17531:67;17595:2;17590:3;17531:67;:::i;:::-;17524:74;;17607:93;17696:3;17607:93;:::i;:::-;17725:2;17720:3;17716:12;17709:19;;17368:366;;;:::o;17740:419::-;17906:4;17944:2;17933:9;17929:18;17921:26;;17993:9;17987:4;17983:20;17979:1;17968:9;17964:17;17957:47;18021:131;18147:4;18021:131;:::i;:::-;18013:139;;17740:419;;;:::o;18165:179::-;18305:31;18301:1;18293:6;18289:14;18282:55;18165:179;:::o;18350:366::-;18492:3;18513:67;18577:2;18572:3;18513:67;:::i;:::-;18506:74;;18589:93;18678:3;18589:93;:::i;:::-;18707:2;18702:3;18698:12;18691:19;;18350:366;;;:::o;18722:419::-;18888:4;18926:2;18915:9;18911:18;18903:26;;18975:9;18969:4;18965:20;18961:1;18950:9;18946:17;18939:47;19003:131;19129:4;19003:131;:::i;:::-;18995:139;;18722:419;;;:::o;19147:226::-;19287:34;19283:1;19275:6;19271:14;19264:58;19356:9;19351:2;19343:6;19339:15;19332:34;19147:226;:::o;19379:366::-;19521:3;19542:67;19606:2;19601:3;19542:67;:::i;:::-;19535:74;;19618:93;19707:3;19618:93;:::i;:::-;19736:2;19731:3;19727:12;19720:19;;19379:366;;;:::o;19751:419::-;19917:4;19955:2;19944:9;19940:18;19932:26;;20004:9;19998:4;19994:20;19990:1;19979:9;19975:17;19968:47;20032:131;20158:4;20032:131;:::i;:::-;20024:139;;19751:419;;;:::o;20176:244::-;20316:34;20312:1;20304:6;20300:14;20293:58;20385:27;20380:2;20372:6;20368:15;20361:52;20176:244;:::o;20426:366::-;20568:3;20589:67;20653:2;20648:3;20589:67;:::i;:::-;20582:74;;20665:93;20754:3;20665:93;:::i;:::-;20783:2;20778:3;20774:12;20767:19;;20426:366;;;:::o;20798:419::-;20964:4;21002:2;20991:9;20987:18;20979:26;;21051:9;21045:4;21041:20;21037:1;21026:9;21022:17;21015:47;21079:131;21205:4;21079:131;:::i;:::-;21071:139;;20798:419;;;:::o;21223:224::-;21363:34;21359:1;21351:6;21347:14;21340:58;21432:7;21427:2;21419:6;21415:15;21408:32;21223:224;:::o;21453:366::-;21595:3;21616:67;21680:2;21675:3;21616:67;:::i;:::-;21609:74;;21692:93;21781:3;21692:93;:::i;:::-;21810:2;21805:3;21801:12;21794:19;;21453:366;;;:::o;21825:419::-;21991:4;22029:2;22018:9;22014:18;22006:26;;22078:9;22072:4;22068:20;22064:1;22053:9;22049:17;22042:47;22106:131;22232:4;22106:131;:::i;:::-;22098:139;;21825:419;;;:::o;22250:232::-;22390:34;22386:1;22378:6;22374:14;22367:58;22459:15;22454:2;22446:6;22442:15;22435:40;22250:232;:::o;22488:366::-;22630:3;22651:67;22715:2;22710:3;22651:67;:::i;:::-;22644:74;;22727:93;22816:3;22727:93;:::i;:::-;22845:2;22840:3;22836:12;22829:19;;22488:366;;;:::o;22860:419::-;23026:4;23064:2;23053:9;23049:18;23041:26;;23113:9;23107:4;23103:20;23099:1;23088:9;23084:17;23077:47;23141:131;23267:4;23141:131;:::i;:::-;23133:139;;22860:419;;;:::o;23285:227::-;23425:34;23421:1;23413:6;23409:14;23402:58;23494:10;23489:2;23481:6;23477:15;23470:35;23285:227;:::o;23518:366::-;23660:3;23681:67;23745:2;23740:3;23681:67;:::i;:::-;23674:74;;23757:93;23846:3;23757:93;:::i;:::-;23875:2;23870:3;23866:12;23859:19;;23518:366;;;:::o;23890:419::-;24056:4;24094:2;24083:9;24079:18;24071:26;;24143:9;24137:4;24133:20;24129:1;24118:9;24114:17;24107:47;24171:131;24297:4;24171:131;:::i;:::-;24163:139;;23890:419;;;:::o;24315:102::-;24357:8;24404:5;24401:1;24397:13;24376:34;;24315:102;;;:::o;24423:848::-;24484:5;24491:4;24515:6;24506:15;;24539:5;24530:14;;24553:712;24574:1;24564:8;24561:15;24553:712;;;24669:4;24664:3;24660:14;24654:4;24651:24;24648:50;;;24678:18;;:::i;:::-;24648:50;24728:1;24718:8;24714:16;24711:451;;;25143:4;25136:5;25132:16;25123:25;;24711:451;25193:4;25187;25183:15;25175:23;;25223:32;25246:8;25223:32;:::i;:::-;25211:44;;24553:712;;;24423:848;;;;;;;:::o;25277:1073::-;25331:5;25522:8;25512:40;;25543:1;25534:10;;25545:5;;25512:40;25571:4;25561:36;;25588:1;25579:10;;25590:5;;25561:36;25657:4;25705:1;25700:27;;;;25741:1;25736:191;;;;25650:277;;25700:27;25718:1;25709:10;;25720:5;;;25736:191;25781:3;25771:8;25768:17;25765:43;;;25788:18;;:::i;:::-;25765:43;25837:8;25834:1;25830:16;25821:25;;25872:3;25865:5;25862:14;25859:40;;;25879:18;;:::i;:::-;25859:40;25912:5;;;25650:277;;26036:2;26026:8;26023:16;26017:3;26011:4;26008:13;26004:36;25986:2;25976:8;25973:16;25968:2;25962:4;25959:12;25955:35;25939:111;25936:246;;;26092:8;26086:4;26082:19;26073:28;;26127:3;26120:5;26117:14;26114:40;;;26134:18;;:::i;:::-;26114:40;26167:5;;25936:246;26207:42;26245:3;26235:8;26229:4;26226:1;26207:42;:::i;:::-;26192:57;;;;26281:4;26276:3;26272:14;26265:5;26262:25;26259:51;;;26290:18;;:::i;:::-;26259:51;26339:4;26332:5;26328:16;26319:25;;25277:1073;;;;;;:::o;26356:281::-;26414:5;26438:23;26456:4;26438:23;:::i;:::-;26430:31;;26482:25;26498:8;26482:25;:::i;:::-;26470:37;;26526:104;26563:66;26553:8;26547:4;26526:104;:::i;:::-;26517:113;;26356:281;;;;:::o;26643:180::-;26691:77;26688:1;26681:88;26788:4;26785:1;26778:15;26812:4;26809:1;26802:15;26829:233;26868:3;26891:24;26909:5;26891:24;:::i;:::-;26882:33;;26937:66;26930:5;26927:77;26924:103;;;27007:18;;:::i;:::-;26924:103;27054:1;27047:5;27043:13;27036:20;;26829:233;;;:::o;27068:177::-;27208:29;27204:1;27196:6;27192:14;27185:53;27068:177;:::o;27251:366::-;27393:3;27414:67;27478:2;27473:3;27414:67;:::i;:::-;27407:74;;27490:93;27579:3;27490:93;:::i;:::-;27608:2;27603:3;27599:12;27592:19;;27251:366;;;:::o;27623:419::-;27789:4;27827:2;27816:9;27812:18;27804:26;;27876:9;27870:4;27866:20;27862:1;27851:9;27847:17;27840:47;27904:131;28030:4;27904:131;:::i;:::-;27896:139;;27623:419;;;:::o;28048:231::-;28188:34;28184:1;28176:6;28172:14;28165:58;28257:14;28252:2;28244:6;28240:15;28233:39;28048:231;:::o;28285:366::-;28427:3;28448:67;28512:2;28507:3;28448:67;:::i;:::-;28441:74;;28524:93;28613:3;28524:93;:::i;:::-;28642:2;28637:3;28633:12;28626:19;;28285:366;;;:::o;28657:419::-;28823:4;28861:2;28850:9;28846:18;28838:26;;28910:9;28904:4;28900:20;28896:1;28885:9;28881:17;28874:47;28938:131;29064:4;28938:131;:::i;:::-;28930:139;;28657:419;;;:::o;29082:240::-;29222:34;29218:1;29210:6;29206:14;29199:58;29291:23;29286:2;29278:6;29274:15;29267:48;29082:240;:::o;29328:366::-;29470:3;29491:67;29555:2;29550:3;29491:67;:::i;:::-;29484:74;;29567:93;29656:3;29567:93;:::i;:::-;29685:2;29680:3;29676:12;29669:19;;29328:366;;;:::o;29700:419::-;29866:4;29904:2;29893:9;29889:18;29881:26;;29953:9;29947:4;29943:20;29939:1;29928:9;29924:17;29917:47;29981:131;30107:4;29981:131;:::i;:::-;29973:139;;29700:419;;;:::o;30125:239::-;30265:34;30261:1;30253:6;30249:14;30242:58;30334:22;30329:2;30321:6;30317:15;30310:47;30125:239;:::o;30370:366::-;30512:3;30533:67;30597:2;30592:3;30533:67;:::i;:::-;30526:74;;30609:93;30698:3;30609:93;:::i;:::-;30727:2;30722:3;30718:12;30711:19;;30370:366;;;:::o;30742:419::-;30908:4;30946:2;30935:9;30931:18;30923:26;;30995:9;30989:4;30985:20;30981:1;30970:9;30966:17;30959:47;31023:131;31149:4;31023:131;:::i;:::-;31015:139;;30742:419;;;:::o;31167:229::-;31307:34;31303:1;31295:6;31291:14;31284:58;31376:12;31371:2;31363:6;31359:15;31352:37;31167:229;:::o;31402:366::-;31544:3;31565:67;31629:2;31624:3;31565:67;:::i;:::-;31558:74;;31641:93;31730:3;31641:93;:::i;:::-;31759:2;31754:3;31750:12;31743:19;;31402:366;;;:::o;31774:419::-;31940:4;31978:2;31967:9;31963:18;31955:26;;32027:9;32021:4;32017:20;32013:1;32002:9;31998:17;31991:47;32055:131;32181:4;32055:131;:::i;:::-;32047:139;;31774:419;;;:::o;32199:174::-;32339:26;32335:1;32327:6;32323:14;32316:50;32199:174;:::o;32379:366::-;32521:3;32542:67;32606:2;32601:3;32542:67;:::i;:::-;32535:74;;32618:93;32707:3;32618:93;:::i;:::-;32736:2;32731:3;32727:12;32720:19;;32379:366;;;:::o;32751:419::-;32917:4;32955:2;32944:9;32940:18;32932:26;;33004:9;32998:4;32994:20;32990:1;32979:9;32975:17;32968:47;33032:131;33158:4;33032:131;:::i;:::-;33024:139;;32751:419;;;:::o;33176:225::-;33316:34;33312:1;33304:6;33300:14;33293:58;33385:8;33380:2;33372:6;33368:15;33361:33;33176:225;:::o;33407:366::-;33549:3;33570:67;33634:2;33629:3;33570:67;:::i;:::-;33563:74;;33646:93;33735:3;33646:93;:::i;:::-;33764:2;33759:3;33755:12;33748:19;;33407:366;;;:::o;33779:419::-;33945:4;33983:2;33972:9;33968:18;33960:26;;34032:9;34026:4;34022:20;34018:1;34007:9;34003:17;33996:47;34060:131;34186:4;34060:131;:::i;:::-;34052:139;;33779:419;;;:::o;34204:143::-;34261:5;34292:6;34286:13;34277:22;;34308:33;34335:5;34308:33;:::i;:::-;34204:143;;;;:::o;34353:351::-;34423:6;34472:2;34460:9;34451:7;34447:23;34443:32;34440:119;;;34478:79;;:::i;:::-;34440:119;34598:1;34623:64;34679:7;34670:6;34659:9;34655:22;34623:64;:::i;:::-;34613:74;;34569:128;34353:351;;;;:::o;34710:332::-;34831:4;34869:2;34858:9;34854:18;34846:26;;34882:71;34950:1;34939:9;34935:17;34926:6;34882:71;:::i;:::-;34963:72;35031:2;35020:9;35016:18;35007:6;34963:72;:::i;:::-;34710:332;;;;;:::o;35048:137::-;35102:5;35133:6;35127:13;35118:22;;35149:30;35173:5;35149:30;:::i;:::-;35048:137;;;;:::o;35191:345::-;35258:6;35307:2;35295:9;35286:7;35282:23;35278:32;35275:119;;;35313:79;;:::i;:::-;35275:119;35433:1;35458:61;35511:7;35502:6;35491:9;35487:22;35458:61;:::i;:::-;35448:71;;35404:125;35191:345;;;;:::o;35542:223::-;35682:34;35678:1;35670:6;35666:14;35659:58;35751:6;35746:2;35738:6;35734:15;35727:31;35542:223;:::o;35771:366::-;35913:3;35934:67;35998:2;35993:3;35934:67;:::i;:::-;35927:74;;36010:93;36099:3;36010:93;:::i;:::-;36128:2;36123:3;36119:12;36112:19;;35771:366;;;:::o;36143:419::-;36309:4;36347:2;36336:9;36332:18;36324:26;;36396:9;36390:4;36386:20;36382:1;36371:9;36367:17;36360:47;36424:131;36550:4;36424:131;:::i;:::-;36416:139;;36143:419;;;:::o;36568:221::-;36708:34;36704:1;36696:6;36692:14;36685:58;36777:4;36772:2;36764:6;36760:15;36753:29;36568:221;:::o;36795:366::-;36937:3;36958:67;37022:2;37017:3;36958:67;:::i;:::-;36951:74;;37034:93;37123:3;37034:93;:::i;:::-;37152:2;37147:3;37143:12;37136:19;;36795:366;;;:::o;37167:419::-;37333:4;37371:2;37360:9;37356:18;37348:26;;37420:9;37414:4;37410:20;37406:1;37395:9;37391:17;37384:47;37448:131;37574:4;37448:131;:::i;:::-;37440:139;;37167:419;;;:::o;37592:224::-;37732:34;37728:1;37720:6;37716:14;37709:58;37801:7;37796:2;37788:6;37784:15;37777:32;37592:224;:::o;37822:366::-;37964:3;37985:67;38049:2;38044:3;37985:67;:::i;:::-;37978:74;;38061:93;38150:3;38061:93;:::i;:::-;38179:2;38174:3;38170:12;38163:19;;37822:366;;;:::o;38194:419::-;38360:4;38398:2;38387:9;38383:18;38375:26;;38447:9;38441:4;38437:20;38433:1;38422:9;38418:17;38411:47;38475:131;38601:4;38475:131;:::i;:::-;38467:139;;38194:419;;;:::o;38619:222::-;38759:34;38755:1;38747:6;38743:14;38736:58;38828:5;38823:2;38815:6;38811:15;38804:30;38619:222;:::o;38847:366::-;38989:3;39010:67;39074:2;39069:3;39010:67;:::i;:::-;39003:74;;39086:93;39175:3;39086:93;:::i;:::-;39204:2;39199:3;39195:12;39188:19;;38847:366;;;:::o;39219:419::-;39385:4;39423:2;39412:9;39408:18;39400:26;;39472:9;39466:4;39462:20;39458:1;39447:9;39443:17;39436:47;39500:131;39626:4;39500:131;:::i;:::-;39492:139;;39219:419;;;:::o;39644:179::-;39784:31;39780:1;39772:6;39768:14;39761:55;39644:179;:::o;39829:366::-;39971:3;39992:67;40056:2;40051:3;39992:67;:::i;:::-;39985:74;;40068:93;40157:3;40068:93;:::i;:::-;40186:2;40181:3;40177:12;40170:19;;39829:366;;;:::o;40201:419::-;40367:4;40405:2;40394:9;40390:18;40382:26;;40454:9;40448:4;40444:20;40440:1;40429:9;40425:17;40418:47;40482:131;40608:4;40482:131;:::i;:::-;40474:139;;40201:419;;;:::o;40626:172::-;40766:24;40762:1;40754:6;40750:14;40743:48;40626:172;:::o;40804:366::-;40946:3;40967:67;41031:2;41026:3;40967:67;:::i;:::-;40960:74;;41043:93;41132:3;41043:93;:::i;:::-;41161:2;41156:3;41152:12;41145:19;;40804:366;;;:::o;41176:419::-;41342:4;41380:2;41369:9;41365:18;41357:26;;41429:9;41423:4;41419:20;41415:1;41404:9;41400:17;41393:47;41457:131;41583:4;41457:131;:::i;:::-;41449:139;;41176:419;;;:::o;41601:168::-;41741:20;41737:1;41729:6;41725:14;41718:44;41601:168;:::o;41775:366::-;41917:3;41938:67;42002:2;41997:3;41938:67;:::i;:::-;41931:74;;42014:93;42103:3;42014:93;:::i;:::-;42132:2;42127:3;42123:12;42116:19;;41775:366;;;:::o;42147:419::-;42313:4;42351:2;42340:9;42336:18;42328:26;;42400:9;42394:4;42390:20;42386:1;42375:9;42371:17;42364:47;42428:131;42554:4;42428:131;:::i;:::-;42420:139;;42147:419;;;:::o;42572:227::-;42712:34;42708:1;42700:6;42696:14;42689:58;42781:10;42776:2;42768:6;42764:15;42757:35;42572:227;:::o;42805:366::-;42947:3;42968:67;43032:2;43027:3;42968:67;:::i;:::-;42961:74;;43044:93;43133:3;43044:93;:::i;:::-;43162:2;43157:3;43153:12;43146:19;;42805:366;;;:::o;43177:419::-;43343:4;43381:2;43370:9;43366:18;43358:26;;43430:9;43424:4;43420:20;43416:1;43405:9;43401:17;43394:47;43458:131;43584:4;43458:131;:::i;:::-;43450:139;;43177:419;;;:::o;43602:174::-;43742:26;43738:1;43730:6;43726:14;43719:50;43602:174;:::o;43782:366::-;43924:3;43945:67;44009:2;44004:3;43945:67;:::i;:::-;43938:74;;44021:93;44110:3;44021:93;:::i;:::-;44139:2;44134:3;44130:12;44123:19;;43782:366;;;:::o;44154:419::-;44320:4;44358:2;44347:9;44343:18;44335:26;;44407:9;44401:4;44397:20;44393:1;44382:9;44378:17;44371:47;44435:131;44561:4;44435:131;:::i;:::-;44427:139;;44154:419;;;:::o;44579:229::-;44719:34;44715:1;44707:6;44703:14;44696:58;44788:12;44783:2;44775:6;44771:15;44764:37;44579:229;:::o;44814:366::-;44956:3;44977:67;45041:2;45036:3;44977:67;:::i;:::-;44970:74;;45053:93;45142:3;45053:93;:::i;:::-;45171:2;45166:3;45162:12;45155:19;;44814:366;;;:::o;45186:419::-;45352:4;45390:2;45379:9;45375:18;45367:26;;45439:9;45433:4;45429:20;45425:1;45414:9;45410:17;45403:47;45467:131;45593:4;45467:131;:::i;:::-;45459:139;;45186:419;;;:::o;45611:191::-;45651:4;45671:20;45689:1;45671:20;:::i;:::-;45666:25;;45705:20;45723:1;45705:20;:::i;:::-;45700:25;;45744:1;45741;45738:8;45735:34;;;45749:18;;:::i;:::-;45735:34;45794:1;45791;45787:9;45779:17;;45611:191;;;;:::o;45808:147::-;45909:11;45946:3;45931:18;;45808:147;;;;:::o;45961:114::-;;:::o;46081:398::-;46240:3;46261:83;46342:1;46337:3;46261:83;:::i;:::-;46254:90;;46353:93;46442:3;46353:93;:::i;:::-;46471:1;46466:3;46462:11;46455:18;;46081:398;;;:::o;46485:379::-;46669:3;46691:147;46834:3;46691:147;:::i;:::-;46684:154;;46855:3;46848:10;;46485:379;;;:::o;46870:225::-;47010:34;47006:1;46998:6;46994:14;46987:58;47079:8;47074:2;47066:6;47062:15;47055:33;46870:225;:::o;47101:366::-;47243:3;47264:67;47328:2;47323:3;47264:67;:::i;:::-;47257:74;;47340:93;47429:3;47340:93;:::i;:::-;47458:2;47453:3;47449:12;47442:19;;47101:366;;;:::o;47473:419::-;47639:4;47677:2;47666:9;47662:18;47654:26;;47726:9;47720:4;47716:20;47712:1;47701:9;47697:17;47690:47;47754:131;47880:4;47754:131;:::i;:::-;47746:139;;47473:419;;;:::o;47898:320::-;48013:4;48051:2;48040:9;48036:18;48028:26;;48064:71;48132:1;48121:9;48117:17;48108:6;48064:71;:::i;:::-;48145:66;48207:2;48196:9;48192:18;48183:6;48145:66;:::i;:::-;47898:320;;;;;:::o;48224:180::-;48272:77;48269:1;48262:88;48369:4;48366:1;48359:15;48393:4;48390:1;48383:15;48410:143;48467:5;48498:6;48492:13;48483:22;;48514:33;48541:5;48514:33;:::i;:::-;48410:143;;;;:::o;48559:351::-;48629:6;48678:2;48666:9;48657:7;48653:23;48649:32;48646:119;;;48684:79;;:::i;:::-;48646:119;48804:1;48829:64;48885:7;48876:6;48865:9;48861:22;48829:64;:::i;:::-;48819:74;;48775:128;48559:351;;;;:::o;48916:85::-;48961:7;48990:5;48979:16;;48916:85;;;:::o;49007:158::-;49065:9;49098:61;49116:42;49125:32;49151:5;49125:32;:::i;:::-;49116:42;:::i;:::-;49098:61;:::i;:::-;49085:74;;49007:158;;;:::o;49171:147::-;49266:45;49305:5;49266:45;:::i;:::-;49261:3;49254:58;49171:147;;:::o;49324:114::-;49391:6;49425:5;49419:12;49409:22;;49324:114;;;:::o;49444:184::-;49543:11;49577:6;49572:3;49565:19;49617:4;49612:3;49608:14;49593:29;;49444:184;;;;:::o;49634:132::-;49701:4;49724:3;49716:11;;49754:4;49749:3;49745:14;49737:22;;49634:132;;;:::o;49772:108::-;49849:24;49867:5;49849:24;:::i;:::-;49844:3;49837:37;49772:108;;:::o;49886:179::-;49955:10;49976:46;50018:3;50010:6;49976:46;:::i;:::-;50054:4;50049:3;50045:14;50031:28;;49886:179;;;;:::o;50071:113::-;50141:4;50173;50168:3;50164:14;50156:22;;50071:113;;;:::o;50220:732::-;50339:3;50368:54;50416:5;50368:54;:::i;:::-;50438:86;50517:6;50512:3;50438:86;:::i;:::-;50431:93;;50548:56;50598:5;50548:56;:::i;:::-;50627:7;50658:1;50643:284;50668:6;50665:1;50662:13;50643:284;;;50744:6;50738:13;50771:63;50830:3;50815:13;50771:63;:::i;:::-;50764:70;;50857:60;50910:6;50857:60;:::i;:::-;50847:70;;50703:224;50690:1;50687;50683:9;50678:14;;50643:284;;;50647:14;50943:3;50936:10;;50344:608;;;50220:732;;;;:::o;50958:831::-;51221:4;51259:3;51248:9;51244:19;51236:27;;51273:71;51341:1;51330:9;51326:17;51317:6;51273:71;:::i;:::-;51354:80;51430:2;51419:9;51415:18;51406:6;51354:80;:::i;:::-;51481:9;51475:4;51471:20;51466:2;51455:9;51451:18;51444:48;51509:108;51612:4;51603:6;51509:108;:::i;:::-;51501:116;;51627:72;51695:2;51684:9;51680:18;51671:6;51627:72;:::i;:::-;51709:73;51777:3;51766:9;51762:19;51753:6;51709:73;:::i;:::-;50958:831;;;;;;;;:::o;51795:807::-;52044:4;52082:3;52071:9;52067:19;52059:27;;52096:71;52164:1;52153:9;52149:17;52140:6;52096:71;:::i;:::-;52177:72;52245:2;52234:9;52230:18;52221:6;52177:72;:::i;:::-;52259:80;52335:2;52324:9;52320:18;52311:6;52259:80;:::i;:::-;52349;52425:2;52414:9;52410:18;52401:6;52349:80;:::i;:::-;52439:73;52507:3;52496:9;52492:19;52483:6;52439:73;:::i;:::-;52522;52590:3;52579:9;52575:19;52566:6;52522:73;:::i;:::-;51795:807;;;;;;;;;:::o;52608:663::-;52696:6;52704;52712;52761:2;52749:9;52740:7;52736:23;52732:32;52729:119;;;52767:79;;:::i;:::-;52729:119;52887:1;52912:64;52968:7;52959:6;52948:9;52944:22;52912:64;:::i;:::-;52902:74;;52858:128;53025:2;53051:64;53107:7;53098:6;53087:9;53083:22;53051:64;:::i;:::-;53041:74;;52996:129;53164:2;53190:64;53246:7;53237:6;53226:9;53222:22;53190:64;:::i;:::-;53180:74;;53135:129;52608:663;;;;;:::o

Swarm Source

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