ETH Price: $3,345.62 (-0.80%)

Token

SciNet (SCINET)
 

Overview

Max Total Supply

10,000,000 SCINET

Holders

749

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
rafcio18.eth
Balance
9,220.623704206243852705 SCINET

Value
$0.00
0xAdE62b4cb00d520407B416A139d075f24a8E17c8
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
SciNet

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-12-09
*/

/****
Website:  https://scinet.io
Docs: https://docs.scinet.io
Telegram: https://t.me/scinetlabs
X:  https://x.com/scinetlabs
****/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.23;

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

contract SciNet is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address public marketerWallet;
    address public DevsWallet;

    uint256 public maxTx;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallets;

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

    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = false;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyDevFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellDevFee;

    uint256 public tokensForMarkets;
    uint256 public tokensForDev;

    mapping(address => bool) private _isBlackList;
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedmaxTx;

    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

    event marketerWalletUpdated(
        address indexed newWallet,
        address indexed olDevsWalletallet
    );

    event DevsWalletUpdated(
        address indexed newWallet,
        address indexed olDevsWalletallet
    );

    constructor() ERC20("SciNet", unicode"SCINET") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

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

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

        uint256 _buyMarketingFee = 5;
        uint256 _sellMarketingFee = 5;
        uint256 _buyDevFee = 0;
        uint256 _sellDevFee = 0;

        uint256 totalSupply = 10_000_000 * 1e18;

        maxTx = 200_000 * 1e18;
        maxWallets = 200_000 * 1e18;
        swapTokensAtAmount = (totalSupply * 3) / 10000;

        buyMarketingFee = _buyMarketingFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyDevFee;

        sellMarketingFee = _sellMarketingFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellDevFee;

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

        setExcludedFromMaxTX(owner(), true);
        setExcludedFromMaxTX(address(this), true);
        setExcludedFromMaxTX(address(0xdead), true);

        marketerWallet = address(0xA25fE7c8DE8F391e756e5Cd8519CAadFaeFB116d);
        DevsWallet = address(0xA25fE7c8DE8F391e756e5Cd8519CAadFaeFB116d);

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    function endLaunchPhase() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    function disableTransferDelay() external onlyOwner returns (bool) {
        transferDelayEnabled = false;
        return true;
    }

    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

    function setMaxTransaction(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 1000) / 1e18,
            "Cannot set maxTx lower than 0.1%"
        );
        maxTx = newNum * (10**18);
    }

    function setMaxWalletSize(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxWallets lower than 0.5%"
        );
        maxWallets = newNum * (10**18);
    }

    function setMarketingWallet(address newmarketerWallet) external onlyOwner {
        emit marketerWalletUpdated(newmarketerWallet, marketerWallet);
        marketerWallet = newmarketerWallet;
    }

    function setDevWallet(address newWallet) external onlyOwner {
        emit DevsWalletUpdated(newWallet, DevsWallet);
        DevsWallet = newWallet;
    }

    function setExcludedFromMaxTX(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedmaxTx[updAds] = isEx;
    }

    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }
    
    function blockBots(address addr, bool enable)
        external onlyOwner {
        _isBlackList[addr] = enable;
    }

    function updateFees(
        uint256 _buyMarketingFee,
        uint256 _buyDevFee,
        uint256 _sellMarketingFee,
        uint256 _sellDevFee) external onlyOwner {
        buyMarketingFee = _buyMarketingFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyDevFee;
        sellMarketingFee = _sellMarketingFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellDevFee;
        require(buyTotalFees <= 75, "Must keep fees at 75% or less");
        require(sellTotalFees <= 75, "Must keep fees at 75% or less");
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    event BoughtEarly(address indexed sniper);

    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(!_isBlackList[from], "[from] black list");
        require(!_isBlackList[to], "[to] black list");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

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

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
                if (transferDelayEnabled) {
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }

                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedmaxTx[to]) {
                    require(amount <= maxTx, "Buy transfer amount exceeds the maxTx.");
                    require(amount + balanceOf(to) <= maxWallets, "Max wallet exceeded");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedmaxTx[from]) {
                    require(amount <= maxTx, "Sell transfer amount exceeds the maxTx.");
                }
                else if (!_isExcludedmaxTx[to]) {
                    require(amount + balanceOf(to) <= maxWallets, "Max wallet exceeded");
                }
            }
        }

        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 = !swapping;

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForDev += (fees * sellDevFee) / sellTotalFees;
                tokensForMarkets += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForDev += (fees * buyDevFee) / buyTotalFees;
                tokensForMarkets += (fees * buyMarketingFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

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

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }

    function manualSwap(uint256 amount) external {
        require(_msgSender() == marketerWallet);
        require(amount <= balanceOf(address(this)) && amount > 0, "Wrong amount");
        swapTokensForEth(amount);
    } 

    function swapTokensForEth(uint256 tokenAmount) private {
        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 swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForMarkets + tokensForDev;
        bool success;

        if (contractBalance == 0) {
            return;
        }

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

        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(contractBalance);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);

        tokensForMarkets = 0;
        tokensForDev = 0;

        (success, ) = address(DevsWallet).call{value: ethForDev}("");
        (success, ) = address(marketerWallet).call{ value: address(this).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":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"olDevsWalletallet","type":"address"}],"name":"DevsWalletUpdated","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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"olDevsWalletallet","type":"address"}],"name":"marketerWalletUpdated","type":"event"},{"inputs":[],"name":"DevsWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaxTx","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":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"endLaunchPhase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","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":"newWallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"setExcludedFromMaxTX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newmarketerWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"setMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"setMaxWalletSize","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":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarkets","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_buyDevFee","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellDevFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526001600c5f6101000a81548160ff0219169083151502179055505f600c60016101000a81548160ff0219169083151502179055505f600c60026101000a81548160ff0219169083151502179055505f600e5f6101000a81548160ff021916908315150217905550348015610076575f80fd5b506040518060400160405280600681526020017f5363694e657400000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f5343494e4554000000000000000000000000000000000000000000000000000081525081600390816100f29190610ca5565b5080600490816101029190610ca5565b50505061012161011661056060201b60201c565b61056760201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d905061014a81600161062a60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101eb9190610dd2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610250573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102749190610dd2565b6040518363ffffffff1660e01b8152600401610291929190610e0c565b6020604051808303815f875af11580156102ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102d19190610dd2565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061034260065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161062a60201b60201c565b61037460065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161070a60201b60201c565b5f600590505f600590505f805f6a084595161401484a0000009050692a5a058fc295ed000000600981905550692a5a058fc295ed000000600b819055506127106003826103c19190610e60565b6103cb9190610ece565b600a8190555084601081905550826011819055506011546010546103ef9190610efe565b600f8190555083601381905550816014819055506014546013546104139190610efe565b60128190555061043761042a6107a860201b60201c565b60016107d060201b60201c565b6104483060016107d060201b60201c565b61045b61dead60016107d060201b60201c565b61047961046c6107a860201b60201c565b600161062a60201b60201c565b61048a30600161062a60201b60201c565b61049d61dead600161062a60201b60201c565b73a25fe7c8de8f391e756e5cd8519caadfaefb116d60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a25fe7c8de8f391e756e5cd8519caadfaefb116d60085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061055533826108fe60201b60201c565b50505050505061106c565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61063861056060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1661065c6107a860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146106b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a990610f8b565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6107de61056060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166108026107a860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084f90610f8b565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516108f29190610fc3565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361096c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096390611026565b60405180910390fd5b61097d5f8383610a6160201b60201c565b8060025f82825461098e9190610efe565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109e09190610efe565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a449190611053565b60405180910390a3610a5d5f8383610a6660201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610ae657607f821691505b602082108103610af957610af8610aa2565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610b5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610b20565b610b658683610b20565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610ba9610ba4610b9f84610b7d565b610b86565b610b7d565b9050919050565b5f819050919050565b610bc283610b8f565b610bd6610bce82610bb0565b848454610b2c565b825550505050565b5f90565b610bea610bde565b610bf5818484610bb9565b505050565b5b81811015610c1857610c0d5f82610be2565b600181019050610bfb565b5050565b601f821115610c5d57610c2e81610aff565b610c3784610b11565b81016020851015610c46578190505b610c5a610c5285610b11565b830182610bfa565b50505b505050565b5f82821c905092915050565b5f610c7d5f1984600802610c62565b1980831691505092915050565b5f610c958383610c6e565b9150826002028217905092915050565b610cae82610a6b565b67ffffffffffffffff811115610cc757610cc6610a75565b5b610cd18254610acf565b610cdc828285610c1c565b5f60209050601f831160018114610d0d575f8415610cfb578287015190505b610d058582610c8a565b865550610d6c565b601f198416610d1b86610aff565b5f5b82811015610d4257848901518255600182019150602085019450602081019050610d1d565b86831015610d5f5784890151610d5b601f891682610c6e565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610da182610d78565b9050919050565b610db181610d97565b8114610dbb575f80fd5b50565b5f81519050610dcc81610da8565b92915050565b5f60208284031215610de757610de6610d74565b5b5f610df484828501610dbe565b91505092915050565b610e0681610d97565b82525050565b5f604082019050610e1f5f830185610dfd565b610e2c6020830184610dfd565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610e6a82610b7d565b9150610e7583610b7d565b9250828202610e8381610b7d565b91508282048414831517610e9a57610e99610e33565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610ed882610b7d565b9150610ee383610b7d565b925082610ef357610ef2610ea1565b5b828204905092915050565b5f610f0882610b7d565b9150610f1383610b7d565b9250828201905080821115610f2b57610f2a610e33565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f610f75602083610f31565b9150610f8082610f41565b602082019050919050565b5f6020820190508181035f830152610fa281610f69565b9050919050565b5f8115159050919050565b610fbd81610fa9565b82525050565b5f602082019050610fd65f830184610fb4565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f611010601f83610f31565b915061101b82610fdc565b602082019050919050565b5f6020820190508181035f83015261103d81611004565b9050919050565b61104d81610b7d565b82525050565b5f6020820190506110665f830184611044565b92915050565b608051614d7b6110a05f395f8181610cca015281816128b70152818161335501528181613434015261345b0152614d7b5ff3fe608060405260043610610302575f3560e01c8063921369131161018f578063bbc0c742116100db578063d85ba06311610094578063e6819ba71161006e578063e6819ba714610b65578063e884f26014610ba1578063ea1644d514610bcb578063f2fde38b14610bf357610309565b8063d85ba06314610ad5578063dd62ed3e14610aff578063e2f4560514610b3b57610309565b8063bbc0c742146109cb578063c0246668146109f5578063c6616ba114610a1d578063c876d0b914610a45578063d257b34f14610a6f578063d6a22a8514610aab57610309565b8063a0d82dc511610148578063a9059cbb11610122578063a9059cbb14610903578063ab5a18871461093f578063b62496f514610967578063b70143c9146109a357610309565b8063a0d82dc514610873578063a457c2d71461089d578063a72f4586146108d957610309565b8063921369131461077b578063924de9b7146107a557806395d89b41146107cd5780639a7a23d6146107f75780639c3b4fdc1461081f5780639fccce321461084957610309565b80634fbee1931161024e5780636ddd1713116102075780637437681e116101e15780637437681e146106e75780637bce5a04146107115780638a8c523c1461073b5780638da5cb5b1461075157610309565b80636ddd17131461066b57806370a0823114610695578063715018a6146106d157610309565b80634fbee193146105635780635d098b381461059f57806361528e27146105c757806361fa6254146105f1578063667dc5b0146106195780636a486a8e1461064157610309565b806327c8f835116102bb578063313ce56711610295578063313ce567146104a957806339509351146104d357806349bd5a5e1461050f5780634a62bb651461053957610309565b806327c8f8351461042b57806330a136ad146104555780633103b39e1461047f57610309565b806306fdde031461030d578063095ea7b3146103375780631694505e1461037357806318160ddd1461039d5780631f53ac02146103c757806323b872dd146103ef57610309565b3661030957005b5f80fd5b348015610318575f80fd5b50610321610c1b565b60405161032e91906139e8565b60405180910390f35b348015610342575f80fd5b5061035d60048036038101906103589190613a99565b610cab565b60405161036a9190613af1565b60405180910390f35b34801561037e575f80fd5b50610387610cc8565b6040516103949190613b65565b60405180910390f35b3480156103a8575f80fd5b506103b1610cec565b6040516103be9190613b8d565b60405180910390f35b3480156103d2575f80fd5b506103ed60048036038101906103e89190613ba6565b610cf5565b005b3480156103fa575f80fd5b5061041560048036038101906104109190613bd1565b610e2f565b6040516104229190613af1565b60405180910390f35b348015610436575f80fd5b5061043f610f21565b60405161044c9190613c30565b60405180910390f35b348015610460575f80fd5b50610469610f27565b6040516104769190613b8d565b60405180910390f35b34801561048a575f80fd5b50610493610f2d565b6040516104a09190613c30565b60405180910390f35b3480156104b4575f80fd5b506104bd610f52565b6040516104ca9190613c64565b60405180910390f35b3480156104de575f80fd5b506104f960048036038101906104f49190613a99565b610f5a565b6040516105069190613af1565b60405180910390f35b34801561051a575f80fd5b50610523611001565b6040516105309190613c30565b60405180910390f35b348015610544575f80fd5b5061054d611026565b60405161055a9190613af1565b60405180910390f35b34801561056e575f80fd5b5061058960048036038101906105849190613ba6565b611038565b6040516105969190613af1565b60405180910390f35b3480156105aa575f80fd5b506105c560048036038101906105c09190613ba6565b61108a565b005b3480156105d2575f80fd5b506105db6111c4565b6040516105e89190613b8d565b60405180910390f35b3480156105fc575f80fd5b5061061760048036038101906106129190613ca7565b6111ca565b005b348015610624575f80fd5b5061063f600480360381019061063a9190613ca7565b61129e565b005b34801561064c575f80fd5b50610655611372565b6040516106629190613b8d565b60405180910390f35b348015610676575f80fd5b5061067f611378565b60405161068c9190613af1565b60405180910390f35b3480156106a0575f80fd5b506106bb60048036038101906106b69190613ba6565b61138b565b6040516106c89190613b8d565b60405180910390f35b3480156106dc575f80fd5b506106e56113d0565b005b3480156106f2575f80fd5b506106fb611457565b6040516107089190613b8d565b60405180910390f35b34801561071c575f80fd5b5061072561145d565b6040516107329190613b8d565b60405180910390f35b348015610746575f80fd5b5061074f611463565b005b34801561075c575f80fd5b50610765611517565b6040516107729190613c30565b60405180910390f35b348015610786575f80fd5b5061078f61153f565b60405161079c9190613b8d565b60405180910390f35b3480156107b0575f80fd5b506107cb60048036038101906107c69190613ce5565b611545565b005b3480156107d8575f80fd5b506107e16115de565b6040516107ee91906139e8565b60405180910390f35b348015610802575f80fd5b5061081d60048036038101906108189190613ca7565b61166e565b005b34801561082a575f80fd5b50610833611787565b6040516108409190613b8d565b60405180910390f35b348015610854575f80fd5b5061085d61178d565b60405161086a9190613b8d565b60405180910390f35b34801561087e575f80fd5b50610887611793565b6040516108949190613b8d565b60405180910390f35b3480156108a8575f80fd5b506108c360048036038101906108be9190613a99565b611799565b6040516108d09190613af1565b60405180910390f35b3480156108e4575f80fd5b506108ed61187f565b6040516108fa9190613c30565b60405180910390f35b34801561090e575f80fd5b5061092960048036038101906109249190613a99565b6118a4565b6040516109369190613af1565b60405180910390f35b34801561094a575f80fd5b5061096560048036038101906109609190613d10565b6118c1565b005b348015610972575f80fd5b5061098d60048036038101906109889190613ba6565b6119d0565b60405161099a9190613af1565b60405180910390f35b3480156109ae575f80fd5b506109c960048036038101906109c49190613d10565b6119ed565b005b3480156109d6575f80fd5b506109df611aae565b6040516109ec9190613af1565b60405180910390f35b348015610a00575f80fd5b50610a1b6004803603810190610a169190613ca7565b611ac1565b005b348015610a28575f80fd5b50610a436004803603810190610a3e9190613d3b565b611be3565b005b348015610a50575f80fd5b50610a59611d39565b604051610a669190613af1565b60405180910390f35b348015610a7a575f80fd5b50610a956004803603810190610a909190613d10565b611d4b565b604051610aa29190613af1565b60405180910390f35b348015610ab6575f80fd5b50610abf611e9f565b604051610acc9190613af1565b60405180910390f35b348015610ae0575f80fd5b50610ae9611f3c565b604051610af69190613b8d565b60405180910390f35b348015610b0a575f80fd5b50610b256004803603810190610b209190613d9f565b611f42565b604051610b329190613b8d565b60405180910390f35b348015610b46575f80fd5b50610b4f611fc4565b604051610b5c9190613b8d565b60405180910390f35b348015610b70575f80fd5b50610b8b6004803603810190610b869190613ba6565b611fca565b604051610b989190613af1565b60405180910390f35b348015610bac575f80fd5b50610bb5611fe7565b604051610bc29190613af1565b60405180910390f35b348015610bd6575f80fd5b50610bf16004803603810190610bec9190613d10565b612084565b005b348015610bfe575f80fd5b50610c196004803603810190610c149190613ba6565b612193565b005b606060038054610c2a90613e0a565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5690613e0a565b8015610ca15780601f10610c7857610100808354040283529160200191610ca1565b820191905f5260205f20905b815481529060010190602001808311610c8457829003601f168201915b5050505050905090565b5f610cbe610cb7612289565b8484612290565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b610cfd612289565b73ffffffffffffffffffffffffffffffffffffffff16610d1b611517565b73ffffffffffffffffffffffffffffffffffffffff1614610d71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6890613e84565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f9e3da7e72199adc414f24e73d3985f288cce5edbc5c370e29af583afdd78c2c260405160405180910390a38060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610e3b848484612453565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610e82612289565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef890613f12565b60405180910390fd5b610f1585610f0d612289565b858403612290565b60019150509392505050565b61dead81565b600b5481565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b5f610ff7610f66612289565b848460015f610f73612289565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ff29190613f5d565b612290565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5f9054906101000a900460ff1681565b5f60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b611092612289565b73ffffffffffffffffffffffffffffffffffffffff166110b0611517565b73ffffffffffffffffffffffffffffffffffffffff1614611106576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fd90613e84565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f455cf943964d06e77e44126ecca5a66b2c9721f4576a31f8693127282c55700f60405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b6111d2612289565b73ffffffffffffffffffffffffffffffffffffffff166111f0611517565b73ffffffffffffffffffffffffffffffffffffffff1614611246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123d90613e84565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6112a6612289565b73ffffffffffffffffffffffffffffffffffffffff166112c4611517565b73ffffffffffffffffffffffffffffffffffffffff161461131a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131190613e84565b60405180910390fd5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60125481565b600c60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6113d8612289565b73ffffffffffffffffffffffffffffffffffffffff166113f6611517565b73ffffffffffffffffffffffffffffffffffffffff161461144c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144390613e84565b60405180910390fd5b6114555f613157565b565b60095481565b60105481565b61146b612289565b73ffffffffffffffffffffffffffffffffffffffff16611489611517565b73ffffffffffffffffffffffffffffffffffffffff16146114df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d690613e84565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b61154d612289565b73ffffffffffffffffffffffffffffffffffffffff1661156b611517565b73ffffffffffffffffffffffffffffffffffffffff16146115c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b890613e84565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b6060600480546115ed90613e0a565b80601f016020809104026020016040519081016040528092919081815260200182805461161990613e0a565b80156116645780601f1061163b57610100808354040283529160200191611664565b820191905f5260205f20905b81548152906001019060200180831161164757829003601f168201915b5050505050905090565b611676612289565b73ffffffffffffffffffffffffffffffffffffffff16611694611517565b73ffffffffffffffffffffffffffffffffffffffff16146116ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e190613e84565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177090614000565b60405180910390fd5b611783828261321a565b5050565b60115481565b60165481565b60145481565b5f8060015f6117a6612289565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611860576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118579061408e565b60405180910390fd5b61187461186b612289565b85858403612290565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6118b76118b0612289565b8484612453565b6001905092915050565b6118c9612289565b73ffffffffffffffffffffffffffffffffffffffff166118e7611517565b73ffffffffffffffffffffffffffffffffffffffff161461193d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193490613e84565b60405180910390fd5b670de0b6b3a76400006103e86001611953610cec565b61195d91906140ac565b611967919061411a565b611971919061411a565b8110156119b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119aa90614194565b60405180910390fd5b670de0b6b3a7640000816119c791906140ac565b60098190555050565b601a602052805f5260405f205f915054906101000a900460ff1681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611a2d612289565b73ffffffffffffffffffffffffffffffffffffffff1614611a4c575f80fd5b611a553061138b565b8111158015611a6357505f81115b611aa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a99906141fc565b60405180910390fd5b611aab816132b8565b50565b600c60019054906101000a900460ff1681565b611ac9612289565b73ffffffffffffffffffffffffffffffffffffffff16611ae7611517565b73ffffffffffffffffffffffffffffffffffffffff1614611b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3490613e84565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611bd79190613af1565b60405180910390a25050565b611beb612289565b73ffffffffffffffffffffffffffffffffffffffff16611c09611517565b73ffffffffffffffffffffffffffffffffffffffff1614611c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5690613e84565b60405180910390fd5b8360108190555082601181905550601154601054611c7d9190613f5d565b600f819055508160138190555080601481905550601454601354611ca19190613f5d565b601281905550604b600f541115611ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce490614264565b60405180910390fd5b604b6012541115611d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2a90614264565b60405180910390fd5b50505050565b600e5f9054906101000a900460ff1681565b5f611d54612289565b73ffffffffffffffffffffffffffffffffffffffff16611d72611517565b73ffffffffffffffffffffffffffffffffffffffff1614611dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbf90613e84565b60405180910390fd5b620186a06001611dd6610cec565b611de091906140ac565b611dea919061411a565b821015611e2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e23906142f2565b60405180910390fd5b6103e86005611e39610cec565b611e4391906140ac565b611e4d919061411a565b821115611e8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8690614380565b60405180910390fd5b81600a8190555060019050919050565b5f611ea8612289565b73ffffffffffffffffffffffffffffffffffffffff16611ec6611517565b73ffffffffffffffffffffffffffffffffffffffff1614611f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1390613e84565b60405180910390fd5b5f600c5f6101000a81548160ff0219169083151502179055506001905090565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b6019602052805f5260405f205f915054906101000a900460ff1681565b5f611ff0612289565b73ffffffffffffffffffffffffffffffffffffffff1661200e611517565b73ffffffffffffffffffffffffffffffffffffffff1614612064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205b90613e84565b60405180910390fd5b5f600e5f6101000a81548160ff0219169083151502179055506001905090565b61208c612289565b73ffffffffffffffffffffffffffffffffffffffff166120aa611517565b73ffffffffffffffffffffffffffffffffffffffff1614612100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f790613e84565b60405180910390fd5b670de0b6b3a76400006103e86005612116610cec565b61212091906140ac565b61212a919061411a565b612134919061411a565b811015612176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216d9061440e565b60405180910390fd5b670de0b6b3a76400008161218a91906140ac565b600b8190555050565b61219b612289565b73ffffffffffffffffffffffffffffffffffffffff166121b9611517565b73ffffffffffffffffffffffffffffffffffffffff161461220f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220690613e84565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361227d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122749061449c565b60405180910390fd5b61228681613157565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f59061452a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361236c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612363906145b8565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124469190613b8d565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b890614646565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361252f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612526906146d4565b60405180910390fd5b60175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156125b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b09061473c565b60405180910390fd5b60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263a906147a4565b60405180910390fd5b5f810361265a5761265583835f6134eb565b613152565b600c5f9054906101000a900460ff1615612d0257612676611517565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126e457506126b4611517565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561271c57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612756575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561276f5750600660149054906101000a900460ff16155b15612d0157600c60019054906101000a900460ff166128635760185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612823575060185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612862576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128599061480c565b60405180910390fd5b5b600e5f9054906101000a900460ff1615612a275761287f611517565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561290657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561295f575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612a265743600d5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106129e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129da906148c0565b60405180910390fd5b43600d5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ac4575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612b6b57600954811115612b0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b059061494e565b60405180910390fd5b600b54612b1a8361138b565b82612b259190613f5d565b1115612b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5d906149b6565b60405180910390fd5b612d00565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c08575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612c5757600954811115612c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4990614a44565b60405180910390fd5b612cff565b60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612cfe57600b54612cb18361138b565b82612cbc9190613f5d565b1115612cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf4906149b6565b60405180910390fd5b5b5b5b5b5b5f612d0c3061138b565b90505f600a548210159050808015612d305750600c60029054906101000a900460ff165b8015612d495750600660149054906101000a900460ff16155b8015612d9c5750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612def575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612e42575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612e85576001600660146101000a81548160ff021916908315150217905550612e6a613760565b5f600660146101000a81548160ff0219169083151502179055505b5f600660149054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612f34575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612f3d575f90505b5f811561314257601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612f9b57505f601254115b1561303357612fc86064612fba6012548861392f90919063ffffffff16565b61394490919063ffffffff16565b905060125460145482612fdb91906140ac565b612fe5919061411a565b60165f828254612ff59190613f5d565b925050819055506012546013548261300d91906140ac565b613017919061411a565b60155f8282546130279190613f5d565b9250508190555061311f565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561308a57505f600f54115b1561311e576130b760646130a9600f548861392f90919063ffffffff16565b61394490919063ffffffff16565b9050600f54601154826130ca91906140ac565b6130d4919061411a565b60165f8282546130e49190613f5d565b92505081905550600f54601054826130fc91906140ac565b613106919061411a565b60155f8282546131169190613f5d565b925050819055505b5b5f811115613133576131328730836134eb565b5b808561313f9190614a62565b94505b61314d8787876134eb565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f600267ffffffffffffffff8111156132d4576132d3614a95565b5b6040519080825280602002602001820160405280156133025781602001602082028036833780820191505090505b50905030815f8151811061331957613318614ac2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133e09190614b03565b816001815181106133f4576133f3614ac2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613459307f000000000000000000000000000000000000000000000000000000000000000084612290565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016134ba959493929190614c1e565b5f604051808303815f87803b1580156134d1575f80fd5b505af11580156134e3573d5f803e3d5ffd5b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161355090614646565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036135c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135be906146d4565b60405180910390fd5b6135d2838383613959565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364c90614ce6565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546136e39190613f5d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516137479190613b8d565b60405180910390a361375a84848461395e565b50505050565b5f61376a3061138b565b90505f60165460155461377d9190613f5d565b90505f80830361378f5750505061392d565b6014600a5461379e91906140ac565b8311156137b7576014600a546137b491906140ac565b92505b5f4790506137c4846132b8565b5f6137d8824761396390919063ffffffff16565b90505f613802856137f46016548561392f90919063ffffffff16565b61394490919063ffffffff16565b90505f6015819055505f60168190555060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161385790614d31565b5f6040518083038185875af1925050503d805f8114613891576040519150601f19603f3d011682016040523d82523d5f602084013e613896565b606091505b50508094505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516138e190614d31565b5f6040518083038185875af1925050503d805f811461391b576040519150601f19603f3d011682016040523d82523d5f602084013e613920565b606091505b5050809450505050505050505b565b5f818361393c91906140ac565b905092915050565b5f8183613951919061411a565b905092915050565b505050565b505050565b5f81836139709190614a62565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6139ba82613978565b6139c48185613982565b93506139d4818560208601613992565b6139dd816139a0565b840191505092915050565b5f6020820190508181035f830152613a0081846139b0565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613a3582613a0c565b9050919050565b613a4581613a2b565b8114613a4f575f80fd5b50565b5f81359050613a6081613a3c565b92915050565b5f819050919050565b613a7881613a66565b8114613a82575f80fd5b50565b5f81359050613a9381613a6f565b92915050565b5f8060408385031215613aaf57613aae613a08565b5b5f613abc85828601613a52565b9250506020613acd85828601613a85565b9150509250929050565b5f8115159050919050565b613aeb81613ad7565b82525050565b5f602082019050613b045f830184613ae2565b92915050565b5f819050919050565b5f613b2d613b28613b2384613a0c565b613b0a565b613a0c565b9050919050565b5f613b3e82613b13565b9050919050565b5f613b4f82613b34565b9050919050565b613b5f81613b45565b82525050565b5f602082019050613b785f830184613b56565b92915050565b613b8781613a66565b82525050565b5f602082019050613ba05f830184613b7e565b92915050565b5f60208284031215613bbb57613bba613a08565b5b5f613bc884828501613a52565b91505092915050565b5f805f60608486031215613be857613be7613a08565b5b5f613bf586828701613a52565b9350506020613c0686828701613a52565b9250506040613c1786828701613a85565b9150509250925092565b613c2a81613a2b565b82525050565b5f602082019050613c435f830184613c21565b92915050565b5f60ff82169050919050565b613c5e81613c49565b82525050565b5f602082019050613c775f830184613c55565b92915050565b613c8681613ad7565b8114613c90575f80fd5b50565b5f81359050613ca181613c7d565b92915050565b5f8060408385031215613cbd57613cbc613a08565b5b5f613cca85828601613a52565b9250506020613cdb85828601613c93565b9150509250929050565b5f60208284031215613cfa57613cf9613a08565b5b5f613d0784828501613c93565b91505092915050565b5f60208284031215613d2557613d24613a08565b5b5f613d3284828501613a85565b91505092915050565b5f805f8060808587031215613d5357613d52613a08565b5b5f613d6087828801613a85565b9450506020613d7187828801613a85565b9350506040613d8287828801613a85565b9250506060613d9387828801613a85565b91505092959194509250565b5f8060408385031215613db557613db4613a08565b5b5f613dc285828601613a52565b9250506020613dd385828601613a52565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613e2157607f821691505b602082108103613e3457613e33613ddd565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613e6e602083613982565b9150613e7982613e3a565b602082019050919050565b5f6020820190508181035f830152613e9b81613e62565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613efc602883613982565b9150613f0782613ea2565b604082019050919050565b5f6020820190508181035f830152613f2981613ef0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613f6782613a66565b9150613f7283613a66565b9250828201905080821115613f8a57613f89613f30565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613fea603983613982565b9150613ff582613f90565b604082019050919050565b5f6020820190508181035f83015261401781613fde565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f614078602583613982565b91506140838261401e565b604082019050919050565b5f6020820190508181035f8301526140a58161406c565b9050919050565b5f6140b682613a66565b91506140c183613a66565b92508282026140cf81613a66565b915082820484148315176140e6576140e5613f30565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61412482613a66565b915061412f83613a66565b92508261413f5761413e6140ed565b5b828204905092915050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e31255f82015250565b5f61417e602083613982565b91506141898261414a565b602082019050919050565b5f6020820190508181035f8301526141ab81614172565b9050919050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f6141e6600c83613982565b91506141f1826141b2565b602082019050919050565b5f6020820190508181035f830152614213816141da565b9050919050565b7f4d757374206b656570206665657320617420373525206f72206c6573730000005f82015250565b5f61424e601d83613982565b91506142598261421a565b602082019050919050565b5f6020820190508181035f83015261427b81614242565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6142dc603583613982565b91506142e782614282565b604082019050919050565b5f6020820190508181035f830152614309816142d0565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f61436a603483613982565b915061437582614310565b604082019050919050565b5f6020820190508181035f8301526143978161435e565b9050919050565b7f43616e6e6f7420736574206d617857616c6c657473206c6f776572207468616e5f8201527f20302e3525000000000000000000000000000000000000000000000000000000602082015250565b5f6143f8602583613982565b91506144038261439e565b604082019050919050565b5f6020820190508181035f830152614425816143ec565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614486602683613982565b91506144918261442c565b604082019050919050565b5f6020820190508181035f8301526144b38161447a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614514602483613982565b915061451f826144ba565b604082019050919050565b5f6020820190508181035f83015261454181614508565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6145a2602283613982565b91506145ad82614548565b604082019050919050565b5f6020820190508181035f8301526145cf81614596565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614630602583613982565b915061463b826145d6565b604082019050919050565b5f6020820190508181035f83015261465d81614624565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6146be602383613982565b91506146c982614664565b604082019050919050565b5f6020820190508181035f8301526146eb816146b2565b9050919050565b7f5b66726f6d5d20626c61636b206c6973740000000000000000000000000000005f82015250565b5f614726601183613982565b9150614731826146f2565b602082019050919050565b5f6020820190508181035f8301526147538161471a565b9050919050565b7f5b746f5d20626c61636b206c69737400000000000000000000000000000000005f82015250565b5f61478e600f83613982565b91506147998261475a565b602082019050919050565b5f6020820190508181035f8301526147bb81614782565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6147f6601683613982565b9150614801826147c2565b602082019050919050565b5f6020820190508181035f830152614823816147ea565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f6148aa604983613982565b91506148b58261482a565b606082019050919050565b5f6020820190508181035f8301526148d78161489e565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b5f614938602683613982565b9150614943826148de565b604082019050919050565b5f6020820190508181035f8301526149658161492c565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6149a0601383613982565b91506149ab8261496c565b602082019050919050565b5f6020820190508181035f8301526149cd81614994565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b5f614a2e602783613982565b9150614a39826149d4565b604082019050919050565b5f6020820190508181035f830152614a5b81614a22565b9050919050565b5f614a6c82613a66565b9150614a7783613a66565b9250828203905081811115614a8f57614a8e613f30565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614afd81613a3c565b92915050565b5f60208284031215614b1857614b17613a08565b5b5f614b2584828501614aef565b91505092915050565b5f819050919050565b5f614b51614b4c614b4784614b2e565b613b0a565b613a66565b9050919050565b614b6181614b37565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614b9981613a2b565b82525050565b5f614baa8383614b90565b60208301905092915050565b5f602082019050919050565b5f614bcc82614b67565b614bd68185614b71565b9350614be183614b81565b805f5b83811015614c11578151614bf88882614b9f565b9750614c0383614bb6565b925050600181019050614be4565b5085935050505092915050565b5f60a082019050614c315f830188613b7e565b614c3e6020830187614b58565b8181036040830152614c508186614bc2565b9050614c5f6060830185613c21565b614c6c6080830184613b7e565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614cd0602683613982565b9150614cdb82614c76565b604082019050919050565b5f6020820190508181035f830152614cfd81614cc4565b9050919050565b5f81905092915050565b50565b5f614d1c5f83614d04565b9150614d2782614d0e565b5f82019050919050565b5f614d3b82614d11565b915081905091905056fea26469706673582212206529857fa90e71c038f4ea4e0c23f5b52604a246fc38ed9aa8e8be094db3594e64736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610302575f3560e01c8063921369131161018f578063bbc0c742116100db578063d85ba06311610094578063e6819ba71161006e578063e6819ba714610b65578063e884f26014610ba1578063ea1644d514610bcb578063f2fde38b14610bf357610309565b8063d85ba06314610ad5578063dd62ed3e14610aff578063e2f4560514610b3b57610309565b8063bbc0c742146109cb578063c0246668146109f5578063c6616ba114610a1d578063c876d0b914610a45578063d257b34f14610a6f578063d6a22a8514610aab57610309565b8063a0d82dc511610148578063a9059cbb11610122578063a9059cbb14610903578063ab5a18871461093f578063b62496f514610967578063b70143c9146109a357610309565b8063a0d82dc514610873578063a457c2d71461089d578063a72f4586146108d957610309565b8063921369131461077b578063924de9b7146107a557806395d89b41146107cd5780639a7a23d6146107f75780639c3b4fdc1461081f5780639fccce321461084957610309565b80634fbee1931161024e5780636ddd1713116102075780637437681e116101e15780637437681e146106e75780637bce5a04146107115780638a8c523c1461073b5780638da5cb5b1461075157610309565b80636ddd17131461066b57806370a0823114610695578063715018a6146106d157610309565b80634fbee193146105635780635d098b381461059f57806361528e27146105c757806361fa6254146105f1578063667dc5b0146106195780636a486a8e1461064157610309565b806327c8f835116102bb578063313ce56711610295578063313ce567146104a957806339509351146104d357806349bd5a5e1461050f5780634a62bb651461053957610309565b806327c8f8351461042b57806330a136ad146104555780633103b39e1461047f57610309565b806306fdde031461030d578063095ea7b3146103375780631694505e1461037357806318160ddd1461039d5780631f53ac02146103c757806323b872dd146103ef57610309565b3661030957005b5f80fd5b348015610318575f80fd5b50610321610c1b565b60405161032e91906139e8565b60405180910390f35b348015610342575f80fd5b5061035d60048036038101906103589190613a99565b610cab565b60405161036a9190613af1565b60405180910390f35b34801561037e575f80fd5b50610387610cc8565b6040516103949190613b65565b60405180910390f35b3480156103a8575f80fd5b506103b1610cec565b6040516103be9190613b8d565b60405180910390f35b3480156103d2575f80fd5b506103ed60048036038101906103e89190613ba6565b610cf5565b005b3480156103fa575f80fd5b5061041560048036038101906104109190613bd1565b610e2f565b6040516104229190613af1565b60405180910390f35b348015610436575f80fd5b5061043f610f21565b60405161044c9190613c30565b60405180910390f35b348015610460575f80fd5b50610469610f27565b6040516104769190613b8d565b60405180910390f35b34801561048a575f80fd5b50610493610f2d565b6040516104a09190613c30565b60405180910390f35b3480156104b4575f80fd5b506104bd610f52565b6040516104ca9190613c64565b60405180910390f35b3480156104de575f80fd5b506104f960048036038101906104f49190613a99565b610f5a565b6040516105069190613af1565b60405180910390f35b34801561051a575f80fd5b50610523611001565b6040516105309190613c30565b60405180910390f35b348015610544575f80fd5b5061054d611026565b60405161055a9190613af1565b60405180910390f35b34801561056e575f80fd5b5061058960048036038101906105849190613ba6565b611038565b6040516105969190613af1565b60405180910390f35b3480156105aa575f80fd5b506105c560048036038101906105c09190613ba6565b61108a565b005b3480156105d2575f80fd5b506105db6111c4565b6040516105e89190613b8d565b60405180910390f35b3480156105fc575f80fd5b5061061760048036038101906106129190613ca7565b6111ca565b005b348015610624575f80fd5b5061063f600480360381019061063a9190613ca7565b61129e565b005b34801561064c575f80fd5b50610655611372565b6040516106629190613b8d565b60405180910390f35b348015610676575f80fd5b5061067f611378565b60405161068c9190613af1565b60405180910390f35b3480156106a0575f80fd5b506106bb60048036038101906106b69190613ba6565b61138b565b6040516106c89190613b8d565b60405180910390f35b3480156106dc575f80fd5b506106e56113d0565b005b3480156106f2575f80fd5b506106fb611457565b6040516107089190613b8d565b60405180910390f35b34801561071c575f80fd5b5061072561145d565b6040516107329190613b8d565b60405180910390f35b348015610746575f80fd5b5061074f611463565b005b34801561075c575f80fd5b50610765611517565b6040516107729190613c30565b60405180910390f35b348015610786575f80fd5b5061078f61153f565b60405161079c9190613b8d565b60405180910390f35b3480156107b0575f80fd5b506107cb60048036038101906107c69190613ce5565b611545565b005b3480156107d8575f80fd5b506107e16115de565b6040516107ee91906139e8565b60405180910390f35b348015610802575f80fd5b5061081d60048036038101906108189190613ca7565b61166e565b005b34801561082a575f80fd5b50610833611787565b6040516108409190613b8d565b60405180910390f35b348015610854575f80fd5b5061085d61178d565b60405161086a9190613b8d565b60405180910390f35b34801561087e575f80fd5b50610887611793565b6040516108949190613b8d565b60405180910390f35b3480156108a8575f80fd5b506108c360048036038101906108be9190613a99565b611799565b6040516108d09190613af1565b60405180910390f35b3480156108e4575f80fd5b506108ed61187f565b6040516108fa9190613c30565b60405180910390f35b34801561090e575f80fd5b5061092960048036038101906109249190613a99565b6118a4565b6040516109369190613af1565b60405180910390f35b34801561094a575f80fd5b5061096560048036038101906109609190613d10565b6118c1565b005b348015610972575f80fd5b5061098d60048036038101906109889190613ba6565b6119d0565b60405161099a9190613af1565b60405180910390f35b3480156109ae575f80fd5b506109c960048036038101906109c49190613d10565b6119ed565b005b3480156109d6575f80fd5b506109df611aae565b6040516109ec9190613af1565b60405180910390f35b348015610a00575f80fd5b50610a1b6004803603810190610a169190613ca7565b611ac1565b005b348015610a28575f80fd5b50610a436004803603810190610a3e9190613d3b565b611be3565b005b348015610a50575f80fd5b50610a59611d39565b604051610a669190613af1565b60405180910390f35b348015610a7a575f80fd5b50610a956004803603810190610a909190613d10565b611d4b565b604051610aa29190613af1565b60405180910390f35b348015610ab6575f80fd5b50610abf611e9f565b604051610acc9190613af1565b60405180910390f35b348015610ae0575f80fd5b50610ae9611f3c565b604051610af69190613b8d565b60405180910390f35b348015610b0a575f80fd5b50610b256004803603810190610b209190613d9f565b611f42565b604051610b329190613b8d565b60405180910390f35b348015610b46575f80fd5b50610b4f611fc4565b604051610b5c9190613b8d565b60405180910390f35b348015610b70575f80fd5b50610b8b6004803603810190610b869190613ba6565b611fca565b604051610b989190613af1565b60405180910390f35b348015610bac575f80fd5b50610bb5611fe7565b604051610bc29190613af1565b60405180910390f35b348015610bd6575f80fd5b50610bf16004803603810190610bec9190613d10565b612084565b005b348015610bfe575f80fd5b50610c196004803603810190610c149190613ba6565b612193565b005b606060038054610c2a90613e0a565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5690613e0a565b8015610ca15780601f10610c7857610100808354040283529160200191610ca1565b820191905f5260205f20905b815481529060010190602001808311610c8457829003601f168201915b5050505050905090565b5f610cbe610cb7612289565b8484612290565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b610cfd612289565b73ffffffffffffffffffffffffffffffffffffffff16610d1b611517565b73ffffffffffffffffffffffffffffffffffffffff1614610d71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6890613e84565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f9e3da7e72199adc414f24e73d3985f288cce5edbc5c370e29af583afdd78c2c260405160405180910390a38060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610e3b848484612453565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610e82612289565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef890613f12565b60405180910390fd5b610f1585610f0d612289565b858403612290565b60019150509392505050565b61dead81565b600b5481565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b5f610ff7610f66612289565b848460015f610f73612289565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ff29190613f5d565b612290565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5f9054906101000a900460ff1681565b5f60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b611092612289565b73ffffffffffffffffffffffffffffffffffffffff166110b0611517565b73ffffffffffffffffffffffffffffffffffffffff1614611106576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fd90613e84565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f455cf943964d06e77e44126ecca5a66b2c9721f4576a31f8693127282c55700f60405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b6111d2612289565b73ffffffffffffffffffffffffffffffffffffffff166111f0611517565b73ffffffffffffffffffffffffffffffffffffffff1614611246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123d90613e84565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6112a6612289565b73ffffffffffffffffffffffffffffffffffffffff166112c4611517565b73ffffffffffffffffffffffffffffffffffffffff161461131a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131190613e84565b60405180910390fd5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60125481565b600c60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6113d8612289565b73ffffffffffffffffffffffffffffffffffffffff166113f6611517565b73ffffffffffffffffffffffffffffffffffffffff161461144c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144390613e84565b60405180910390fd5b6114555f613157565b565b60095481565b60105481565b61146b612289565b73ffffffffffffffffffffffffffffffffffffffff16611489611517565b73ffffffffffffffffffffffffffffffffffffffff16146114df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d690613e84565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b61154d612289565b73ffffffffffffffffffffffffffffffffffffffff1661156b611517565b73ffffffffffffffffffffffffffffffffffffffff16146115c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b890613e84565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b6060600480546115ed90613e0a565b80601f016020809104026020016040519081016040528092919081815260200182805461161990613e0a565b80156116645780601f1061163b57610100808354040283529160200191611664565b820191905f5260205f20905b81548152906001019060200180831161164757829003601f168201915b5050505050905090565b611676612289565b73ffffffffffffffffffffffffffffffffffffffff16611694611517565b73ffffffffffffffffffffffffffffffffffffffff16146116ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e190613e84565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177090614000565b60405180910390fd5b611783828261321a565b5050565b60115481565b60165481565b60145481565b5f8060015f6117a6612289565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611860576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118579061408e565b60405180910390fd5b61187461186b612289565b85858403612290565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6118b76118b0612289565b8484612453565b6001905092915050565b6118c9612289565b73ffffffffffffffffffffffffffffffffffffffff166118e7611517565b73ffffffffffffffffffffffffffffffffffffffff161461193d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193490613e84565b60405180910390fd5b670de0b6b3a76400006103e86001611953610cec565b61195d91906140ac565b611967919061411a565b611971919061411a565b8110156119b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119aa90614194565b60405180910390fd5b670de0b6b3a7640000816119c791906140ac565b60098190555050565b601a602052805f5260405f205f915054906101000a900460ff1681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611a2d612289565b73ffffffffffffffffffffffffffffffffffffffff1614611a4c575f80fd5b611a553061138b565b8111158015611a6357505f81115b611aa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a99906141fc565b60405180910390fd5b611aab816132b8565b50565b600c60019054906101000a900460ff1681565b611ac9612289565b73ffffffffffffffffffffffffffffffffffffffff16611ae7611517565b73ffffffffffffffffffffffffffffffffffffffff1614611b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3490613e84565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611bd79190613af1565b60405180910390a25050565b611beb612289565b73ffffffffffffffffffffffffffffffffffffffff16611c09611517565b73ffffffffffffffffffffffffffffffffffffffff1614611c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5690613e84565b60405180910390fd5b8360108190555082601181905550601154601054611c7d9190613f5d565b600f819055508160138190555080601481905550601454601354611ca19190613f5d565b601281905550604b600f541115611ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce490614264565b60405180910390fd5b604b6012541115611d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2a90614264565b60405180910390fd5b50505050565b600e5f9054906101000a900460ff1681565b5f611d54612289565b73ffffffffffffffffffffffffffffffffffffffff16611d72611517565b73ffffffffffffffffffffffffffffffffffffffff1614611dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbf90613e84565b60405180910390fd5b620186a06001611dd6610cec565b611de091906140ac565b611dea919061411a565b821015611e2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e23906142f2565b60405180910390fd5b6103e86005611e39610cec565b611e4391906140ac565b611e4d919061411a565b821115611e8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8690614380565b60405180910390fd5b81600a8190555060019050919050565b5f611ea8612289565b73ffffffffffffffffffffffffffffffffffffffff16611ec6611517565b73ffffffffffffffffffffffffffffffffffffffff1614611f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1390613e84565b60405180910390fd5b5f600c5f6101000a81548160ff0219169083151502179055506001905090565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b6019602052805f5260405f205f915054906101000a900460ff1681565b5f611ff0612289565b73ffffffffffffffffffffffffffffffffffffffff1661200e611517565b73ffffffffffffffffffffffffffffffffffffffff1614612064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205b90613e84565b60405180910390fd5b5f600e5f6101000a81548160ff0219169083151502179055506001905090565b61208c612289565b73ffffffffffffffffffffffffffffffffffffffff166120aa611517565b73ffffffffffffffffffffffffffffffffffffffff1614612100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f790613e84565b60405180910390fd5b670de0b6b3a76400006103e86005612116610cec565b61212091906140ac565b61212a919061411a565b612134919061411a565b811015612176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216d9061440e565b60405180910390fd5b670de0b6b3a76400008161218a91906140ac565b600b8190555050565b61219b612289565b73ffffffffffffffffffffffffffffffffffffffff166121b9611517565b73ffffffffffffffffffffffffffffffffffffffff161461220f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220690613e84565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361227d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122749061449c565b60405180910390fd5b61228681613157565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f59061452a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361236c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612363906145b8565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124469190613b8d565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b890614646565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361252f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612526906146d4565b60405180910390fd5b60175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156125b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b09061473c565b60405180910390fd5b60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263a906147a4565b60405180910390fd5b5f810361265a5761265583835f6134eb565b613152565b600c5f9054906101000a900460ff1615612d0257612676611517565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126e457506126b4611517565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561271c57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612756575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561276f5750600660149054906101000a900460ff16155b15612d0157600c60019054906101000a900460ff166128635760185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612823575060185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612862576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128599061480c565b60405180910390fd5b5b600e5f9054906101000a900460ff1615612a275761287f611517565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561290657507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561295f575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612a265743600d5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106129e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129da906148c0565b60405180910390fd5b43600d5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ac4575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612b6b57600954811115612b0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b059061494e565b60405180910390fd5b600b54612b1a8361138b565b82612b259190613f5d565b1115612b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5d906149b6565b60405180910390fd5b612d00565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c08575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612c5757600954811115612c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4990614a44565b60405180910390fd5b612cff565b60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612cfe57600b54612cb18361138b565b82612cbc9190613f5d565b1115612cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf4906149b6565b60405180910390fd5b5b5b5b5b5b5f612d0c3061138b565b90505f600a548210159050808015612d305750600c60029054906101000a900460ff165b8015612d495750600660149054906101000a900460ff16155b8015612d9c5750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612def575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612e42575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612e85576001600660146101000a81548160ff021916908315150217905550612e6a613760565b5f600660146101000a81548160ff0219169083151502179055505b5f600660149054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612f34575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612f3d575f90505b5f811561314257601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612f9b57505f601254115b1561303357612fc86064612fba6012548861392f90919063ffffffff16565b61394490919063ffffffff16565b905060125460145482612fdb91906140ac565b612fe5919061411a565b60165f828254612ff59190613f5d565b925050819055506012546013548261300d91906140ac565b613017919061411a565b60155f8282546130279190613f5d565b9250508190555061311f565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561308a57505f600f54115b1561311e576130b760646130a9600f548861392f90919063ffffffff16565b61394490919063ffffffff16565b9050600f54601154826130ca91906140ac565b6130d4919061411a565b60165f8282546130e49190613f5d565b92505081905550600f54601054826130fc91906140ac565b613106919061411a565b60155f8282546131169190613f5d565b925050819055505b5b5f811115613133576131328730836134eb565b5b808561313f9190614a62565b94505b61314d8787876134eb565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f600267ffffffffffffffff8111156132d4576132d3614a95565b5b6040519080825280602002602001820160405280156133025781602001602082028036833780820191505090505b50905030815f8151811061331957613318614ac2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133e09190614b03565b816001815181106133f4576133f3614ac2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613459307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612290565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016134ba959493929190614c1e565b5f604051808303815f87803b1580156134d1575f80fd5b505af11580156134e3573d5f803e3d5ffd5b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161355090614646565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036135c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135be906146d4565b60405180910390fd5b6135d2838383613959565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364c90614ce6565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546136e39190613f5d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516137479190613b8d565b60405180910390a361375a84848461395e565b50505050565b5f61376a3061138b565b90505f60165460155461377d9190613f5d565b90505f80830361378f5750505061392d565b6014600a5461379e91906140ac565b8311156137b7576014600a546137b491906140ac565b92505b5f4790506137c4846132b8565b5f6137d8824761396390919063ffffffff16565b90505f613802856137f46016548561392f90919063ffffffff16565b61394490919063ffffffff16565b90505f6015819055505f60168190555060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161385790614d31565b5f6040518083038185875af1925050503d805f8114613891576040519150601f19603f3d011682016040523d82523d5f602084013e613896565b606091505b50508094505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516138e190614d31565b5f6040518083038185875af1925050503d805f811461391b576040519150601f19603f3d011682016040523d82523d5f602084013e613920565b606091505b5050809450505050505050505b565b5f818361393c91906140ac565b905092915050565b5f8183613951919061411a565b905092915050565b505050565b505050565b5f81836139709190614a62565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6139ba82613978565b6139c48185613982565b93506139d4818560208601613992565b6139dd816139a0565b840191505092915050565b5f6020820190508181035f830152613a0081846139b0565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613a3582613a0c565b9050919050565b613a4581613a2b565b8114613a4f575f80fd5b50565b5f81359050613a6081613a3c565b92915050565b5f819050919050565b613a7881613a66565b8114613a82575f80fd5b50565b5f81359050613a9381613a6f565b92915050565b5f8060408385031215613aaf57613aae613a08565b5b5f613abc85828601613a52565b9250506020613acd85828601613a85565b9150509250929050565b5f8115159050919050565b613aeb81613ad7565b82525050565b5f602082019050613b045f830184613ae2565b92915050565b5f819050919050565b5f613b2d613b28613b2384613a0c565b613b0a565b613a0c565b9050919050565b5f613b3e82613b13565b9050919050565b5f613b4f82613b34565b9050919050565b613b5f81613b45565b82525050565b5f602082019050613b785f830184613b56565b92915050565b613b8781613a66565b82525050565b5f602082019050613ba05f830184613b7e565b92915050565b5f60208284031215613bbb57613bba613a08565b5b5f613bc884828501613a52565b91505092915050565b5f805f60608486031215613be857613be7613a08565b5b5f613bf586828701613a52565b9350506020613c0686828701613a52565b9250506040613c1786828701613a85565b9150509250925092565b613c2a81613a2b565b82525050565b5f602082019050613c435f830184613c21565b92915050565b5f60ff82169050919050565b613c5e81613c49565b82525050565b5f602082019050613c775f830184613c55565b92915050565b613c8681613ad7565b8114613c90575f80fd5b50565b5f81359050613ca181613c7d565b92915050565b5f8060408385031215613cbd57613cbc613a08565b5b5f613cca85828601613a52565b9250506020613cdb85828601613c93565b9150509250929050565b5f60208284031215613cfa57613cf9613a08565b5b5f613d0784828501613c93565b91505092915050565b5f60208284031215613d2557613d24613a08565b5b5f613d3284828501613a85565b91505092915050565b5f805f8060808587031215613d5357613d52613a08565b5b5f613d6087828801613a85565b9450506020613d7187828801613a85565b9350506040613d8287828801613a85565b9250506060613d9387828801613a85565b91505092959194509250565b5f8060408385031215613db557613db4613a08565b5b5f613dc285828601613a52565b9250506020613dd385828601613a52565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613e2157607f821691505b602082108103613e3457613e33613ddd565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613e6e602083613982565b9150613e7982613e3a565b602082019050919050565b5f6020820190508181035f830152613e9b81613e62565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613efc602883613982565b9150613f0782613ea2565b604082019050919050565b5f6020820190508181035f830152613f2981613ef0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613f6782613a66565b9150613f7283613a66565b9250828201905080821115613f8a57613f89613f30565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613fea603983613982565b9150613ff582613f90565b604082019050919050565b5f6020820190508181035f83015261401781613fde565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f614078602583613982565b91506140838261401e565b604082019050919050565b5f6020820190508181035f8301526140a58161406c565b9050919050565b5f6140b682613a66565b91506140c183613a66565b92508282026140cf81613a66565b915082820484148315176140e6576140e5613f30565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61412482613a66565b915061412f83613a66565b92508261413f5761413e6140ed565b5b828204905092915050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e31255f82015250565b5f61417e602083613982565b91506141898261414a565b602082019050919050565b5f6020820190508181035f8301526141ab81614172565b9050919050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f6141e6600c83613982565b91506141f1826141b2565b602082019050919050565b5f6020820190508181035f830152614213816141da565b9050919050565b7f4d757374206b656570206665657320617420373525206f72206c6573730000005f82015250565b5f61424e601d83613982565b91506142598261421a565b602082019050919050565b5f6020820190508181035f83015261427b81614242565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6142dc603583613982565b91506142e782614282565b604082019050919050565b5f6020820190508181035f830152614309816142d0565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f61436a603483613982565b915061437582614310565b604082019050919050565b5f6020820190508181035f8301526143978161435e565b9050919050565b7f43616e6e6f7420736574206d617857616c6c657473206c6f776572207468616e5f8201527f20302e3525000000000000000000000000000000000000000000000000000000602082015250565b5f6143f8602583613982565b91506144038261439e565b604082019050919050565b5f6020820190508181035f830152614425816143ec565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614486602683613982565b91506144918261442c565b604082019050919050565b5f6020820190508181035f8301526144b38161447a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614514602483613982565b915061451f826144ba565b604082019050919050565b5f6020820190508181035f83015261454181614508565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6145a2602283613982565b91506145ad82614548565b604082019050919050565b5f6020820190508181035f8301526145cf81614596565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614630602583613982565b915061463b826145d6565b604082019050919050565b5f6020820190508181035f83015261465d81614624565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6146be602383613982565b91506146c982614664565b604082019050919050565b5f6020820190508181035f8301526146eb816146b2565b9050919050565b7f5b66726f6d5d20626c61636b206c6973740000000000000000000000000000005f82015250565b5f614726601183613982565b9150614731826146f2565b602082019050919050565b5f6020820190508181035f8301526147538161471a565b9050919050565b7f5b746f5d20626c61636b206c69737400000000000000000000000000000000005f82015250565b5f61478e600f83613982565b91506147998261475a565b602082019050919050565b5f6020820190508181035f8301526147bb81614782565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6147f6601683613982565b9150614801826147c2565b602082019050919050565b5f6020820190508181035f830152614823816147ea565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f6148aa604983613982565b91506148b58261482a565b606082019050919050565b5f6020820190508181035f8301526148d78161489e565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b5f614938602683613982565b9150614943826148de565b604082019050919050565b5f6020820190508181035f8301526149658161492c565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6149a0601383613982565b91506149ab8261496c565b602082019050919050565b5f6020820190508181035f8301526149cd81614994565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b5f614a2e602783613982565b9150614a39826149d4565b604082019050919050565b5f6020820190508181035f830152614a5b81614a22565b9050919050565b5f614a6c82613a66565b9150614a7783613a66565b9250828203905081811115614a8f57614a8e613f30565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614afd81613a3c565b92915050565b5f60208284031215614b1857614b17613a08565b5b5f614b2584828501614aef565b91505092915050565b5f819050919050565b5f614b51614b4c614b4784614b2e565b613b0a565b613a66565b9050919050565b614b6181614b37565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614b9981613a2b565b82525050565b5f614baa8383614b90565b60208301905092915050565b5f602082019050919050565b5f614bcc82614b67565b614bd68185614b71565b9350614be183614b81565b805f5b83811015614c11578151614bf88882614b9f565b9750614c0383614bb6565b925050600181019050614be4565b5085935050505092915050565b5f60a082019050614c315f830188613b7e565b614c3e6020830187614b58565b8181036040830152614c508186614bc2565b9050614c5f6060830185613c21565b614c6c6080830184613b7e565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614cd0602683613982565b9150614cdb82614c76565b604082019050919050565b5f6020820190508181035f830152614cfd81614cc4565b9050919050565b5f81905092915050565b50565b5f614d1c5f83614d04565b9150614d2782614d0e565b5f82019050919050565b5f614d3b82614d11565b915081905091905056fea26469706673582212206529857fa90e71c038f4ea4e0c23f5b52604a246fc38ed9aa8e8be094db3594e64736f6c634300081a0033

Deployed Bytecode Sourcemap

15094:12682:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2791:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3705:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15170:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3112:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20146:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3882:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15263:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15492:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15391;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3011:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4382:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15228:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15526:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22002:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19939:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16032:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20311:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20578:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15925:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15606:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3228:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;913:103;;;;;;;;;;;;;:::i;:::-;;15425:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15855:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18527:112;;;;;;;;;;;;;:::i;:::-;;690:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15960:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20466:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2899:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21494:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15892:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16070:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15998:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4605:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15355:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3363:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19426:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16274:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26129:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15566:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21304:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20706:590;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15772:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18921:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18647:123;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15821:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3546:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15452:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16217:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18778:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19678:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1024:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2791:100;2845:13;2878:5;2871:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2791:100;:::o;3705:169::-;3788:4;3805:39;3814:12;:10;:12::i;:::-;3828:7;3837:6;3805:8;:39::i;:::-;3862:4;3855:11;;3705:169;;;;:::o;15170:51::-;;;:::o;3112:108::-;3173:7;3200:12;;3193:19;;3112:108;:::o;20146:157::-;836:12;:10;:12::i;:::-;825:23;;:7;:5;:7::i;:::-;:23;;;817:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20251:10:::1;;;;;;;;;;;20222:40;;20240:9;20222:40;;;;;;;;;;;;20286:9;20273:10;;:22;;;;;;;;;;;;;;;;;;20146:157:::0;:::o;3882:492::-;4022:4;4039:36;4049:6;4057:9;4068:6;4039:9;:36::i;:::-;4088:24;4115:11;:19;4127:6;4115:19;;;;;;;;;;;;;;;:33;4135:12;:10;:12::i;:::-;4115:33;;;;;;;;;;;;;;;;4088:60;;4187:6;4167:16;:26;;4159:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4274:57;4283:6;4291:12;:10;:12::i;:::-;4324:6;4305:16;:25;4274:8;:57::i;:::-;4362:4;4355:11;;;3882:492;;;;;:::o;15263:53::-;15309:6;15263:53;:::o;15492:25::-;;;;:::o;15391:::-;;;;;;;;;;;;;:::o;3011:93::-;3069:5;3094:2;3087:9;;3011:93;:::o;4382:215::-;4470:4;4487:80;4496:12;:10;:12::i;:::-;4510:7;4556:10;4519:11;:25;4531:12;:10;:12::i;:::-;4519:25;;;;;;;;;;;;;;;:34;4545:7;4519:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4487:8;:80::i;:::-;4585:4;4578:11;;4382:215;;;;:::o;15228:28::-;;;;;;;;;;;;;:::o;15526:33::-;;;;;;;;;;;;;:::o;22002:126::-;22068:4;22092:19;:28;22112:7;22092:28;;;;;;;;;;;;;;;;;;;;;;;;;22085:35;;22002:126;;;:::o;19939:199::-;836:12;:10;:12::i;:::-;825:23;;:7;:5;:7::i;:::-;:23;;;817:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20070:14:::1;;;;;;;;;;;20029:56;;20051:17;20029:56;;;;;;;;;;;;20113:17;20096:14;;:34;;;;;;;;;;;;;;;;;;19939:199:::0;:::o;16032:31::-;;;;:::o;20311:147::-;836:12;:10;:12::i;:::-;825:23;;:7;:5;:7::i;:::-;:23;;;817:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20446:4:::1;20419:16;:24;20436:6;20419:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;20311:147:::0;;:::o;20578:120::-;836:12;:10;:12::i;:::-;825:23;;:7;:5;:7::i;:::-;:23;;;817:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20684:6:::1;20663:12;:18;20676:4;20663:18;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;20578:120:::0;;:::o;15925:28::-;;;;:::o;15606:31::-;;;;;;;;;;;;;:::o;3228:127::-;3302:7;3329:9;:18;3339:7;3329:18;;;;;;;;;;;;;;;;3322:25;;3228:127;;;:::o;913:103::-;836:12;:10;:12::i;:::-;825:23;;:7;:5;:7::i;:::-;:23;;;817:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;978:30:::1;1005:1;978:18;:30::i;:::-;913:103::o:0;15425:20::-;;;;:::o;15855:30::-;;;;:::o;18527:112::-;836:12;:10;:12::i;:::-;825:23;;:7;:5;:7::i;:::-;:23;;;817:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18598:4:::1;18582:13;;:20;;;;;;;;;;;;;;;;;;18627:4;18613:11;;:18;;;;;;;;;;;;;;;;;;18527:112::o:0;690:87::-;736:7;763:6;;;;;;;;;;;756:13;;690:87;:::o;15960:31::-;;;;:::o;20466:100::-;836:12;:10;:12::i;:::-;825:23;;:7;:5;:7::i;:::-;:23;;;817:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20551:7:::1;20537:11;;:21;;;;;;;;;;;;;;;;;;20466:100:::0;:::o;2899:104::-;2955:13;2988:7;2981:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2899:104;:::o;21494:304::-;836:12;:10;:12::i;:::-;825:23;;:7;:5;:7::i;:::-;:23;;;817:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21638:13:::1;;;;;;;;;;;21630:21;;:4;:21;;::::0;21608:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21749:41;21778:4;21784:5;21749:28;:41::i;:::-;21494:304:::0;;:::o;15892:24::-;;;;:::o;16070:27::-;;;;:::o;15998:25::-;;;;:::o;4605:413::-;4698:4;4715:24;4742:11;:25;4754:12;:10;:12::i;:::-;4742:25;;;;;;;;;;;;;;;:34;4768:7;4742:34;;;;;;;;;;;;;;;;4715:61;;4815:15;4795:16;:35;;4787:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4908:67;4917:12;:10;:12::i;:::-;4931:7;4959:15;4940:16;:34;4908:8;:67::i;:::-;5006:4;4999:11;;;4605:413;;;;:::o;15355:29::-;;;;;;;;;;;;;:::o;3363:175::-;3449:4;3466:42;3476:12;:10;:12::i;:::-;3490:9;3501:6;3466:9;:42::i;:::-;3526:4;3519:11;;3363:175;;;;:::o;19426:244::-;836:12;:10;:12::i;:::-;825:23;;:7;:5;:7::i;:::-;:23;;;817:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19562:4:::1;19554;19549:1;19533:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19532:26;;;;:::i;:::-;19531:35;;;;:::i;:::-;19521:6;:45;;19499:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;19655:6;19645;:17;;;;:::i;:::-;19637:5;:25;;;;19426:244:::0;:::o;16274:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;26129:222::-;26209:14;;;;;;;;;;;26193:30;;:12;:10;:12::i;:::-;:30;;;26185:39;;;;;;26253:24;26271:4;26253:9;:24::i;:::-;26243:6;:34;;:48;;;;;26290:1;26281:6;:10;26243:48;26235:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26319:24;26336:6;26319:16;:24::i;:::-;26129:222;:::o;15566:33::-;;;;;;;;;;;;;:::o;21304:182::-;836:12;:10;:12::i;:::-;825:23;;:7;:5;:7::i;:::-;:23;;;817:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21420:8:::1;21389:19;:28;21409:7;21389:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21460:7;21444:34;;;21469:8;21444:34;;;;;;:::i;:::-;;;;;;;;21304:182:::0;;:::o;20706:590::-;836:12;:10;:12::i;:::-;825:23;;:7;:5;:7::i;:::-;:23;;;817:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20905:16:::1;20887:15;:34;;;;20944:10;20932:9;:22;;;;20998:9;;20980:15;;:27;;;;:::i;:::-;20965:12;:42;;;;21037:17;21018:16;:36;;;;21078:11;21065:10;:24;;;;21135:10;;21116:16;;:29;;;;:::i;:::-;21100:13;:45;;;;21180:2;21164:12;;:18;;21156:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;21252:2;21235:13;;:19;;21227:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;20706:590:::0;;;;:::o;15772:40::-;;;;;;;;;;;;;:::o;18921:497::-;19029:4;836:12;:10;:12::i;:::-;825:23;;:7;:5;:7::i;:::-;:23;;;817:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19108:6:::1;19103:1;19087:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19086:28;;;;:::i;:::-;19073:9;:41;;19051:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;19263:4;19258:1;19242:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19241:26;;;;:::i;:::-;19228:9;:39;;19206:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;19379:9;19358:18;:30;;;;19406:4;19399:11;;18921:497:::0;;;:::o;18647:123::-;18701:4;836:12;:10;:12::i;:::-;825:23;;:7;:5;:7::i;:::-;:23;;;817:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18735:5:::1;18718:14;;:22;;;;;;;;;;;;;;;;;;18758:4;18751:11;;18647:123:::0;:::o;15821:27::-;;;;:::o;3546:151::-;3635:7;3662:11;:18;3674:5;3662:18;;;;;;;;;;;;;;;:27;3681:7;3662:27;;;;;;;;;;;;;;;;3655:34;;3546:151;;;;:::o;15452:33::-;;;;:::o;16217:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;18778:135::-;18838:4;836:12;:10;:12::i;:::-;825:23;;:7;:5;:7::i;:::-;:23;;;817:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18878:5:::1;18855:20;;:28;;;;;;;;;;;;;;;;;;18901:4;18894:11;;18778:135:::0;:::o;19678:253::-;836:12;:10;:12::i;:::-;825:23;;:7;:5;:7::i;:::-;:23;;;817:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19813:4:::1;19805;19800:1;19784:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19783:26;;;;:::i;:::-;19782:35;;;;:::i;:::-;19772:6;:45;;19750:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;19916:6;19906;:17;;;;:::i;:::-;19893:10;:30;;;;19678:253:::0;:::o;1024:201::-;836:12;:10;:12::i;:::-;825:23;;:7;:5;:7::i;:::-;:23;;;817:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1133:1:::1;1113:22;;:8;:22;;::::0;1105:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1189:28;1208:8;1189:18;:28::i;:::-;1024:201:::0;:::o;236:98::-;289:7;316:10;309:17;;236:98;:::o;6773:380::-;6926:1;6909:19;;:5;:19;;;6901:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7007:1;6988:21;;:7;:21;;;6980:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7091:6;7061:11;:18;7073:5;7061:18;;;;;;;;;;;;;;;:27;7080:7;7061:27;;;;;;;;;;;;;;;:36;;;;7129:7;7113:32;;7122:5;7113:32;;;7138:6;7113:32;;;;;;:::i;:::-;;;;;;;;6773:380;;;:::o;22186:3820::-;22334:1;22318:18;;:4;:18;;;22310:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22411:1;22397:16;;:2;:16;;;22389:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22473:12;:18;22486:4;22473:18;;;;;;;;;;;;;;;;;;;;;;;;;22472:19;22464:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22533:12;:16;22546:2;22533:16;;;;;;;;;;;;;;;;;;;;;;;;;22532:17;22524:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;22596:1;22586:6;:11;22582:93;;22614:28;22630:4;22636:2;22640:1;22614:15;:28::i;:::-;22657:7;;22582:93;22691:14;;;;;;;;;;;22687:1666;;;22734:7;:5;:7::i;:::-;22726:15;;:4;:15;;;;:49;;;;;22768:7;:5;:7::i;:::-;22762:13;;:2;:13;;;;22726:49;:86;;;;;22810:1;22796:16;;:2;:16;;;;22726:86;:128;;;;;22847:6;22833:21;;:2;:21;;;;22726:128;:158;;;;;22876:8;;;;;;;;;;;22875:9;22726:158;22722:1620;;;22910:13;;;;;;;;;;;22905:150;;22956:19;:25;22976:4;22956:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;22985:19;:23;23005:2;22985:23;;;;;;;;;;;;;;;;;;;;;;;;;22956:52;22948:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;22905:150;23211:20;;;;;;;;;;;23207:425;;;23266:7;:5;:7::i;:::-;23260:13;;:2;:13;;;;:47;;;;;23291:15;23277:30;;:2;:30;;;;23260:47;:79;;;;;23325:13;;;;;;;;;;;23311:28;;:2;:28;;;;23260:79;23256:357;;;23418:12;23376:28;:39;23405:9;23376:39;;;;;;;;;;;;;;;;:54;23368:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;23577:12;23535:28;:39;23564:9;23535:39;;;;;;;;;;;;;;;:54;;;;23256:357;23207:425;23684:25;:31;23710:4;23684:31;;;;;;;;;;;;;;;;;;;;;;;;;:56;;;;;23720:16;:20;23737:2;23720:20;;;;;;;;;;;;;;;;;;;;;;;;;23719:21;23684:56;23680:647;;;23783:5;;23773:6;:15;;23765:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;23888:10;;23871:13;23881:2;23871:9;:13::i;:::-;23862:6;:22;;;;:::i;:::-;:36;;23854:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23680:647;;;23998:25;:29;24024:2;23998:29;;;;;;;;;;;;;;;;;;;;;;;;;:56;;;;;24032:16;:22;24049:4;24032:22;;;;;;;;;;;;;;;;;;;;;;;;;24031:23;23998:56;23994:333;;;24097:5;;24087:6;:15;;24079:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23994:333;;;24194:16;:20;24211:2;24194:20;;;;;;;;;;;;;;;;;;;;;;;;;24189:138;;24273:10;;24256:13;24266:2;24256:9;:13::i;:::-;24247:6;:22;;;;:::i;:::-;:36;;24239:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24189:138;23994:333;23680:647;22722:1620;22687:1666;24365:28;24396:24;24414:4;24396:9;:24::i;:::-;24365:55;;24431:12;24470:18;;24446:20;:42;;24431:57;;24505:7;:35;;;;;24529:11;;;;;;;;;;;24505:35;:61;;;;;24558:8;;;;;;;;;;;24557:9;24505:61;:110;;;;;24584:25;:31;24610:4;24584:31;;;;;;;;;;;;;;;;;;;;;;;;;24583:32;24505:110;:153;;;;;24633:19;:25;24653:4;24633:25;;;;;;;;;;;;;;;;;;;;;;;;;24632:26;24505:153;:194;;;;;24676:19;:23;24696:2;24676:23;;;;;;;;;;;;;;;;;;;;;;;;;24675:24;24505:194;24501:302;;;24727:4;24716:8;;:15;;;;;;;;;;;;;;;;;;24748:10;:8;:10::i;:::-;24786:5;24775:8;;:16;;;;;;;;;;;;;;;;;;24501:302;24815:12;24831:8;;;;;;;;;;;24830:9;24815:24;;24941:19;:25;24961:4;24941:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;24970:19;:23;24990:2;24970:23;;;;;;;;;;;;;;;;;;;;;;;;;24941:52;24937:100;;;25020:5;25010:15;;24937:100;25049:12;25154:7;25150:803;;;25206:25;:29;25232:2;25206:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;25255:1;25239:13;;:17;25206:50;25202:602;;;25284:34;25314:3;25284:25;25295:13;;25284:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;25277:41;;25375:13;;25361:10;;25354:4;:17;;;;:::i;:::-;25353:35;;;;:::i;:::-;25337:12;;:51;;;;;;;:::i;:::-;;;;;;;;25455:13;;25435:16;;25428:4;:23;;;;:::i;:::-;25427:41;;;;:::i;:::-;25407:16;;:61;;;;;;;:::i;:::-;;;;;;;;25202:602;;;25530:25;:31;25556:4;25530:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;25580:1;25565:12;;:16;25530:51;25526:278;;;25609:33;25638:3;25609:24;25620:12;;25609:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;25602:40;;25698:12;;25685:9;;25678:4;:16;;;;:::i;:::-;25677:33;;;;:::i;:::-;25661:12;;:49;;;;;;;:::i;:::-;;;;;;;;25776:12;;25757:15;;25750:4;:22;;;;:::i;:::-;25749:39;;;;:::i;:::-;25729:16;;:59;;;;;;;:::i;:::-;;;;;;;;25526:278;25202:602;25831:1;25824:4;:8;25820:91;;;25853:42;25869:4;25883;25890;25853:15;:42::i;:::-;25820:91;25937:4;25927:14;;;;;:::i;:::-;;;25150:803;25965:33;25981:4;25987:2;25991:6;25965:15;:33::i;:::-;22299:3707;;;;22186:3820;;;;:::o;1233:191::-;1307:16;1326:6;;;;;;;;;;;1307:25;;1352:8;1343:6;;:17;;;;;;;;;;;;;;;;;;1407:8;1376:40;;1397:8;1376:40;;;;;;;;;;;;1296:128;1233:191;:::o;21806:188::-;21923:5;21889:25;:31;21915:4;21889:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21980:5;21946:40;;21974:4;21946:40;;;;;;;;;;;;21806:188;;:::o;26360:529::-;26426:21;26464:1;26450:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26426:40;;26495:4;26477;26482:1;26477:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26521:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26511:4;26516:1;26511:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;26556:62;26573:4;26588:15;26606:11;26556:8;:62::i;:::-;26657:15;:66;;;26738:11;26764:1;26808:4;26835;26855:15;26657:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26415:474;26360:529;:::o;5026:733::-;5184:1;5166:20;;:6;:20;;;5158:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5268:1;5247:23;;:9;:23;;;5239:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5323:47;5344:6;5352:9;5363:6;5323:20;:47::i;:::-;5383:21;5407:9;:17;5417:6;5407:17;;;;;;;;;;;;;;;;5383:41;;5460:6;5443:13;:23;;5435:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5581:6;5565:13;:22;5545:9;:17;5555:6;5545:17;;;;;;;;;;;;;;;:42;;;;5633:6;5609:9;:20;5619:9;5609:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5674:9;5657:35;;5666:6;5657:35;;;5685:6;5657:35;;;;;;:::i;:::-;;;;;;;;5705:46;5725:6;5733:9;5744:6;5705:19;:46::i;:::-;5147:612;5026:733;;;:::o;26897:876::-;26936:23;26962:24;26980:4;26962:9;:24::i;:::-;26936:50;;26997:25;27044:12;;27025:16;;:31;;;;:::i;:::-;26997:59;;27067:12;27115:1;27096:15;:20;27092:59;;27133:7;;;;;27092:59;27206:2;27185:18;;:23;;;;:::i;:::-;27167:15;:41;27163:115;;;27264:2;27243:18;;:23;;;;:::i;:::-;27225:41;;27163:115;27290:25;27318:21;27290:49;;27350:33;27367:15;27350:16;:33::i;:::-;27396:18;27417:44;27443:17;27417:21;:25;;:44;;;;:::i;:::-;27396:65;;27472:17;27492:51;27525:17;27492:28;27507:12;;27492:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;27472:71;;27575:1;27556:16;:20;;;;27602:1;27587:12;:16;;;;27638:10;;;;;;;;;;;27630:24;;27662:9;27630:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27616:60;;;;;27709:14;;;;;;;;;;;27701:28;;27738:21;27701:64;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27687:78;;;;;26925:848;;;;;;26897:876;:::o;8779:98::-;8837:7;8868:1;8864;:5;;;;:::i;:::-;8857:12;;8779:98;;;;:::o;8885:::-;8943:7;8974:1;8970;:5;;;;:::i;:::-;8963:12;;8885:98;;;;:::o;7161:125::-;;;;:::o;7294:124::-;;;;:::o;8673:98::-;8731:7;8762:1;8758;:5;;;;:::i;:::-;8751:12;;8673:98;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:60::-;3367:3;3388:5;3381:12;;3339:60;;;:::o;3405:142::-;3455:9;3488:53;3506:34;3515:24;3533:5;3515:24;:::i;:::-;3506:34;:::i;:::-;3488:53;:::i;:::-;3475:66;;3405:142;;;:::o;3553:126::-;3603:9;3636:37;3667:5;3636:37;:::i;:::-;3623:50;;3553:126;;;:::o;3685:153::-;3762:9;3795:37;3826:5;3795:37;:::i;:::-;3782:50;;3685:153;;;:::o;3844:185::-;3958:64;4016:5;3958:64;:::i;:::-;3953:3;3946:77;3844:185;;:::o;4035:276::-;4155:4;4193:2;4182:9;4178:18;4170:26;;4206:98;4301:1;4290:9;4286:17;4277:6;4206:98;:::i;:::-;4035:276;;;;:::o;4317:118::-;4404:24;4422:5;4404:24;:::i;:::-;4399:3;4392:37;4317:118;;:::o;4441:222::-;4534:4;4572:2;4561:9;4557:18;4549:26;;4585:71;4653:1;4642:9;4638:17;4629:6;4585:71;:::i;:::-;4441:222;;;;:::o;4669:329::-;4728:6;4777:2;4765:9;4756:7;4752:23;4748:32;4745:119;;;4783:79;;:::i;:::-;4745:119;4903:1;4928:53;4973:7;4964:6;4953:9;4949:22;4928:53;:::i;:::-;4918:63;;4874:117;4669:329;;;;:::o;5004:619::-;5081:6;5089;5097;5146:2;5134:9;5125:7;5121:23;5117:32;5114:119;;;5152:79;;:::i;:::-;5114:119;5272:1;5297:53;5342:7;5333:6;5322:9;5318:22;5297:53;:::i;:::-;5287:63;;5243:117;5399:2;5425:53;5470:7;5461:6;5450:9;5446:22;5425:53;:::i;:::-;5415:63;;5370:118;5527:2;5553:53;5598:7;5589:6;5578:9;5574:22;5553:53;:::i;:::-;5543:63;;5498:118;5004:619;;;;;:::o;5629:118::-;5716:24;5734:5;5716:24;:::i;:::-;5711:3;5704:37;5629:118;;:::o;5753:222::-;5846:4;5884:2;5873:9;5869:18;5861:26;;5897:71;5965:1;5954:9;5950:17;5941:6;5897:71;:::i;:::-;5753:222;;;;:::o;5981:86::-;6016:7;6056:4;6049:5;6045:16;6034:27;;5981:86;;;:::o;6073:112::-;6156:22;6172:5;6156:22;:::i;:::-;6151:3;6144:35;6073:112;;:::o;6191:214::-;6280:4;6318:2;6307:9;6303:18;6295:26;;6331:67;6395:1;6384:9;6380:17;6371:6;6331:67;:::i;:::-;6191:214;;;;:::o;6411:116::-;6481:21;6496:5;6481:21;:::i;:::-;6474:5;6471:32;6461:60;;6517:1;6514;6507:12;6461:60;6411:116;:::o;6533:133::-;6576:5;6614:6;6601:20;6592:29;;6630:30;6654:5;6630:30;:::i;:::-;6533:133;;;;:::o;6672:468::-;6737:6;6745;6794:2;6782:9;6773:7;6769:23;6765:32;6762:119;;;6800:79;;:::i;:::-;6762:119;6920:1;6945:53;6990:7;6981:6;6970:9;6966:22;6945:53;:::i;:::-;6935:63;;6891:117;7047:2;7073:50;7115:7;7106:6;7095:9;7091:22;7073:50;:::i;:::-;7063:60;;7018:115;6672:468;;;;;:::o;7146:323::-;7202:6;7251:2;7239:9;7230:7;7226:23;7222:32;7219:119;;;7257:79;;:::i;:::-;7219:119;7377:1;7402:50;7444:7;7435:6;7424:9;7420:22;7402:50;:::i;:::-;7392:60;;7348:114;7146:323;;;;:::o;7475:329::-;7534:6;7583:2;7571:9;7562:7;7558:23;7554:32;7551:119;;;7589:79;;:::i;:::-;7551:119;7709:1;7734:53;7779:7;7770:6;7759:9;7755:22;7734:53;:::i;:::-;7724:63;;7680:117;7475:329;;;;:::o;7810:765::-;7896:6;7904;7912;7920;7969:3;7957:9;7948:7;7944:23;7940:33;7937:120;;;7976:79;;:::i;:::-;7937:120;8096:1;8121:53;8166:7;8157:6;8146:9;8142:22;8121:53;:::i;:::-;8111:63;;8067:117;8223:2;8249:53;8294:7;8285:6;8274:9;8270:22;8249:53;:::i;:::-;8239:63;;8194:118;8351:2;8377:53;8422:7;8413:6;8402:9;8398:22;8377:53;:::i;:::-;8367:63;;8322:118;8479:2;8505:53;8550:7;8541:6;8530:9;8526:22;8505:53;:::i;:::-;8495:63;;8450:118;7810:765;;;;;;;:::o;8581:474::-;8649:6;8657;8706:2;8694:9;8685:7;8681:23;8677:32;8674:119;;;8712:79;;:::i;:::-;8674:119;8832:1;8857:53;8902:7;8893:6;8882:9;8878:22;8857:53;:::i;:::-;8847:63;;8803:117;8959:2;8985:53;9030:7;9021:6;9010:9;9006:22;8985:53;:::i;:::-;8975:63;;8930:118;8581:474;;;;;:::o;9061:180::-;9109:77;9106:1;9099:88;9206:4;9203:1;9196:15;9230:4;9227:1;9220:15;9247:320;9291:6;9328:1;9322:4;9318:12;9308:22;;9375:1;9369:4;9365:12;9396:18;9386:81;;9452:4;9444:6;9440:17;9430:27;;9386:81;9514:2;9506:6;9503:14;9483:18;9480:38;9477:84;;9533:18;;:::i;:::-;9477:84;9298:269;9247:320;;;:::o;9573:182::-;9713:34;9709:1;9701:6;9697:14;9690:58;9573:182;:::o;9761:366::-;9903:3;9924:67;9988:2;9983:3;9924:67;:::i;:::-;9917:74;;10000:93;10089:3;10000:93;:::i;:::-;10118:2;10113:3;10109:12;10102:19;;9761:366;;;:::o;10133:419::-;10299:4;10337:2;10326:9;10322:18;10314:26;;10386:9;10380:4;10376:20;10372:1;10361:9;10357:17;10350:47;10414:131;10540:4;10414:131;:::i;:::-;10406:139;;10133:419;;;:::o;10558:227::-;10698:34;10694:1;10686:6;10682:14;10675:58;10767:10;10762:2;10754:6;10750:15;10743:35;10558:227;:::o;10791:366::-;10933:3;10954:67;11018:2;11013:3;10954:67;:::i;:::-;10947:74;;11030:93;11119:3;11030:93;:::i;:::-;11148:2;11143:3;11139:12;11132:19;;10791:366;;;:::o;11163:419::-;11329:4;11367:2;11356:9;11352:18;11344:26;;11416:9;11410:4;11406:20;11402:1;11391:9;11387:17;11380:47;11444:131;11570:4;11444:131;:::i;:::-;11436:139;;11163:419;;;:::o;11588:180::-;11636:77;11633:1;11626:88;11733:4;11730:1;11723:15;11757:4;11754:1;11747:15;11774:191;11814:3;11833:20;11851:1;11833:20;:::i;:::-;11828:25;;11867:20;11885:1;11867:20;:::i;:::-;11862:25;;11910:1;11907;11903:9;11896:16;;11931:3;11928:1;11925:10;11922:36;;;11938:18;;:::i;:::-;11922:36;11774:191;;;;:::o;11971:244::-;12111:34;12107:1;12099:6;12095:14;12088:58;12180:27;12175:2;12167:6;12163:15;12156:52;11971:244;:::o;12221:366::-;12363:3;12384:67;12448:2;12443:3;12384:67;:::i;:::-;12377:74;;12460:93;12549:3;12460:93;:::i;:::-;12578:2;12573:3;12569:12;12562:19;;12221:366;;;:::o;12593:419::-;12759:4;12797:2;12786:9;12782:18;12774:26;;12846:9;12840:4;12836:20;12832:1;12821:9;12817:17;12810:47;12874:131;13000:4;12874:131;:::i;:::-;12866:139;;12593:419;;;:::o;13018:224::-;13158:34;13154:1;13146:6;13142:14;13135:58;13227:7;13222:2;13214:6;13210:15;13203:32;13018:224;:::o;13248:366::-;13390:3;13411:67;13475:2;13470:3;13411:67;:::i;:::-;13404:74;;13487:93;13576:3;13487:93;:::i;:::-;13605:2;13600:3;13596:12;13589:19;;13248:366;;;:::o;13620:419::-;13786:4;13824:2;13813:9;13809:18;13801:26;;13873:9;13867:4;13863:20;13859:1;13848:9;13844:17;13837:47;13901:131;14027:4;13901:131;:::i;:::-;13893:139;;13620:419;;;:::o;14045:410::-;14085:7;14108:20;14126:1;14108:20;:::i;:::-;14103:25;;14142:20;14160:1;14142:20;:::i;:::-;14137:25;;14197:1;14194;14190:9;14219:30;14237:11;14219:30;:::i;:::-;14208:41;;14398:1;14389:7;14385:15;14382:1;14379:22;14359:1;14352:9;14332:83;14309:139;;14428:18;;:::i;:::-;14309:139;14093:362;14045:410;;;;:::o;14461:180::-;14509:77;14506:1;14499:88;14606:4;14603:1;14596:15;14630:4;14627:1;14620:15;14647:185;14687:1;14704:20;14722:1;14704:20;:::i;:::-;14699:25;;14738:20;14756:1;14738:20;:::i;:::-;14733:25;;14777:1;14767:35;;14782:18;;:::i;:::-;14767:35;14824:1;14821;14817:9;14812:14;;14647:185;;;;:::o;14838:182::-;14978:34;14974:1;14966:6;14962:14;14955:58;14838:182;:::o;15026:366::-;15168:3;15189:67;15253:2;15248:3;15189:67;:::i;:::-;15182:74;;15265:93;15354:3;15265:93;:::i;:::-;15383:2;15378:3;15374:12;15367:19;;15026:366;;;:::o;15398:419::-;15564:4;15602:2;15591:9;15587:18;15579:26;;15651:9;15645:4;15641:20;15637:1;15626:9;15622:17;15615:47;15679:131;15805:4;15679:131;:::i;:::-;15671:139;;15398:419;;;:::o;15823:162::-;15963:14;15959:1;15951:6;15947:14;15940:38;15823:162;:::o;15991:366::-;16133:3;16154:67;16218:2;16213:3;16154:67;:::i;:::-;16147:74;;16230:93;16319:3;16230:93;:::i;:::-;16348:2;16343:3;16339:12;16332:19;;15991:366;;;:::o;16363:419::-;16529:4;16567:2;16556:9;16552:18;16544:26;;16616:9;16610:4;16606:20;16602:1;16591:9;16587:17;16580:47;16644:131;16770:4;16644:131;:::i;:::-;16636:139;;16363:419;;;:::o;16788:179::-;16928:31;16924:1;16916:6;16912:14;16905:55;16788:179;:::o;16973:366::-;17115:3;17136:67;17200:2;17195:3;17136:67;:::i;:::-;17129:74;;17212:93;17301:3;17212:93;:::i;:::-;17330:2;17325:3;17321:12;17314:19;;16973:366;;;:::o;17345:419::-;17511:4;17549:2;17538:9;17534:18;17526:26;;17598:9;17592:4;17588:20;17584:1;17573:9;17569:17;17562:47;17626:131;17752:4;17626:131;:::i;:::-;17618:139;;17345:419;;;:::o;17770:240::-;17910:34;17906:1;17898:6;17894:14;17887:58;17979:23;17974:2;17966:6;17962:15;17955:48;17770:240;:::o;18016:366::-;18158:3;18179:67;18243:2;18238:3;18179:67;:::i;:::-;18172:74;;18255:93;18344:3;18255:93;:::i;:::-;18373:2;18368:3;18364:12;18357:19;;18016:366;;;:::o;18388:419::-;18554:4;18592:2;18581:9;18577:18;18569:26;;18641:9;18635:4;18631:20;18627:1;18616:9;18612:17;18605:47;18669:131;18795:4;18669:131;:::i;:::-;18661:139;;18388:419;;;:::o;18813:239::-;18953:34;18949:1;18941:6;18937:14;18930:58;19022:22;19017:2;19009:6;19005:15;18998:47;18813:239;:::o;19058:366::-;19200:3;19221:67;19285:2;19280:3;19221:67;:::i;:::-;19214:74;;19297:93;19386:3;19297:93;:::i;:::-;19415:2;19410:3;19406:12;19399:19;;19058:366;;;:::o;19430:419::-;19596:4;19634:2;19623:9;19619:18;19611:26;;19683:9;19677:4;19673:20;19669:1;19658:9;19654:17;19647:47;19711:131;19837:4;19711:131;:::i;:::-;19703:139;;19430:419;;;:::o;19855:224::-;19995:34;19991:1;19983:6;19979:14;19972:58;20064:7;20059:2;20051:6;20047:15;20040:32;19855:224;:::o;20085:366::-;20227:3;20248:67;20312:2;20307:3;20248:67;:::i;:::-;20241:74;;20324:93;20413:3;20324:93;:::i;:::-;20442:2;20437:3;20433:12;20426:19;;20085:366;;;:::o;20457:419::-;20623:4;20661:2;20650:9;20646:18;20638:26;;20710:9;20704:4;20700:20;20696:1;20685:9;20681:17;20674:47;20738:131;20864:4;20738:131;:::i;:::-;20730:139;;20457:419;;;:::o;20882:225::-;21022:34;21018:1;21010:6;21006:14;20999:58;21091:8;21086:2;21078:6;21074:15;21067:33;20882:225;:::o;21113:366::-;21255:3;21276:67;21340:2;21335:3;21276:67;:::i;:::-;21269:74;;21352:93;21441:3;21352:93;:::i;:::-;21470:2;21465:3;21461:12;21454:19;;21113:366;;;:::o;21485:419::-;21651:4;21689:2;21678:9;21674:18;21666:26;;21738:9;21732:4;21728:20;21724:1;21713:9;21709:17;21702:47;21766:131;21892:4;21766:131;:::i;:::-;21758:139;;21485:419;;;:::o;21910:223::-;22050:34;22046:1;22038:6;22034:14;22027:58;22119:6;22114:2;22106:6;22102:15;22095:31;21910:223;:::o;22139:366::-;22281:3;22302:67;22366:2;22361:3;22302:67;:::i;:::-;22295:74;;22378:93;22467:3;22378:93;:::i;:::-;22496:2;22491:3;22487:12;22480:19;;22139:366;;;:::o;22511:419::-;22677:4;22715:2;22704:9;22700:18;22692:26;;22764:9;22758:4;22754:20;22750:1;22739:9;22735:17;22728:47;22792:131;22918:4;22792:131;:::i;:::-;22784:139;;22511:419;;;:::o;22936:221::-;23076:34;23072:1;23064:6;23060:14;23053:58;23145:4;23140:2;23132:6;23128:15;23121:29;22936:221;:::o;23163:366::-;23305:3;23326:67;23390:2;23385:3;23326:67;:::i;:::-;23319:74;;23402:93;23491:3;23402:93;:::i;:::-;23520:2;23515:3;23511:12;23504:19;;23163:366;;;:::o;23535:419::-;23701:4;23739:2;23728:9;23724:18;23716:26;;23788:9;23782:4;23778:20;23774:1;23763:9;23759:17;23752:47;23816:131;23942:4;23816:131;:::i;:::-;23808:139;;23535:419;;;:::o;23960:224::-;24100:34;24096:1;24088:6;24084:14;24077:58;24169:7;24164:2;24156:6;24152:15;24145:32;23960:224;:::o;24190:366::-;24332:3;24353:67;24417:2;24412:3;24353:67;:::i;:::-;24346:74;;24429:93;24518:3;24429:93;:::i;:::-;24547:2;24542:3;24538:12;24531:19;;24190:366;;;:::o;24562:419::-;24728:4;24766:2;24755:9;24751:18;24743:26;;24815:9;24809:4;24805:20;24801:1;24790:9;24786:17;24779:47;24843:131;24969:4;24843:131;:::i;:::-;24835:139;;24562:419;;;:::o;24987:222::-;25127:34;25123:1;25115:6;25111:14;25104:58;25196:5;25191:2;25183:6;25179:15;25172:30;24987:222;:::o;25215:366::-;25357:3;25378:67;25442:2;25437:3;25378:67;:::i;:::-;25371:74;;25454:93;25543:3;25454:93;:::i;:::-;25572:2;25567:3;25563:12;25556:19;;25215:366;;;:::o;25587:419::-;25753:4;25791:2;25780:9;25776:18;25768:26;;25840:9;25834:4;25830:20;25826:1;25815:9;25811:17;25804:47;25868:131;25994:4;25868:131;:::i;:::-;25860:139;;25587:419;;;:::o;26012:167::-;26152:19;26148:1;26140:6;26136:14;26129:43;26012:167;:::o;26185:366::-;26327:3;26348:67;26412:2;26407:3;26348:67;:::i;:::-;26341:74;;26424:93;26513:3;26424:93;:::i;:::-;26542:2;26537:3;26533:12;26526:19;;26185:366;;;:::o;26557:419::-;26723:4;26761:2;26750:9;26746:18;26738:26;;26810:9;26804:4;26800:20;26796:1;26785:9;26781:17;26774:47;26838:131;26964:4;26838:131;:::i;:::-;26830:139;;26557:419;;;:::o;26982:165::-;27122:17;27118:1;27110:6;27106:14;27099:41;26982:165;:::o;27153:366::-;27295:3;27316:67;27380:2;27375:3;27316:67;:::i;:::-;27309:74;;27392:93;27481:3;27392:93;:::i;:::-;27510:2;27505:3;27501:12;27494:19;;27153:366;;;:::o;27525:419::-;27691:4;27729:2;27718:9;27714:18;27706:26;;27778:9;27772:4;27768:20;27764:1;27753:9;27749:17;27742:47;27806:131;27932:4;27806:131;:::i;:::-;27798:139;;27525:419;;;:::o;27950:172::-;28090:24;28086:1;28078:6;28074:14;28067:48;27950:172;:::o;28128:366::-;28270:3;28291:67;28355:2;28350:3;28291:67;:::i;:::-;28284:74;;28367:93;28456:3;28367:93;:::i;:::-;28485:2;28480:3;28476:12;28469:19;;28128:366;;;:::o;28500:419::-;28666:4;28704:2;28693:9;28689:18;28681:26;;28753:9;28747:4;28743:20;28739:1;28728:9;28724:17;28717:47;28781:131;28907:4;28781:131;:::i;:::-;28773:139;;28500:419;;;:::o;28925:297::-;29065:34;29061:1;29053:6;29049:14;29042:58;29134:34;29129:2;29121:6;29117:15;29110:59;29203:11;29198:2;29190:6;29186:15;29179:36;28925:297;:::o;29228:366::-;29370:3;29391:67;29455:2;29450:3;29391:67;:::i;:::-;29384:74;;29467:93;29556:3;29467:93;:::i;:::-;29585:2;29580:3;29576:12;29569:19;;29228:366;;;:::o;29600:419::-;29766:4;29804:2;29793:9;29789:18;29781:26;;29853:9;29847:4;29843:20;29839:1;29828:9;29824:17;29817:47;29881:131;30007:4;29881:131;:::i;:::-;29873:139;;29600:419;;;:::o;30025:225::-;30165:34;30161:1;30153:6;30149:14;30142:58;30234:8;30229:2;30221:6;30217:15;30210:33;30025:225;:::o;30256:366::-;30398:3;30419:67;30483:2;30478:3;30419:67;:::i;:::-;30412:74;;30495:93;30584:3;30495:93;:::i;:::-;30613:2;30608:3;30604:12;30597:19;;30256:366;;;:::o;30628:419::-;30794:4;30832:2;30821:9;30817:18;30809:26;;30881:9;30875:4;30871:20;30867:1;30856:9;30852:17;30845:47;30909:131;31035:4;30909:131;:::i;:::-;30901:139;;30628:419;;;:::o;31053:169::-;31193:21;31189:1;31181:6;31177:14;31170:45;31053:169;:::o;31228:366::-;31370:3;31391:67;31455:2;31450:3;31391:67;:::i;:::-;31384:74;;31467:93;31556:3;31467:93;:::i;:::-;31585:2;31580:3;31576:12;31569:19;;31228:366;;;:::o;31600:419::-;31766:4;31804:2;31793:9;31789:18;31781:26;;31853:9;31847:4;31843:20;31839:1;31828:9;31824:17;31817:47;31881:131;32007:4;31881:131;:::i;:::-;31873:139;;31600:419;;;:::o;32025:226::-;32165:34;32161:1;32153:6;32149:14;32142:58;32234:9;32229:2;32221:6;32217:15;32210:34;32025:226;:::o;32257:366::-;32399:3;32420:67;32484:2;32479:3;32420:67;:::i;:::-;32413:74;;32496:93;32585:3;32496:93;:::i;:::-;32614:2;32609:3;32605:12;32598:19;;32257:366;;;:::o;32629:419::-;32795:4;32833:2;32822:9;32818:18;32810:26;;32882:9;32876:4;32872:20;32868:1;32857:9;32853:17;32846:47;32910:131;33036:4;32910:131;:::i;:::-;32902:139;;32629:419;;;:::o;33054:194::-;33094:4;33114:20;33132:1;33114:20;:::i;:::-;33109:25;;33148:20;33166:1;33148:20;:::i;:::-;33143:25;;33192:1;33189;33185:9;33177:17;;33216:1;33210:4;33207:11;33204:37;;;33221:18;;:::i;:::-;33204:37;33054:194;;;;:::o;33254:180::-;33302:77;33299:1;33292:88;33399:4;33396:1;33389:15;33423:4;33420:1;33413:15;33440:180;33488:77;33485:1;33478:88;33585:4;33582:1;33575:15;33609:4;33606:1;33599:15;33626:143;33683:5;33714:6;33708:13;33699:22;;33730:33;33757:5;33730:33;:::i;:::-;33626:143;;;;:::o;33775:351::-;33845:6;33894:2;33882:9;33873:7;33869:23;33865:32;33862:119;;;33900:79;;:::i;:::-;33862:119;34020:1;34045:64;34101:7;34092:6;34081:9;34077:22;34045:64;:::i;:::-;34035:74;;33991:128;33775:351;;;;:::o;34132:85::-;34177:7;34206:5;34195:16;;34132:85;;;:::o;34223:158::-;34281:9;34314:61;34332:42;34341:32;34367:5;34341:32;:::i;:::-;34332:42;:::i;:::-;34314:61;:::i;:::-;34301:74;;34223:158;;;:::o;34387:147::-;34482:45;34521:5;34482:45;:::i;:::-;34477:3;34470:58;34387:147;;:::o;34540:114::-;34607:6;34641:5;34635:12;34625:22;;34540:114;;;:::o;34660:184::-;34759:11;34793:6;34788:3;34781:19;34833:4;34828:3;34824:14;34809:29;;34660:184;;;;:::o;34850:132::-;34917:4;34940:3;34932:11;;34970:4;34965:3;34961:14;34953:22;;34850:132;;;:::o;34988:108::-;35065:24;35083:5;35065:24;:::i;:::-;35060:3;35053:37;34988:108;;:::o;35102:179::-;35171:10;35192:46;35234:3;35226:6;35192:46;:::i;:::-;35270:4;35265:3;35261:14;35247:28;;35102:179;;;;:::o;35287:113::-;35357:4;35389;35384:3;35380:14;35372:22;;35287:113;;;:::o;35436:732::-;35555:3;35584:54;35632:5;35584:54;:::i;:::-;35654:86;35733:6;35728:3;35654:86;:::i;:::-;35647:93;;35764:56;35814:5;35764:56;:::i;:::-;35843:7;35874:1;35859:284;35884:6;35881:1;35878:13;35859:284;;;35960:6;35954:13;35987:63;36046:3;36031:13;35987:63;:::i;:::-;35980:70;;36073:60;36126:6;36073:60;:::i;:::-;36063:70;;35919:224;35906:1;35903;35899:9;35894:14;;35859:284;;;35863:14;36159:3;36152:10;;35560:608;;;35436:732;;;;:::o;36174:831::-;36437:4;36475:3;36464:9;36460:19;36452:27;;36489:71;36557:1;36546:9;36542:17;36533:6;36489:71;:::i;:::-;36570:80;36646:2;36635:9;36631:18;36622:6;36570:80;:::i;:::-;36697:9;36691:4;36687:20;36682:2;36671:9;36667:18;36660:48;36725:108;36828:4;36819:6;36725:108;:::i;:::-;36717:116;;36843:72;36911:2;36900:9;36896:18;36887:6;36843:72;:::i;:::-;36925:73;36993:3;36982:9;36978:19;36969:6;36925:73;:::i;:::-;36174:831;;;;;;;;:::o;37011:225::-;37151:34;37147:1;37139:6;37135:14;37128:58;37220:8;37215:2;37207:6;37203:15;37196:33;37011:225;:::o;37242:366::-;37384:3;37405:67;37469:2;37464:3;37405:67;:::i;:::-;37398:74;;37481:93;37570:3;37481:93;:::i;:::-;37599:2;37594:3;37590:12;37583:19;;37242:366;;;:::o;37614:419::-;37780:4;37818:2;37807:9;37803:18;37795:26;;37867:9;37861:4;37857:20;37853:1;37842:9;37838:17;37831:47;37895:131;38021:4;37895:131;:::i;:::-;37887:139;;37614:419;;;:::o;38039:147::-;38140:11;38177:3;38162:18;;38039:147;;;;:::o;38192:114::-;;:::o;38312:398::-;38471:3;38492:83;38573:1;38568:3;38492:83;:::i;:::-;38485:90;;38584:93;38673:3;38584:93;:::i;:::-;38702:1;38697:3;38693:11;38686:18;;38312:398;;;:::o;38716:379::-;38900:3;38922:147;39065:3;38922:147;:::i;:::-;38915:154;;39086:3;39079:10;;38716:379;;;:::o

Swarm Source

ipfs://6529857fa90e71c038f4ea4e0c23f5b52604a246fc38ed9aa8e8be094db3594e
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.