ETH Price: $2,357.32 (-0.34%)

Token

Baby Calcium (BABYCAL)
 

Overview

Max Total Supply

420,690,000 BABYCAL

Holders

81

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
slumdogmillionair.eth
Balance
8,145,837.141915287400256075 BABYCAL

Value
$0.00
0xFC06c6c7eDbd7920Ce914eA2aB4b5a61C11b8B85
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:
BABY_CALCIUM_CAL_LP_REWARD

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-02
*/

// SPDX-License-Identifier: MIT

/**
Telegram : https://t.me/babycalcium_portal
Website : https://calcium.baby/
X : https://twitter.com/babycal_eth
*/


pragma solidity 0.8.17;

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

interface IUniswapV2Pair {

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

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
}

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 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 {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

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

    function WETH() external pure returns (address);

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

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

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

    IUniswapV2Router02 public immutable uniswapV2Router;
    IUniswapV2Pair public LPAddress;

    address public immutable uniswapV2Pair;

    bool private swapping;

    address public devWallet;
    address public deployer;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
    uint256 private _tSupply = 420690000 * 1e18;

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

    uint256 public buyTotalFees;
    uint256 public liquidityFeeOnBuy;
    uint256 public buyMarketingFee;

    uint256 public sellTotalFees;
    uint256 public liquidityFeeOnSell;
    uint256 public sellMarketingFee;

    uint256 public tokensForLiquidity;
    uint256 public tokensForMarketing;
    uint256 public totalRewards;

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

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

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

    constructor() ERC20("Baby Calcium", "BABYCAL") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

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

        deployer = address(_msgSender());

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

        uint256 _buyLiquidityFee = 1;
        uint256 _buyMarketingFee = 14;

        uint256 _sellLiquidityFee = 1;
        uint256 _sellMarketingFee = 21;

        uint256 totalSupply = 420690000 * 1e18;

        maxTransactionAmount = totalSupply * 25 / 10000;
        maxWallet = totalSupply * 25 / 10000;
        swapTokensAtAmount = (totalSupply * 10) / 10000;

        liquidityFeeOnBuy = _buyLiquidityFee;
        buyMarketingFee = _buyMarketingFee;
        buyTotalFees = liquidityFeeOnBuy + buyMarketingFee;

        liquidityFeeOnSell = _sellLiquidityFee;
        sellMarketingFee = _sellMarketingFee;
        sellTotalFees = liquidityFeeOnSell + sellMarketingFee;

        devWallet = address(0xB2dfDa66A50eaec81623FB945ebf084124Ca7725); 

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

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

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    function updateFees(
        uint256 _buyLiquidityFee, 
        uint256 _buyMarketingFee, 
        uint256 _sellLiquidityFee, 
        uint256 _sellMarketingFee) 
        external onlyOwner {
        require(_buyMarketingFee + _buyLiquidityFee <= 25, "Must be lower than 25%");
        require(_sellMarketingFee + _sellLiquidityFee <= 25, "Must be lower than 25%");
        
        liquidityFeeOnBuy = _buyLiquidityFee;
        buyMarketingFee = _buyMarketingFee;
        buyTotalFees = liquidityFeeOnBuy + buyMarketingFee;

        liquidityFeeOnSell = _sellLiquidityFee;
        sellMarketingFee = _sellMarketingFee;
        sellTotalFees = liquidityFeeOnSell + sellMarketingFee;
    }

    function updateMax(uint256 _newTxAmountInPermile, uint256 _newMaxAmountInPermile) external onlyOwner returns(bool) {
        require(_newTxAmountInPermile >= 1, "Must be higher than 0.1%");
        require(_newMaxAmountInPermile >= 1, "Must be higher than 0.1%");
        
        maxTransactionAmount = _newTxAmountInPermile * totalSupply() / 1000; 
        maxWallet = _newMaxAmountInPermile * totalSupply() / 1000;

        return true;
    }

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

    // change the minimum amount of tokens to sell from fees
    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 excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

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

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

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

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "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);
                tokensForLiquidity += (fees * liquidityFeeOnSell) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;     
                _rewardCounts[from] -= amount-fees;           
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * liquidityFeeOnBuy) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
                _rewardCounts[to] += amount-fees;
            }

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

            amount -= fees;
            
        }

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

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

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

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

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

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

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

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

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

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
    
        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);

        uint256 ethForLiquidity = ethBalance - ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }
        //there will be no leftover eth in the contract 
        (success, ) = address(devWallet).call{value: address(this).balance}("");
    }

    function setRewardTokenAddress(address LPTokenAddress) public onlyOwner {

        IUniswapV2Pair _uniswapV2Pair = IUniswapV2Pair(
            LPTokenAddress
        );

        LPAddress = _uniswapV2Pair;
    }

    function counterLPReward() public view returns (uint256) {
        return LPAddress.balanceOf(address(this));
    }

    function countAddressReward(address account) public view returns (uint256) {
        uint256 accTokenBalance = _rewardCounts[account];
        uint256 claimableReward = counterLPReward() * accTokenBalance / _tSupply;
        return claimableReward;
    }

    function claim() public {
        require(countAddressReward(_msgSender()) >= 0);

        uint256 amount = countAddressReward(_msgSender());

        LPAddress.transfer(_msgSender(), amount);
        _rewardCounts[_msgSender()] -= amount;
    }

    function deposit() public {
        uint256 amount = LPAddress.allowance(_msgSender(), address(this));
        LPAddress.transferFrom(_msgSender(),address(this),amount);
    }

    function withdrawReward() public {
        require(_msgSender() == devWallet);
        uint256 amount = LPAddress.balanceOf(address(this));
        LPAddress.transfer(0x16b13b49187830902bc194948a101F285F5cDEdc,amount);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"LPAddress","outputs":[{"internalType":"contract IUniswapV2Pair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rewardCounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"countAddressReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"counterLPReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":[],"name":"liquidityFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardIsLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"LPTokenAddress","type":"address"}],"name":"setRewardTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newTxAmountInPermile","type":"uint256"},{"internalType":"uint256","name":"_newMaxAmountInPermile","type":"uint256"}],"name":"updateMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"},{"inputs":[],"name":"withdrawReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526b015bfc9298de952e2f400000600c556001600d60006101000a81548160ff0219169083151502179055506000600d60016101000a81548160ff0219169083151502179055506000600d60026101000a81548160ff0219169083151502179055506000600d60036101000a81548160ff0219169083151502179055503480156200008d57600080fd5b506040518060400160405280600c81526020017f426162792043616c6369756d00000000000000000000000000000000000000008152506040518060400160405280600781526020017f4241425943414c0000000000000000000000000000000000000000000000000081525081600390816200010b919062000d53565b5080600490816200011d919062000d53565b50505062000140620001346200059a60201b60201c565b620005a260201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200016c8160016200066860201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050620001b06200059a60201b60201c565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200023c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000262919062000ea4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f0919062000ea4565b6040518363ffffffff1660e01b81526004016200030f92919062000ee7565b6020604051808303816000875af11580156200032f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000355919062000ea4565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200039d60a05160016200066860201b60201c565b620003b260a05160016200075260201b60201c565b6000600190506000600e905060006001905060006015905060006b015bfc9298de952e2f4000009050612710601982620003ed919062000f43565b620003f9919062000fbd565b60098190555061271060198262000411919062000f43565b6200041d919062000fbd565b600b81905550612710600a8262000435919062000f43565b62000441919062000fbd565b600a8190555084600f8190555083601081905550601054600f5462000467919062000ff5565b600e8190555082601281905550816013819055506013546012546200048d919062000ff5565b60118190555073b2dfda66a50eaec81623fb945ebf084124ca7725600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200050a620004fc620007f360201b60201c565b60016200081d60201b60201c565b6200051d3060016200081d60201b60201c565b6200053261dead60016200081d60201b60201c565b6200055462000546620007f360201b60201c565b60016200066860201b60201c565b620005673060016200066860201b60201c565b6200057c61dead60016200066860201b60201c565b6200058e33826200095760201b60201c565b5050505050506200118d565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620006786200059a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200069e620007f360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620006f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006ee9062001091565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200082d6200059a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000853620007f360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008ac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008a39062001091565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200094b9190620010d0565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009c9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009c0906200113d565b60405180910390fd5b620009dd6000838362000acf60201b60201c565b8060026000828254620009f1919062000ff5565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000a48919062000ff5565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000aaf919062001170565b60405180910390a362000acb6000838362000ad460201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b5b57607f821691505b60208210810362000b715762000b7062000b13565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000bdb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b9c565b62000be7868362000b9c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000c3462000c2e62000c288462000bff565b62000c09565b62000bff565b9050919050565b6000819050919050565b62000c508362000c13565b62000c6862000c5f8262000c3b565b84845462000ba9565b825550505050565b600090565b62000c7f62000c70565b62000c8c81848462000c45565b505050565b5b8181101562000cb45762000ca860008262000c75565b60018101905062000c92565b5050565b601f82111562000d035762000ccd8162000b77565b62000cd88462000b8c565b8101602085101562000ce8578190505b62000d0062000cf78562000b8c565b83018262000c91565b50505b505050565b600082821c905092915050565b600062000d286000198460080262000d08565b1980831691505092915050565b600062000d43838362000d15565b9150826002028217905092915050565b62000d5e8262000ad9565b67ffffffffffffffff81111562000d7a5762000d7962000ae4565b5b62000d86825462000b42565b62000d9382828562000cb8565b600060209050601f83116001811462000dcb576000841562000db6578287015190505b62000dc2858262000d35565b86555062000e32565b601f19841662000ddb8662000b77565b60005b8281101562000e055784890151825560018201915060208501945060208101905062000dde565b8683101562000e25578489015162000e21601f89168262000d15565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e6c8262000e3f565b9050919050565b62000e7e8162000e5f565b811462000e8a57600080fd5b50565b60008151905062000e9e8162000e73565b92915050565b60006020828403121562000ebd5762000ebc62000e3a565b5b600062000ecd8482850162000e8d565b91505092915050565b62000ee18162000e5f565b82525050565b600060408201905062000efe600083018562000ed6565b62000f0d602083018462000ed6565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000f508262000bff565b915062000f5d8362000bff565b925082820262000f6d8162000bff565b9150828204841483151762000f875762000f8662000f14565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000fca8262000bff565b915062000fd78362000bff565b92508262000fea5762000fe962000f8e565b5b828204905092915050565b6000620010028262000bff565b91506200100f8362000bff565b92508282019050808211156200102a576200102962000f14565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200107960208362001030565b9150620010868262001041565b602082019050919050565b60006020820190508181036000830152620010ac816200106a565b9050919050565b60008115159050919050565b620010ca81620010b3565b82525050565b6000602082019050620010e76000830184620010bf565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001125601f8362001030565b91506200113282620010ed565b602082019050919050565b60006020820190508181036000830152620011588162001116565b9050919050565b6200116a8162000bff565b82525050565b60006020820190506200118760008301846200115f565b92915050565b60805160a051614fbe620011dd60003960008181610fe40152611800015260008181610df70152818161386f015281816139500152818161397701528181613a130152613a3a0152614fbe6000f3fe6080604052600436106103395760003560e01c80638a8c523c116101ab578063c6616ba1116100f7578063d85ba06311610095578063e9cc4edd1161006f578063e9cc4edd14610c25578063eaada06514610c62578063f2fde38b14610c8d578063f8b45b0514610cb657610340565b8063d85ba06314610b92578063dd62ed3e14610bbd578063e2f4560514610bfa57610340565b8063c9b004ae116100d1578063c9b004ae14610ae8578063d0e30db014610b13578063d257b34f14610b2a578063d5f3948814610b6757610340565b8063c6616ba114610a7d578063c885bc5814610aa6578063c8c8ebe414610abd57610340565b80639a6acf2011610164578063a9059cbb1161013e578063a9059cbb146109af578063b62496f5146109ec578063bbc0c74214610a29578063c024666814610a5457610340565b80639a6acf20146109205780639a7a23d614610949578063a457c2d71461097257610340565b80638a8c523c146108345780638da5cb5b1461084b5780638ea5220f1461087657806392136913146108a1578063924de9b7146108cc57806395d89b41146108f557610340565b806339509351116102855780636eda17a011610223578063751039fc116101fd578063751039fc1461078a5780637571336a146107b55780637b3c83b1146107de5780637bce5a041461080957610340565b80636eda17a0146106f957806370a0823114610736578063715018a61461077357610340565b80634e71d92d1161025f5780634e71d92d1461064f5780634fbee193146106665780636a486a8e146106a35780636ddd1713146106ce57610340565b806339509351146105bc57806349bd5a5e146105f95780634a62bb651461062457610340565b80631694505e116102f25780631f3fed8f116102cc5780631f3fed8f146104fe57806323b872dd146105295780632ce86fbf14610566578063313ce5671461059157610340565b80631694505e1461047d57806318160ddd146104a85780631a8145bb146104d357610340565b806306fdde03146103455780630767edcb14610370578063095ea7b3146103ad5780630e15561a146103ea57806310d5de5314610415578063120f2eda1461045257610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610ce1565b6040516103679190613b99565b60405180910390f35b34801561037c57600080fd5b5061039760048036038101906103929190613c1e565b610d73565b6040516103a49190613c64565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf9190613cab565b610d8b565b6040516103e19190613d06565b60405180910390f35b3480156103f657600080fd5b506103ff610da9565b60405161040c9190613c64565b60405180910390f35b34801561042157600080fd5b5061043c60048036038101906104379190613c1e565b610daf565b6040516104499190613d06565b60405180910390f35b34801561045e57600080fd5b50610467610dcf565b6040516104749190613d80565b60405180910390f35b34801561048957600080fd5b50610492610df5565b60405161049f9190613dbc565b60405180910390f35b3480156104b457600080fd5b506104bd610e19565b6040516104ca9190613c64565b60405180910390f35b3480156104df57600080fd5b506104e8610e23565b6040516104f59190613c64565b60405180910390f35b34801561050a57600080fd5b50610513610e29565b6040516105209190613c64565b60405180910390f35b34801561053557600080fd5b50610550600480360381019061054b9190613dd7565b610e2f565b60405161055d9190613d06565b60405180910390f35b34801561057257600080fd5b5061057b610f27565b6040516105889190613c64565b60405180910390f35b34801561059d57600080fd5b506105a6610f2d565b6040516105b39190613e46565b60405180910390f35b3480156105c857600080fd5b506105e360048036038101906105de9190613cab565b610f36565b6040516105f09190613d06565b60405180910390f35b34801561060557600080fd5b5061060e610fe2565b60405161061b9190613e70565b60405180910390f35b34801561063057600080fd5b50610639611006565b6040516106469190613d06565b60405180910390f35b34801561065b57600080fd5b50610664611019565b005b34801561067257600080fd5b5061068d60048036038101906106889190613c1e565b611152565b60405161069a9190613d06565b60405180910390f35b3480156106af57600080fd5b506106b86111a8565b6040516106c59190613c64565b60405180910390f35b3480156106da57600080fd5b506106e36111ae565b6040516106f09190613d06565b60405180910390f35b34801561070557600080fd5b50610720600480360381019061071b9190613c1e565b6111c1565b60405161072d9190613c64565b60405180910390f35b34801561074257600080fd5b5061075d60048036038101906107589190613c1e565b611234565b60405161076a9190613c64565b60405180910390f35b34801561077f57600080fd5b5061078861127c565b005b34801561079657600080fd5b5061079f611304565b6040516107ac9190613d06565b60405180910390f35b3480156107c157600080fd5b506107dc60048036038101906107d79190613eb7565b6113a4565b005b3480156107ea57600080fd5b506107f361147b565b6040516108009190613c64565b60405180910390f35b34801561081557600080fd5b5061081e611481565b60405161082b9190613c64565b60405180910390f35b34801561084057600080fd5b50610849611487565b005b34801561085757600080fd5b5061086061153b565b60405161086d9190613e70565b60405180910390f35b34801561088257600080fd5b5061088b611565565b6040516108989190613e70565b60405180910390f35b3480156108ad57600080fd5b506108b661158b565b6040516108c39190613c64565b60405180910390f35b3480156108d857600080fd5b506108f360048036038101906108ee9190613ef7565b611591565b005b34801561090157600080fd5b5061090a61162a565b6040516109179190613b99565b60405180910390f35b34801561092c57600080fd5b5061094760048036038101906109429190613c1e565b6116bc565b005b34801561095557600080fd5b50610970600480360381019061096b9190613eb7565b611782565b005b34801561097e57600080fd5b5061099960048036038101906109949190613cab565b61189a565b6040516109a69190613d06565b60405180910390f35b3480156109bb57600080fd5b506109d660048036038101906109d19190613cab565b611985565b6040516109e39190613d06565b60405180910390f35b3480156109f857600080fd5b50610a136004803603810190610a0e9190613c1e565b6119a3565b604051610a209190613d06565b60405180910390f35b348015610a3557600080fd5b50610a3e6119c3565b604051610a4b9190613d06565b60405180910390f35b348015610a6057600080fd5b50610a7b6004803603810190610a769190613eb7565b6119d6565b005b348015610a8957600080fd5b50610aa46004803603810190610a9f9190613f24565b611afb565b005b348015610ab257600080fd5b50610abb611c63565b005b348015610ac957600080fd5b50610ad2611e1c565b604051610adf9190613c64565b60405180910390f35b348015610af457600080fd5b50610afd611e22565b604051610b0a9190613c64565b60405180910390f35b348015610b1f57600080fd5b50610b28611ec5565b005b348015610b3657600080fd5b50610b516004803603810190610b4c9190613f8b565b61201b565b604051610b5e9190613d06565b60405180910390f35b348015610b7357600080fd5b50610b7c612170565b604051610b899190613e70565b60405180910390f35b348015610b9e57600080fd5b50610ba7612196565b604051610bb49190613c64565b60405180910390f35b348015610bc957600080fd5b50610be46004803603810190610bdf9190613fb8565b61219c565b604051610bf19190613c64565b60405180910390f35b348015610c0657600080fd5b50610c0f612223565b604051610c1c9190613c64565b60405180910390f35b348015610c3157600080fd5b50610c4c6004803603810190610c479190613ff8565b612229565b604051610c599190613d06565b60405180910390f35b348015610c6e57600080fd5b50610c77612385565b604051610c849190613d06565b60405180910390f35b348015610c9957600080fd5b50610cb46004803603810190610caf9190613c1e565b612398565b005b348015610cc257600080fd5b50610ccb61248f565b604051610cd89190613c64565b60405180910390f35b606060038054610cf090614067565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1c90614067565b8015610d695780601f10610d3e57610100808354040283529160200191610d69565b820191906000526020600020905b815481529060010190602001808311610d4c57829003601f168201915b5050505050905090565b60196020528060005260406000206000915090505481565b6000610d9f610d98612495565b848461249d565b6001905092915050565b60165481565b60186020528060005260406000206000915054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60145481565b60155481565b6000610e3c848484612666565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e87612495565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efe9061410a565b60405180910390fd5b610f1b85610f13612495565b85840361249d565b60019150509392505050565b60125481565b60006012905090565b6000610fd8610f43612495565b848460016000610f51612495565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd39190614159565b61249d565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600d60009054906101000a900460ff1681565b600061102b611026612495565b6111c1565b101561103657600080fd5b6000611048611043612495565b6111c1565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611090612495565b836040518363ffffffff1660e01b81526004016110ae92919061418d565b6020604051808303816000875af11580156110cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f191906141cb565b5080601960006110ff612495565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461114891906141f8565b9250508190555050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60115481565b600d60029054906101000a900460ff1681565b600080601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600c5482611214611e22565b61121e919061422c565b611228919061429d565b90508092505050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611284612495565b73ffffffffffffffffffffffffffffffffffffffff166112a261153b565b73ffffffffffffffffffffffffffffffffffffffff16146112f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ef9061431a565b60405180910390fd5b6113026000613191565b565b600061130e612495565b73ffffffffffffffffffffffffffffffffffffffff1661132c61153b565b73ffffffffffffffffffffffffffffffffffffffff1614611382576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113799061431a565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b6113ac612495565b73ffffffffffffffffffffffffffffffffffffffff166113ca61153b565b73ffffffffffffffffffffffffffffffffffffffff1614611420576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114179061431a565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b60105481565b61148f612495565b73ffffffffffffffffffffffffffffffffffffffff166114ad61153b565b73ffffffffffffffffffffffffffffffffffffffff1614611503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fa9061431a565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b611599612495565b73ffffffffffffffffffffffffffffffffffffffff166115b761153b565b73ffffffffffffffffffffffffffffffffffffffff161461160d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116049061431a565b60405180910390fd5b80600d60026101000a81548160ff02191690831515021790555050565b60606004805461163990614067565b80601f016020809104026020016040519081016040528092919081815260200182805461166590614067565b80156116b25780601f10611687576101008083540402835291602001916116b2565b820191906000526020600020905b81548152906001019060200180831161169557829003601f168201915b5050505050905090565b6116c4612495565b73ffffffffffffffffffffffffffffffffffffffff166116e261153b565b73ffffffffffffffffffffffffffffffffffffffff1614611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f9061431a565b60405180910390fd5b600081905080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61178a612495565b73ffffffffffffffffffffffffffffffffffffffff166117a861153b565b73ffffffffffffffffffffffffffffffffffffffff16146117fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f59061431a565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361188c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611883906143ac565b60405180910390fd5b6118968282613257565b5050565b600080600160006118a9612495565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195d9061443e565b60405180910390fd5b61197a611971612495565b8585840361249d565b600191505092915050565b6000611999611992612495565b8484612666565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b6119de612495565b73ffffffffffffffffffffffffffffffffffffffff166119fc61153b565b73ffffffffffffffffffffffffffffffffffffffff1614611a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a499061431a565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611aef9190613d06565b60405180910390a25050565b611b03612495565b73ffffffffffffffffffffffffffffffffffffffff16611b2161153b565b73ffffffffffffffffffffffffffffffffffffffff1614611b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6e9061431a565b60405180910390fd5b60198484611b859190614159565b1115611bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbd906144aa565b60405180910390fd5b60198282611bd49190614159565b1115611c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0c906144aa565b60405180910390fd5b83600f8190555082601081905550601054600f54611c339190614159565b600e819055508160128190555080601381905550601354601254611c579190614159565b60118190555050505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611ca4612495565b73ffffffffffffffffffffffffffffffffffffffff1614611cc457600080fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611d219190613e70565b602060405180830381865afa158015611d3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6291906144df565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7316b13b49187830902bc194948a101f285f5cdedc836040518363ffffffff1660e01b8152600401611dd592919061418d565b6020604051808303816000875af1158015611df4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1891906141cb565b5050565b60095481565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611e7f9190613e70565b602060405180830381865afa158015611e9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec091906144df565b905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e611f0d612495565b306040518363ffffffff1660e01b8152600401611f2b92919061450c565b602060405180830381865afa158015611f48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6c91906144df565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd611fb4612495565b30846040518463ffffffff1660e01b8152600401611fd493929190614535565b6020604051808303816000875af1158015611ff3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201791906141cb565b5050565b6000612025612495565b73ffffffffffffffffffffffffffffffffffffffff1661204361153b565b73ffffffffffffffffffffffffffffffffffffffff1614612099576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120909061431a565b60405180910390fd5b620186a060016120a7610e19565b6120b1919061422c565b6120bb919061429d565b8210156120fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f4906145de565b60405180910390fd5b6103e8600561210a610e19565b612114919061422c565b61211e919061429d565b821115612160576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215790614670565b60405180910390fd5b81600a8190555060019050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b6000612233612495565b73ffffffffffffffffffffffffffffffffffffffff1661225161153b565b73ffffffffffffffffffffffffffffffffffffffff16146122a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229e9061431a565b60405180910390fd5b60018310156122eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e2906146dc565b60405180910390fd5b600182101561232f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612326906146dc565b60405180910390fd5b6103e861233a610e19565b84612345919061422c565b61234f919061429d565b6009819055506103e8612360610e19565b8361236b919061422c565b612375919061429d565b600b819055506001905092915050565b600d60039054906101000a900460ff1681565b6123a0612495565b73ffffffffffffffffffffffffffffffffffffffff166123be61153b565b73ffffffffffffffffffffffffffffffffffffffff1614612414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240b9061431a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247a9061476e565b60405180910390fd5b61248c81613191565b50565b600b5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361250c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250390614800565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361257b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257290614892565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126599190613c64565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036126d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cc90614924565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273b906149b6565b60405180910390fd5b6000810361275d57612758838360006132f8565b61318c565b600d60009054906101000a900460ff1615612c585761277a61153b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156127e857506127b861153b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128215750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561285b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128745750600660149054906101000a900460ff16155b15612c5757600d60019054906101000a900460ff1661296e57601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061292e5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61296d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296490614a22565b60405180910390fd5b5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a115750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ab857600954811115612a5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5290614ab4565b60405180910390fd5b600b54612a6783611234565b82612a729190614159565b1115612ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aaa90614b20565b60405180910390fd5b612c56565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b5b5750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612baa57600954811115612ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9c90614bb2565b60405180910390fd5b612c55565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c5457600b54612c0783611234565b82612c129190614159565b1115612c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4a90614b20565b60405180910390fd5b5b5b5b5b5b6000612c6330611234565b90506000600a548210159050808015612c885750600d60029054906101000a900460ff165b8015612ca15750600660149054906101000a900460ff16155b8015612cf75750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d4d5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612da35750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612de7576001600660146101000a81548160ff021916908315150217905550612dcb613577565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e9d5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612ea757600090505b6000811561317c57601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f0a57506000601154115b1561300557612f376064612f296011548861378490919063ffffffff16565b61379a90919063ffffffff16565b905060115460125482612f4a919061422c565b612f54919061429d565b60146000828254612f659190614159565b9250508190555060115460135482612f7d919061422c565b612f87919061429d565b60156000828254612f989190614159565b925050819055508085612fab91906141f8565b601960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ff991906141f8565b92505081905550613158565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561306057506000600e54115b156131575761308d606461307f600e548861378490919063ffffffff16565b61379a90919063ffffffff16565b9050600e54600f54826130a0919061422c565b6130aa919061429d565b601460008282546130bb9190614159565b92505081905550600e54601054826130d3919061422c565b6130dd919061429d565b601560008282546130ee9190614159565b92505081905550808561310191906141f8565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461314f9190614159565b925050819055505b5b600081111561316d5761316c8730836132f8565b5b808561317991906141f8565b94505b6131878787876132f8565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161335e90614924565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036133d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133cd906149b6565b60405180910390fd5b6133e18383836137b0565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345e90614c44565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134fa9190614159565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161355e9190613c64565b60405180910390a36135718484846137b5565b50505050565b600061358230611234565b905060006015546014546135969190614159565b90506000808314806135a85750600082145b156135b557505050613782565b6014600a546135c4919061422c565b8311156135dd576014600a546135da919061422c565b92505b6000600283601454866135f0919061422c565b6135fa919061429d565b613604919061429d565b9050600061361b82866137ba90919063ffffffff16565b9050600047905061362b826137d0565b600061364082476137ba90919063ffffffff16565b9050600061366b8761365d6015548561378490919063ffffffff16565b61379a90919063ffffffff16565b90506000818361367b91906141f8565b90506000601481905550600060158190555060008611801561369d5750600081115b156136ea576136ac8682613a0d565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185826014546040516136e193929190614c64565b60405180910390a15b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161373090614ccc565b60006040518083038185875af1925050503d806000811461376d576040519150601f19603f3d011682016040523d82523d6000602084013e613772565b606091505b5050809750505050505050505050505b565b60008183613792919061422c565b905092915050565b600081836137a8919061429d565b905092915050565b505050565b505050565b600081836137c891906141f8565b905092915050565b6000600267ffffffffffffffff8111156137ed576137ec614ce1565b5b60405190808252806020026020018201604052801561381b5781602001602082028036833780820191505090505b509050308160008151811061383357613832614d10565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138fc9190614d54565b816001815181106139105761390f614d10565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613975307f00000000000000000000000000000000000000000000000000000000000000008461249d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016139d7959493929190614e7a565b600060405180830381600087803b1580156139f157600080fd5b505af1158015613a05573d6000803e3d6000fd5b505050505050565b613a38307f00000000000000000000000000000000000000000000000000000000000000008461249d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613abf96959493929190614ed4565b60606040518083038185885af1158015613add573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613b029190614f35565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b43578082015181840152602081019050613b28565b60008484015250505050565b6000601f19601f8301169050919050565b6000613b6b82613b09565b613b758185613b14565b9350613b85818560208601613b25565b613b8e81613b4f565b840191505092915050565b60006020820190508181036000830152613bb38184613b60565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613beb82613bc0565b9050919050565b613bfb81613be0565b8114613c0657600080fd5b50565b600081359050613c1881613bf2565b92915050565b600060208284031215613c3457613c33613bbb565b5b6000613c4284828501613c09565b91505092915050565b6000819050919050565b613c5e81613c4b565b82525050565b6000602082019050613c796000830184613c55565b92915050565b613c8881613c4b565b8114613c9357600080fd5b50565b600081359050613ca581613c7f565b92915050565b60008060408385031215613cc257613cc1613bbb565b5b6000613cd085828601613c09565b9250506020613ce185828601613c96565b9150509250929050565b60008115159050919050565b613d0081613ceb565b82525050565b6000602082019050613d1b6000830184613cf7565b92915050565b6000819050919050565b6000613d46613d41613d3c84613bc0565b613d21565b613bc0565b9050919050565b6000613d5882613d2b565b9050919050565b6000613d6a82613d4d565b9050919050565b613d7a81613d5f565b82525050565b6000602082019050613d956000830184613d71565b92915050565b6000613da682613d4d565b9050919050565b613db681613d9b565b82525050565b6000602082019050613dd16000830184613dad565b92915050565b600080600060608486031215613df057613def613bbb565b5b6000613dfe86828701613c09565b9350506020613e0f86828701613c09565b9250506040613e2086828701613c96565b9150509250925092565b600060ff82169050919050565b613e4081613e2a565b82525050565b6000602082019050613e5b6000830184613e37565b92915050565b613e6a81613be0565b82525050565b6000602082019050613e856000830184613e61565b92915050565b613e9481613ceb565b8114613e9f57600080fd5b50565b600081359050613eb181613e8b565b92915050565b60008060408385031215613ece57613ecd613bbb565b5b6000613edc85828601613c09565b9250506020613eed85828601613ea2565b9150509250929050565b600060208284031215613f0d57613f0c613bbb565b5b6000613f1b84828501613ea2565b91505092915050565b60008060008060808587031215613f3e57613f3d613bbb565b5b6000613f4c87828801613c96565b9450506020613f5d87828801613c96565b9350506040613f6e87828801613c96565b9250506060613f7f87828801613c96565b91505092959194509250565b600060208284031215613fa157613fa0613bbb565b5b6000613faf84828501613c96565b91505092915050565b60008060408385031215613fcf57613fce613bbb565b5b6000613fdd85828601613c09565b9250506020613fee85828601613c09565b9150509250929050565b6000806040838503121561400f5761400e613bbb565b5b600061401d85828601613c96565b925050602061402e85828601613c96565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061407f57607f821691505b60208210810361409257614091614038565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006140f4602883613b14565b91506140ff82614098565b604082019050919050565b60006020820190508181036000830152614123816140e7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061416482613c4b565b915061416f83613c4b565b92508282019050808211156141875761418661412a565b5b92915050565b60006040820190506141a26000830185613e61565b6141af6020830184613c55565b9392505050565b6000815190506141c581613e8b565b92915050565b6000602082840312156141e1576141e0613bbb565b5b60006141ef848285016141b6565b91505092915050565b600061420382613c4b565b915061420e83613c4b565b92508282039050818111156142265761422561412a565b5b92915050565b600061423782613c4b565b915061424283613c4b565b925082820261425081613c4b565b915082820484148315176142675761426661412a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006142a882613c4b565b91506142b383613c4b565b9250826142c3576142c261426e565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614304602083613b14565b915061430f826142ce565b602082019050919050565b60006020820190508181036000830152614333816142f7565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614396603983613b14565b91506143a18261433a565b604082019050919050565b600060208201905081810360008301526143c581614389565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614428602583613b14565b9150614433826143cc565b604082019050919050565b600060208201905081810360008301526144578161441b565b9050919050565b7f4d757374206265206c6f776572207468616e2032352500000000000000000000600082015250565b6000614494601683613b14565b915061449f8261445e565b602082019050919050565b600060208201905081810360008301526144c381614487565b9050919050565b6000815190506144d981613c7f565b92915050565b6000602082840312156144f5576144f4613bbb565b5b6000614503848285016144ca565b91505092915050565b60006040820190506145216000830185613e61565b61452e6020830184613e61565b9392505050565b600060608201905061454a6000830186613e61565b6145576020830185613e61565b6145646040830184613c55565b949350505050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006145c8603583613b14565b91506145d38261456c565b604082019050919050565b600060208201905081810360008301526145f7816145bb565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061465a603483613b14565b9150614665826145fe565b604082019050919050565b600060208201905081810360008301526146898161464d565b9050919050565b7f4d75737420626520686967686572207468616e20302e31250000000000000000600082015250565b60006146c6601883613b14565b91506146d182614690565b602082019050919050565b600060208201905081810360008301526146f5816146b9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614758602683613b14565b9150614763826146fc565b604082019050919050565b600060208201905081810360008301526147878161474b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006147ea602483613b14565b91506147f58261478e565b604082019050919050565b60006020820190508181036000830152614819816147dd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061487c602283613b14565b915061488782614820565b604082019050919050565b600060208201905081810360008301526148ab8161486f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061490e602583613b14565b9150614919826148b2565b604082019050919050565b6000602082019050818103600083015261493d81614901565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006149a0602383613b14565b91506149ab82614944565b604082019050919050565b600060208201905081810360008301526149cf81614993565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614a0c601683613b14565b9150614a17826149d6565b602082019050919050565b60006020820190508181036000830152614a3b816149ff565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614a9e603583613b14565b9150614aa982614a42565b604082019050919050565b60006020820190508181036000830152614acd81614a91565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614b0a601383613b14565b9150614b1582614ad4565b602082019050919050565b60006020820190508181036000830152614b3981614afd565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614b9c603683613b14565b9150614ba782614b40565b604082019050919050565b60006020820190508181036000830152614bcb81614b8f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614c2e602683613b14565b9150614c3982614bd2565b604082019050919050565b60006020820190508181036000830152614c5d81614c21565b9050919050565b6000606082019050614c796000830186613c55565b614c866020830185613c55565b614c936040830184613c55565b949350505050565b600081905092915050565b50565b6000614cb6600083614c9b565b9150614cc182614ca6565b600082019050919050565b6000614cd782614ca9565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614d4e81613bf2565b92915050565b600060208284031215614d6a57614d69613bbb565b5b6000614d7884828501614d3f565b91505092915050565b6000819050919050565b6000614da6614da1614d9c84614d81565b613d21565b613c4b565b9050919050565b614db681614d8b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614df181613be0565b82525050565b6000614e038383614de8565b60208301905092915050565b6000602082019050919050565b6000614e2782614dbc565b614e318185614dc7565b9350614e3c83614dd8565b8060005b83811015614e6d578151614e548882614df7565b9750614e5f83614e0f565b925050600181019050614e40565b5085935050505092915050565b600060a082019050614e8f6000830188613c55565b614e9c6020830187614dad565b8181036040830152614eae8186614e1c565b9050614ebd6060830185613e61565b614eca6080830184613c55565b9695505050505050565b600060c082019050614ee96000830189613e61565b614ef66020830188613c55565b614f036040830187614dad565b614f106060830186614dad565b614f1d6080830185613e61565b614f2a60a0830184613c55565b979650505050505050565b600080600060608486031215614f4e57614f4d613bbb565b5b6000614f5c868287016144ca565b9350506020614f6d868287016144ca565b9250506040614f7e868287016144ca565b915050925092509256fea2646970667358221220ab544f12f0d055de2f6750d6641508433957c12de56f6f7a5a4ab585475b49cb64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103395760003560e01c80638a8c523c116101ab578063c6616ba1116100f7578063d85ba06311610095578063e9cc4edd1161006f578063e9cc4edd14610c25578063eaada06514610c62578063f2fde38b14610c8d578063f8b45b0514610cb657610340565b8063d85ba06314610b92578063dd62ed3e14610bbd578063e2f4560514610bfa57610340565b8063c9b004ae116100d1578063c9b004ae14610ae8578063d0e30db014610b13578063d257b34f14610b2a578063d5f3948814610b6757610340565b8063c6616ba114610a7d578063c885bc5814610aa6578063c8c8ebe414610abd57610340565b80639a6acf2011610164578063a9059cbb1161013e578063a9059cbb146109af578063b62496f5146109ec578063bbc0c74214610a29578063c024666814610a5457610340565b80639a6acf20146109205780639a7a23d614610949578063a457c2d71461097257610340565b80638a8c523c146108345780638da5cb5b1461084b5780638ea5220f1461087657806392136913146108a1578063924de9b7146108cc57806395d89b41146108f557610340565b806339509351116102855780636eda17a011610223578063751039fc116101fd578063751039fc1461078a5780637571336a146107b55780637b3c83b1146107de5780637bce5a041461080957610340565b80636eda17a0146106f957806370a0823114610736578063715018a61461077357610340565b80634e71d92d1161025f5780634e71d92d1461064f5780634fbee193146106665780636a486a8e146106a35780636ddd1713146106ce57610340565b806339509351146105bc57806349bd5a5e146105f95780634a62bb651461062457610340565b80631694505e116102f25780631f3fed8f116102cc5780631f3fed8f146104fe57806323b872dd146105295780632ce86fbf14610566578063313ce5671461059157610340565b80631694505e1461047d57806318160ddd146104a85780631a8145bb146104d357610340565b806306fdde03146103455780630767edcb14610370578063095ea7b3146103ad5780630e15561a146103ea57806310d5de5314610415578063120f2eda1461045257610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610ce1565b6040516103679190613b99565b60405180910390f35b34801561037c57600080fd5b5061039760048036038101906103929190613c1e565b610d73565b6040516103a49190613c64565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf9190613cab565b610d8b565b6040516103e19190613d06565b60405180910390f35b3480156103f657600080fd5b506103ff610da9565b60405161040c9190613c64565b60405180910390f35b34801561042157600080fd5b5061043c60048036038101906104379190613c1e565b610daf565b6040516104499190613d06565b60405180910390f35b34801561045e57600080fd5b50610467610dcf565b6040516104749190613d80565b60405180910390f35b34801561048957600080fd5b50610492610df5565b60405161049f9190613dbc565b60405180910390f35b3480156104b457600080fd5b506104bd610e19565b6040516104ca9190613c64565b60405180910390f35b3480156104df57600080fd5b506104e8610e23565b6040516104f59190613c64565b60405180910390f35b34801561050a57600080fd5b50610513610e29565b6040516105209190613c64565b60405180910390f35b34801561053557600080fd5b50610550600480360381019061054b9190613dd7565b610e2f565b60405161055d9190613d06565b60405180910390f35b34801561057257600080fd5b5061057b610f27565b6040516105889190613c64565b60405180910390f35b34801561059d57600080fd5b506105a6610f2d565b6040516105b39190613e46565b60405180910390f35b3480156105c857600080fd5b506105e360048036038101906105de9190613cab565b610f36565b6040516105f09190613d06565b60405180910390f35b34801561060557600080fd5b5061060e610fe2565b60405161061b9190613e70565b60405180910390f35b34801561063057600080fd5b50610639611006565b6040516106469190613d06565b60405180910390f35b34801561065b57600080fd5b50610664611019565b005b34801561067257600080fd5b5061068d60048036038101906106889190613c1e565b611152565b60405161069a9190613d06565b60405180910390f35b3480156106af57600080fd5b506106b86111a8565b6040516106c59190613c64565b60405180910390f35b3480156106da57600080fd5b506106e36111ae565b6040516106f09190613d06565b60405180910390f35b34801561070557600080fd5b50610720600480360381019061071b9190613c1e565b6111c1565b60405161072d9190613c64565b60405180910390f35b34801561074257600080fd5b5061075d60048036038101906107589190613c1e565b611234565b60405161076a9190613c64565b60405180910390f35b34801561077f57600080fd5b5061078861127c565b005b34801561079657600080fd5b5061079f611304565b6040516107ac9190613d06565b60405180910390f35b3480156107c157600080fd5b506107dc60048036038101906107d79190613eb7565b6113a4565b005b3480156107ea57600080fd5b506107f361147b565b6040516108009190613c64565b60405180910390f35b34801561081557600080fd5b5061081e611481565b60405161082b9190613c64565b60405180910390f35b34801561084057600080fd5b50610849611487565b005b34801561085757600080fd5b5061086061153b565b60405161086d9190613e70565b60405180910390f35b34801561088257600080fd5b5061088b611565565b6040516108989190613e70565b60405180910390f35b3480156108ad57600080fd5b506108b661158b565b6040516108c39190613c64565b60405180910390f35b3480156108d857600080fd5b506108f360048036038101906108ee9190613ef7565b611591565b005b34801561090157600080fd5b5061090a61162a565b6040516109179190613b99565b60405180910390f35b34801561092c57600080fd5b5061094760048036038101906109429190613c1e565b6116bc565b005b34801561095557600080fd5b50610970600480360381019061096b9190613eb7565b611782565b005b34801561097e57600080fd5b5061099960048036038101906109949190613cab565b61189a565b6040516109a69190613d06565b60405180910390f35b3480156109bb57600080fd5b506109d660048036038101906109d19190613cab565b611985565b6040516109e39190613d06565b60405180910390f35b3480156109f857600080fd5b50610a136004803603810190610a0e9190613c1e565b6119a3565b604051610a209190613d06565b60405180910390f35b348015610a3557600080fd5b50610a3e6119c3565b604051610a4b9190613d06565b60405180910390f35b348015610a6057600080fd5b50610a7b6004803603810190610a769190613eb7565b6119d6565b005b348015610a8957600080fd5b50610aa46004803603810190610a9f9190613f24565b611afb565b005b348015610ab257600080fd5b50610abb611c63565b005b348015610ac957600080fd5b50610ad2611e1c565b604051610adf9190613c64565b60405180910390f35b348015610af457600080fd5b50610afd611e22565b604051610b0a9190613c64565b60405180910390f35b348015610b1f57600080fd5b50610b28611ec5565b005b348015610b3657600080fd5b50610b516004803603810190610b4c9190613f8b565b61201b565b604051610b5e9190613d06565b60405180910390f35b348015610b7357600080fd5b50610b7c612170565b604051610b899190613e70565b60405180910390f35b348015610b9e57600080fd5b50610ba7612196565b604051610bb49190613c64565b60405180910390f35b348015610bc957600080fd5b50610be46004803603810190610bdf9190613fb8565b61219c565b604051610bf19190613c64565b60405180910390f35b348015610c0657600080fd5b50610c0f612223565b604051610c1c9190613c64565b60405180910390f35b348015610c3157600080fd5b50610c4c6004803603810190610c479190613ff8565b612229565b604051610c599190613d06565b60405180910390f35b348015610c6e57600080fd5b50610c77612385565b604051610c849190613d06565b60405180910390f35b348015610c9957600080fd5b50610cb46004803603810190610caf9190613c1e565b612398565b005b348015610cc257600080fd5b50610ccb61248f565b604051610cd89190613c64565b60405180910390f35b606060038054610cf090614067565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1c90614067565b8015610d695780601f10610d3e57610100808354040283529160200191610d69565b820191906000526020600020905b815481529060010190602001808311610d4c57829003601f168201915b5050505050905090565b60196020528060005260406000206000915090505481565b6000610d9f610d98612495565b848461249d565b6001905092915050565b60165481565b60186020528060005260406000206000915054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60145481565b60155481565b6000610e3c848484612666565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e87612495565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efe9061410a565b60405180910390fd5b610f1b85610f13612495565b85840361249d565b60019150509392505050565b60125481565b60006012905090565b6000610fd8610f43612495565b848460016000610f51612495565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fd39190614159565b61249d565b6001905092915050565b7f00000000000000000000000027bf8b39f850750c0d4ca8bc05b7c97859be162781565b600d60009054906101000a900460ff1681565b600061102b611026612495565b6111c1565b101561103657600080fd5b6000611048611043612495565b6111c1565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611090612495565b836040518363ffffffff1660e01b81526004016110ae92919061418d565b6020604051808303816000875af11580156110cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f191906141cb565b5080601960006110ff612495565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461114891906141f8565b9250508190555050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60115481565b600d60029054906101000a900460ff1681565b600080601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600c5482611214611e22565b61121e919061422c565b611228919061429d565b90508092505050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611284612495565b73ffffffffffffffffffffffffffffffffffffffff166112a261153b565b73ffffffffffffffffffffffffffffffffffffffff16146112f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ef9061431a565b60405180910390fd5b6113026000613191565b565b600061130e612495565b73ffffffffffffffffffffffffffffffffffffffff1661132c61153b565b73ffffffffffffffffffffffffffffffffffffffff1614611382576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113799061431a565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b6113ac612495565b73ffffffffffffffffffffffffffffffffffffffff166113ca61153b565b73ffffffffffffffffffffffffffffffffffffffff1614611420576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114179061431a565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f5481565b60105481565b61148f612495565b73ffffffffffffffffffffffffffffffffffffffff166114ad61153b565b73ffffffffffffffffffffffffffffffffffffffff1614611503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fa9061431a565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b611599612495565b73ffffffffffffffffffffffffffffffffffffffff166115b761153b565b73ffffffffffffffffffffffffffffffffffffffff161461160d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116049061431a565b60405180910390fd5b80600d60026101000a81548160ff02191690831515021790555050565b60606004805461163990614067565b80601f016020809104026020016040519081016040528092919081815260200182805461166590614067565b80156116b25780601f10611687576101008083540402835291602001916116b2565b820191906000526020600020905b81548152906001019060200180831161169557829003601f168201915b5050505050905090565b6116c4612495565b73ffffffffffffffffffffffffffffffffffffffff166116e261153b565b73ffffffffffffffffffffffffffffffffffffffff1614611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f9061431a565b60405180910390fd5b600081905080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b61178a612495565b73ffffffffffffffffffffffffffffffffffffffff166117a861153b565b73ffffffffffffffffffffffffffffffffffffffff16146117fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f59061431a565b60405180910390fd5b7f00000000000000000000000027bf8b39f850750c0d4ca8bc05b7c97859be162773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361188c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611883906143ac565b60405180910390fd5b6118968282613257565b5050565b600080600160006118a9612495565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195d9061443e565b60405180910390fd5b61197a611971612495565b8585840361249d565b600191505092915050565b6000611999611992612495565b8484612666565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b6119de612495565b73ffffffffffffffffffffffffffffffffffffffff166119fc61153b565b73ffffffffffffffffffffffffffffffffffffffff1614611a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a499061431a565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611aef9190613d06565b60405180910390a25050565b611b03612495565b73ffffffffffffffffffffffffffffffffffffffff16611b2161153b565b73ffffffffffffffffffffffffffffffffffffffff1614611b77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6e9061431a565b60405180910390fd5b60198484611b859190614159565b1115611bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbd906144aa565b60405180910390fd5b60198282611bd49190614159565b1115611c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0c906144aa565b60405180910390fd5b83600f8190555082601081905550601054600f54611c339190614159565b600e819055508160128190555080601381905550601354601254611c579190614159565b60118190555050505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611ca4612495565b73ffffffffffffffffffffffffffffffffffffffff1614611cc457600080fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611d219190613e70565b602060405180830381865afa158015611d3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6291906144df565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7316b13b49187830902bc194948a101f285f5cdedc836040518363ffffffff1660e01b8152600401611dd592919061418d565b6020604051808303816000875af1158015611df4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1891906141cb565b5050565b60095481565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611e7f9190613e70565b602060405180830381865afa158015611e9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec091906144df565b905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e611f0d612495565b306040518363ffffffff1660e01b8152600401611f2b92919061450c565b602060405180830381865afa158015611f48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6c91906144df565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd611fb4612495565b30846040518463ffffffff1660e01b8152600401611fd493929190614535565b6020604051808303816000875af1158015611ff3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201791906141cb565b5050565b6000612025612495565b73ffffffffffffffffffffffffffffffffffffffff1661204361153b565b73ffffffffffffffffffffffffffffffffffffffff1614612099576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120909061431a565b60405180910390fd5b620186a060016120a7610e19565b6120b1919061422c565b6120bb919061429d565b8210156120fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f4906145de565b60405180910390fd5b6103e8600561210a610e19565b612114919061422c565b61211e919061429d565b821115612160576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215790614670565b60405180910390fd5b81600a8190555060019050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b6000612233612495565b73ffffffffffffffffffffffffffffffffffffffff1661225161153b565b73ffffffffffffffffffffffffffffffffffffffff16146122a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229e9061431a565b60405180910390fd5b60018310156122eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e2906146dc565b60405180910390fd5b600182101561232f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612326906146dc565b60405180910390fd5b6103e861233a610e19565b84612345919061422c565b61234f919061429d565b6009819055506103e8612360610e19565b8361236b919061422c565b612375919061429d565b600b819055506001905092915050565b600d60039054906101000a900460ff1681565b6123a0612495565b73ffffffffffffffffffffffffffffffffffffffff166123be61153b565b73ffffffffffffffffffffffffffffffffffffffff1614612414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240b9061431a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247a9061476e565b60405180910390fd5b61248c81613191565b50565b600b5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361250c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250390614800565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361257b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257290614892565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126599190613c64565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036126d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cc90614924565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273b906149b6565b60405180910390fd5b6000810361275d57612758838360006132f8565b61318c565b600d60009054906101000a900460ff1615612c585761277a61153b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156127e857506127b861153b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128215750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561285b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128745750600660149054906101000a900460ff16155b15612c5757600d60019054906101000a900460ff1661296e57601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061292e5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61296d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296490614a22565b60405180910390fd5b5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a115750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ab857600954811115612a5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5290614ab4565b60405180910390fd5b600b54612a6783611234565b82612a729190614159565b1115612ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aaa90614b20565b60405180910390fd5b612c56565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b5b5750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612baa57600954811115612ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9c90614bb2565b60405180910390fd5b612c55565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c5457600b54612c0783611234565b82612c129190614159565b1115612c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4a90614b20565b60405180910390fd5b5b5b5b5b5b6000612c6330611234565b90506000600a548210159050808015612c885750600d60029054906101000a900460ff165b8015612ca15750600660149054906101000a900460ff16155b8015612cf75750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d4d5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612da35750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612de7576001600660146101000a81548160ff021916908315150217905550612dcb613577565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e9d5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612ea757600090505b6000811561317c57601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f0a57506000601154115b1561300557612f376064612f296011548861378490919063ffffffff16565b61379a90919063ffffffff16565b905060115460125482612f4a919061422c565b612f54919061429d565b60146000828254612f659190614159565b9250508190555060115460135482612f7d919061422c565b612f87919061429d565b60156000828254612f989190614159565b925050819055508085612fab91906141f8565b601960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ff991906141f8565b92505081905550613158565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561306057506000600e54115b156131575761308d606461307f600e548861378490919063ffffffff16565b61379a90919063ffffffff16565b9050600e54600f54826130a0919061422c565b6130aa919061429d565b601460008282546130bb9190614159565b92505081905550600e54601054826130d3919061422c565b6130dd919061429d565b601560008282546130ee9190614159565b92505081905550808561310191906141f8565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461314f9190614159565b925050819055505b5b600081111561316d5761316c8730836132f8565b5b808561317991906141f8565b94505b6131878787876132f8565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161335e90614924565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036133d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133cd906149b6565b60405180910390fd5b6133e18383836137b0565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345e90614c44565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134fa9190614159565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161355e9190613c64565b60405180910390a36135718484846137b5565b50505050565b600061358230611234565b905060006015546014546135969190614159565b90506000808314806135a85750600082145b156135b557505050613782565b6014600a546135c4919061422c565b8311156135dd576014600a546135da919061422c565b92505b6000600283601454866135f0919061422c565b6135fa919061429d565b613604919061429d565b9050600061361b82866137ba90919063ffffffff16565b9050600047905061362b826137d0565b600061364082476137ba90919063ffffffff16565b9050600061366b8761365d6015548561378490919063ffffffff16565b61379a90919063ffffffff16565b90506000818361367b91906141f8565b90506000601481905550600060158190555060008611801561369d5750600081115b156136ea576136ac8682613a0d565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185826014546040516136e193929190614c64565b60405180910390a15b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161373090614ccc565b60006040518083038185875af1925050503d806000811461376d576040519150601f19603f3d011682016040523d82523d6000602084013e613772565b606091505b5050809750505050505050505050505b565b60008183613792919061422c565b905092915050565b600081836137a8919061429d565b905092915050565b505050565b505050565b600081836137c891906141f8565b905092915050565b6000600267ffffffffffffffff8111156137ed576137ec614ce1565b5b60405190808252806020026020018201604052801561381b5781602001602082028036833780820191505090505b509050308160008151811061383357613832614d10565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138fc9190614d54565b816001815181106139105761390f614d10565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613975307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461249d565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016139d7959493929190614e7a565b600060405180830381600087803b1580156139f157600080fd5b505af1158015613a05573d6000803e3d6000fd5b505050505050565b613a38307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461249d565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613abf96959493929190614ed4565b60606040518083038185885af1158015613add573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613b029190614f35565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b43578082015181840152602081019050613b28565b60008484015250505050565b6000601f19601f8301169050919050565b6000613b6b82613b09565b613b758185613b14565b9350613b85818560208601613b25565b613b8e81613b4f565b840191505092915050565b60006020820190508181036000830152613bb38184613b60565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613beb82613bc0565b9050919050565b613bfb81613be0565b8114613c0657600080fd5b50565b600081359050613c1881613bf2565b92915050565b600060208284031215613c3457613c33613bbb565b5b6000613c4284828501613c09565b91505092915050565b6000819050919050565b613c5e81613c4b565b82525050565b6000602082019050613c796000830184613c55565b92915050565b613c8881613c4b565b8114613c9357600080fd5b50565b600081359050613ca581613c7f565b92915050565b60008060408385031215613cc257613cc1613bbb565b5b6000613cd085828601613c09565b9250506020613ce185828601613c96565b9150509250929050565b60008115159050919050565b613d0081613ceb565b82525050565b6000602082019050613d1b6000830184613cf7565b92915050565b6000819050919050565b6000613d46613d41613d3c84613bc0565b613d21565b613bc0565b9050919050565b6000613d5882613d2b565b9050919050565b6000613d6a82613d4d565b9050919050565b613d7a81613d5f565b82525050565b6000602082019050613d956000830184613d71565b92915050565b6000613da682613d4d565b9050919050565b613db681613d9b565b82525050565b6000602082019050613dd16000830184613dad565b92915050565b600080600060608486031215613df057613def613bbb565b5b6000613dfe86828701613c09565b9350506020613e0f86828701613c09565b9250506040613e2086828701613c96565b9150509250925092565b600060ff82169050919050565b613e4081613e2a565b82525050565b6000602082019050613e5b6000830184613e37565b92915050565b613e6a81613be0565b82525050565b6000602082019050613e856000830184613e61565b92915050565b613e9481613ceb565b8114613e9f57600080fd5b50565b600081359050613eb181613e8b565b92915050565b60008060408385031215613ece57613ecd613bbb565b5b6000613edc85828601613c09565b9250506020613eed85828601613ea2565b9150509250929050565b600060208284031215613f0d57613f0c613bbb565b5b6000613f1b84828501613ea2565b91505092915050565b60008060008060808587031215613f3e57613f3d613bbb565b5b6000613f4c87828801613c96565b9450506020613f5d87828801613c96565b9350506040613f6e87828801613c96565b9250506060613f7f87828801613c96565b91505092959194509250565b600060208284031215613fa157613fa0613bbb565b5b6000613faf84828501613c96565b91505092915050565b60008060408385031215613fcf57613fce613bbb565b5b6000613fdd85828601613c09565b9250506020613fee85828601613c09565b9150509250929050565b6000806040838503121561400f5761400e613bbb565b5b600061401d85828601613c96565b925050602061402e85828601613c96565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061407f57607f821691505b60208210810361409257614091614038565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006140f4602883613b14565b91506140ff82614098565b604082019050919050565b60006020820190508181036000830152614123816140e7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061416482613c4b565b915061416f83613c4b565b92508282019050808211156141875761418661412a565b5b92915050565b60006040820190506141a26000830185613e61565b6141af6020830184613c55565b9392505050565b6000815190506141c581613e8b565b92915050565b6000602082840312156141e1576141e0613bbb565b5b60006141ef848285016141b6565b91505092915050565b600061420382613c4b565b915061420e83613c4b565b92508282039050818111156142265761422561412a565b5b92915050565b600061423782613c4b565b915061424283613c4b565b925082820261425081613c4b565b915082820484148315176142675761426661412a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006142a882613c4b565b91506142b383613c4b565b9250826142c3576142c261426e565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614304602083613b14565b915061430f826142ce565b602082019050919050565b60006020820190508181036000830152614333816142f7565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614396603983613b14565b91506143a18261433a565b604082019050919050565b600060208201905081810360008301526143c581614389565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614428602583613b14565b9150614433826143cc565b604082019050919050565b600060208201905081810360008301526144578161441b565b9050919050565b7f4d757374206265206c6f776572207468616e2032352500000000000000000000600082015250565b6000614494601683613b14565b915061449f8261445e565b602082019050919050565b600060208201905081810360008301526144c381614487565b9050919050565b6000815190506144d981613c7f565b92915050565b6000602082840312156144f5576144f4613bbb565b5b6000614503848285016144ca565b91505092915050565b60006040820190506145216000830185613e61565b61452e6020830184613e61565b9392505050565b600060608201905061454a6000830186613e61565b6145576020830185613e61565b6145646040830184613c55565b949350505050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006145c8603583613b14565b91506145d38261456c565b604082019050919050565b600060208201905081810360008301526145f7816145bb565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061465a603483613b14565b9150614665826145fe565b604082019050919050565b600060208201905081810360008301526146898161464d565b9050919050565b7f4d75737420626520686967686572207468616e20302e31250000000000000000600082015250565b60006146c6601883613b14565b91506146d182614690565b602082019050919050565b600060208201905081810360008301526146f5816146b9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614758602683613b14565b9150614763826146fc565b604082019050919050565b600060208201905081810360008301526147878161474b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006147ea602483613b14565b91506147f58261478e565b604082019050919050565b60006020820190508181036000830152614819816147dd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061487c602283613b14565b915061488782614820565b604082019050919050565b600060208201905081810360008301526148ab8161486f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061490e602583613b14565b9150614919826148b2565b604082019050919050565b6000602082019050818103600083015261493d81614901565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006149a0602383613b14565b91506149ab82614944565b604082019050919050565b600060208201905081810360008301526149cf81614993565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614a0c601683613b14565b9150614a17826149d6565b602082019050919050565b60006020820190508181036000830152614a3b816149ff565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614a9e603583613b14565b9150614aa982614a42565b604082019050919050565b60006020820190508181036000830152614acd81614a91565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614b0a601383613b14565b9150614b1582614ad4565b602082019050919050565b60006020820190508181036000830152614b3981614afd565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614b9c603683613b14565b9150614ba782614b40565b604082019050919050565b60006020820190508181036000830152614bcb81614b8f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614c2e602683613b14565b9150614c3982614bd2565b604082019050919050565b60006020820190508181036000830152614c5d81614c21565b9050919050565b6000606082019050614c796000830186613c55565b614c866020830185613c55565b614c936040830184613c55565b949350505050565b600081905092915050565b50565b6000614cb6600083614c9b565b9150614cc182614ca6565b600082019050919050565b6000614cd782614ca9565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614d4e81613bf2565b92915050565b600060208284031215614d6a57614d69613bbb565b5b6000614d7884828501614d3f565b91505092915050565b6000819050919050565b6000614da6614da1614d9c84614d81565b613d21565b613c4b565b9050919050565b614db681614d8b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614df181613be0565b82525050565b6000614e038383614de8565b60208301905092915050565b6000602082019050919050565b6000614e2782614dbc565b614e318185614dc7565b9350614e3c83614dd8565b8060005b83811015614e6d578151614e548882614df7565b9750614e5f83614e0f565b925050600181019050614e40565b5085935050505092915050565b600060a082019050614e8f6000830188613c55565b614e9c6020830187614dad565b8181036040830152614eae8186614e1c565b9050614ebd6060830185613e61565b614eca6080830184613c55565b9695505050505050565b600060c082019050614ee96000830189613e61565b614ef66020830188613c55565b614f036040830187614dad565b614f106060830186614dad565b614f1d6080830185613e61565b614f2a60a0830184613c55565b979650505050505050565b600080600060608486031215614f4e57614f4d613bbb565b5b6000614f5c868287016144ca565b9350506020614f6d868287016144ca565b9250506040614f7e868287016144ca565b915050925092509256fea2646970667358221220ab544f12f0d055de2f6750d6641508433957c12de56f6f7a5a4ab585475b49cb64736f6c63430008110033

Deployed Bytecode Sourcemap

10159:14721:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3337:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11342:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4251:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11124:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11272:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10313:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10255:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3658:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11044:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11084;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4428:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10964:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3557:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4928:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10353:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10658:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24201:252;;;;;;;;;;;;;:::i;:::-;;16889:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10929:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10738:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23935:258;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3774:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;899:103;;;;;;;;;;;;;:::i;:::-;;15120:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15820:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10851:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10890:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13827:112;;;;;;;;;;;;;:::i;:::-;;676:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10430:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11004:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16083:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3445:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23584:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16381:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5151:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3909:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11548:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10698:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16191:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13947:704;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24647:228;;;;;;;;;;;;;:::i;:::-;;10493:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23810:117;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24461:178;;;;;;;;;;;;;:::i;:::-;;15311:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10461:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10817:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4092:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10535:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14659:453;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10776:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1010:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10575:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3337:100;3391:13;3424:5;3417:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3337:100;:::o;11342:48::-;;;;;;;;;;;;;;;;;:::o;4251:169::-;4334:4;4351:39;4360:12;:10;:12::i;:::-;4374:7;4383:6;4351:8;:39::i;:::-;4408:4;4401:11;;4251:169;;;;:::o;11124:27::-;;;;:::o;11272:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;10313:31::-;;;;;;;;;;;;;:::o;10255:51::-;;;:::o;3658:108::-;3719:7;3746:12;;3739:19;;3658:108;:::o;11044:33::-;;;;:::o;11084:::-;;;;:::o;4428:492::-;4568:4;4585:36;4595:6;4603:9;4614:6;4585:9;:36::i;:::-;4634:24;4661:11;:19;4673:6;4661:19;;;;;;;;;;;;;;;:33;4681:12;:10;:12::i;:::-;4661:33;;;;;;;;;;;;;;;;4634:60;;4733:6;4713:16;:26;;4705:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4820:57;4829:6;4837:12;:10;:12::i;:::-;4870:6;4851:16;:25;4820:8;:57::i;:::-;4908:4;4901:11;;;4428:492;;;;;:::o;10964:33::-;;;;:::o;3557:93::-;3615:5;3640:2;3633:9;;3557:93;:::o;4928:215::-;5016:4;5033:80;5042:12;:10;:12::i;:::-;5056:7;5102:10;5065:11;:25;5077:12;:10;:12::i;:::-;5065:25;;;;;;;;;;;;;;;:34;5091:7;5065:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5033:8;:80::i;:::-;5131:4;5124:11;;4928:215;;;;:::o;10353:38::-;;;:::o;10658:33::-;;;;;;;;;;;;;:::o;24201:252::-;24280:1;24244:32;24263:12;:10;:12::i;:::-;24244:18;:32::i;:::-;:37;;24236:46;;;;;;24295:14;24312:32;24331:12;:10;:12::i;:::-;24312:18;:32::i;:::-;24295:49;;24357:9;;;;;;;;;;;:18;;;24376:12;:10;:12::i;:::-;24390:6;24357:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24439:6;24408:13;:27;24422:12;:10;:12::i;:::-;24408:27;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;24225:228;24201:252::o;16889:126::-;16955:4;16979:19;:28;16999:7;16979:28;;;;;;;;;;;;;;;;;;;;;;;;;16972:35;;16889:126;;;:::o;10929:28::-;;;;:::o;10738:31::-;;;;;;;;;;;;;:::o;23935:258::-;24001:7;24021:23;24047:13;:22;24061:7;24047:22;;;;;;;;;;;;;;;;24021:48;;24080:23;24144:8;;24126:15;24106:17;:15;:17::i;:::-;:35;;;;:::i;:::-;:46;;;;:::i;:::-;24080:72;;24170:15;24163:22;;;;23935:258;;;:::o;3774:127::-;3848:7;3875:9;:18;3885:7;3875:18;;;;;;;;;;;;;;;;3868:25;;3774:127;;;:::o;899:103::-;822:12;:10;:12::i;:::-;811:23;;:7;:5;:7::i;:::-;:23;;;803:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;964:30:::1;991:1;964:18;:30::i;:::-;899:103::o:0;15120:121::-;15172:4;822:12;:10;:12::i;:::-;811:23;;:7;:5;:7::i;:::-;:23;;;803:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15206:5:::1;15189:14;;:22;;;;;;;;;;;;;;;;;;15229:4;15222:11;;15120:121:::0;:::o;15820:167::-;822:12;:10;:12::i;:::-;811:23;;:7;:5;:7::i;:::-;:23;;;803:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15975:4:::1;15933:31;:39;15965:6;15933:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;15820:167:::0;;:::o;10851:32::-;;;;:::o;10890:30::-;;;;:::o;13827:112::-;822:12;:10;:12::i;:::-;811:23;;:7;:5;:7::i;:::-;:23;;;803:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13898:4:::1;13882:13;;:20;;;;;;;;;;;;;;;;;;13927:4;13913:11;;:18;;;;;;;;;;;;;;;;;;13827:112::o:0;676:87::-;722:7;749:6;;;;;;;;;;;742:13;;676:87;:::o;10430:24::-;;;;;;;;;;;;;:::o;11004:31::-;;;;:::o;16083:100::-;822:12;:10;:12::i;:::-;811:23;;:7;:5;:7::i;:::-;:23;;;803:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16168:7:::1;16154:11;;:21;;;;;;;;;;;;;;;;;;16083:100:::0;:::o;3445:104::-;3501:13;3534:7;3527:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3445:104;:::o;23584:218::-;822:12;:10;:12::i;:::-;811:23;;:7;:5;:7::i;:::-;:23;;;803:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23669:29:::1;23730:14;23669:86;;23780:14;23768:9;;:26;;;;;;;;;;;;;;;;;;23656:146;23584:218:::0;:::o;16381:304::-;822:12;:10;:12::i;:::-;811:23;;:7;:5;:7::i;:::-;:23;;;803:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16525:13:::1;16517:21;;:4;:21;;::::0;16495:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16636:41;16665:4;16671:5;16636:28;:41::i;:::-;16381:304:::0;;:::o;5151:413::-;5244:4;5261:24;5288:11;:25;5300:12;:10;:12::i;:::-;5288:25;;;;;;;;;;;;;;;:34;5314:7;5288:34;;;;;;;;;;;;;;;;5261:61;;5361:15;5341:16;:35;;5333:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5454:67;5463:12;:10;:12::i;:::-;5477:7;5505:15;5486:16;:34;5454:8;:67::i;:::-;5552:4;5545:11;;;5151:413;;;;:::o;3909:175::-;3995:4;4012:42;4022:12;:10;:12::i;:::-;4036:9;4047:6;4012:9;:42::i;:::-;4072:4;4065:11;;3909:175;;;;:::o;11548:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;10698:33::-;;;;;;;;;;;;;:::o;16191:182::-;822:12;:10;:12::i;:::-;811:23;;:7;:5;:7::i;:::-;:23;;;803:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16307:8:::1;16276:19;:28;16296:7;16276:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16347:7;16331:34;;;16356:8;16331:34;;;;;;:::i;:::-;;;;;;;;16191:182:::0;;:::o;13947:704::-;822:12;:10;:12::i;:::-;811:23;;:7;:5;:7::i;:::-;:23;;;803:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14200:2:::1;14180:16;14161;:35;;;;:::i;:::-;:41;;14153:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;14289:2;14268:17;14248;:37;;;;:::i;:::-;:43;;14240:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;14359:16;14339:17;:36;;;;14404:16;14386:15;:34;;;;14466:15;;14446:17;;:35;;;;:::i;:::-;14431:12;:50;;;;14515:17;14494:18;:38;;;;14562:17;14543:16;:36;;;;14627:16;;14606:18;;:37;;;;:::i;:::-;14590:13;:53;;;;13947:704:::0;;;;:::o;24647:228::-;24715:9;;;;;;;;;;;24699:25;;:12;:10;:12::i;:::-;:25;;;24691:34;;;;;;24736:14;24753:9;;;;;;;;;;;:19;;;24781:4;24753:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24736:51;;24798:9;;;;;;;;;;;:18;;;24817:42;24860:6;24798:69;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24680:195;24647:228::o;10493:35::-;;;;:::o;23810:117::-;23858:7;23885:9;;;;;;;;;;;:19;;;23913:4;23885:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23878:41;;23810:117;:::o;24461:178::-;24498:14;24515:9;;;;;;;;;;;:19;;;24535:12;:10;:12::i;:::-;24557:4;24515:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24498:65;;24574:9;;;;;;;;;;;:22;;;24597:12;:10;:12::i;:::-;24618:4;24624:6;24574:57;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24487:152;24461:178::o;15311:497::-;15419:4;822:12;:10;:12::i;:::-;811:23;;:7;:5;:7::i;:::-;:23;;;803:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15498:6:::1;15493:1;15477:13;:11;:13::i;:::-;:17;;;;:::i;:::-;15476:28;;;;:::i;:::-;15463:9;:41;;15441:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;15653:4;15648:1;15632:13;:11;:13::i;:::-;:17;;;;:::i;:::-;15631:26;;;;:::i;:::-;15618:9;:39;;15596:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;15769:9;15748:18;:30;;;;15796:4;15789:11;;15311:497:::0;;;:::o;10461:23::-;;;;;;;;;;;;;:::o;10817:27::-;;;;:::o;4092:151::-;4181:7;4208:11;:18;4220:5;4208:18;;;;;;;;;;;;;;;:27;4227:7;4208:27;;;;;;;;;;;;;;;;4201:34;;4092:151;;;;:::o;10535:33::-;;;;:::o;14659:453::-;14768:4;822:12;:10;:12::i;:::-;811:23;;:7;:5;:7::i;:::-;:23;;;803:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14818:1:::1;14793:21;:26;;14785:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;14893:1;14867:22;:27;;14859:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15007:4;14991:13;:11;:13::i;:::-;14967:21;:37;;;;:::i;:::-;:44;;;;:::i;:::-;14944:20;:67;;;;15076:4;15060:13;:11;:13::i;:::-;15035:22;:38;;;;:::i;:::-;:45;;;;:::i;:::-;15023:9;:57;;;;15100:4;15093:11;;14659:453:::0;;;;:::o;10776:32::-;;;;;;;;;;;;;:::o;1010:201::-;822:12;:10;:12::i;:::-;811:23;;:7;:5;:7::i;:::-;:23;;;803:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1119:1:::1;1099:22;;:8;:22;;::::0;1091:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1175:28;1194:8;1175:18;:28::i;:::-;1010:201:::0;:::o;10575:24::-;;;;:::o;222:98::-;275:7;302:10;295:17;;222:98;:::o;7319:380::-;7472:1;7455:19;;:5;:19;;;7447:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7553:1;7534:21;;:7;:21;;;7526:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7637:6;7607:11;:18;7619:5;7607:18;;;;;;;;;;;;;;;:27;7626:7;7607:27;;;;;;;;;;;;;;;:36;;;;7675:7;7659:32;;7668:5;7659:32;;;7684:6;7659:32;;;;;;:::i;:::-;;;;;;;;7319:380;;;:::o;17023:3924::-;17171:1;17155:18;;:4;:18;;;17147:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17248:1;17234:16;;:2;:16;;;17226:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17317:1;17307:6;:11;17303:93;;17335:28;17351:4;17357:2;17361:1;17335:15;:28::i;:::-;17378:7;;17303:93;17412:14;;;;;;;;;;;17408:1694;;;17473:7;:5;:7::i;:::-;17465:15;;:4;:15;;;;:49;;;;;17507:7;:5;:7::i;:::-;17501:13;;:2;:13;;;;17465:49;:86;;;;;17549:1;17535:16;;:2;:16;;;;17465:86;:128;;;;;17586:6;17572:21;;:2;:21;;;;17465:128;:158;;;;;17615:8;;;;;;;;;;;17614:9;17465:158;17443:1648;;;17663:13;;;;;;;;;;;17658:223;;17735:19;:25;17755:4;17735:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;17764:19;:23;17784:2;17764:23;;;;;;;;;;;;;;;;;;;;;;;;;17735:52;17701:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;17658:223;17955:25;:31;17981:4;17955:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;18012:31;:35;18044:2;18012:35;;;;;;;;;;;;;;;;;;;;;;;;;18011:36;17955:92;17929:1147;;;18134:20;;18124:6;:30;;18090:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;18342:9;;18325:13;18335:2;18325:9;:13::i;:::-;18316:6;:22;;;;:::i;:::-;:35;;18282:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;17929:1147;;;18520:25;:29;18546:2;18520:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;18575:31;:37;18607:4;18575:37;;;;;;;;;;;;;;;;;;;;;;;;;18574:38;18520:92;18494:582;;;18699:20;;18689:6;:30;;18655:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;18494:582;;;18856:31;:35;18888:2;18856:35;;;;;;;;;;;;;;;;;;;;;;;;;18851:225;;18976:9;;18959:13;18969:2;18959:9;:13::i;:::-;18950:6;:22;;;;:::i;:::-;:35;;18916:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;18851:225;18494:582;17929:1147;17443:1648;17408:1694;19114:28;19145:24;19163:4;19145:9;:24::i;:::-;19114:55;;19182:12;19221:18;;19197:20;:42;;19182:57;;19270:7;:35;;;;;19294:11;;;;;;;;;;;19270:35;:61;;;;;19323:8;;;;;;;;;;;19322:9;19270:61;:110;;;;;19349:25;:31;19375:4;19349:31;;;;;;;;;;;;;;;;;;;;;;;;;19348:32;19270:110;:153;;;;;19398:19;:25;19418:4;19398:25;;;;;;;;;;;;;;;;;;;;;;;;;19397:26;19270:153;:194;;;;;19441:19;:23;19461:2;19441:23;;;;;;;;;;;;;;;;;;;;;;;;;19440:24;19270:194;19252:326;;;19502:4;19491:8;;:15;;;;;;;;;;;;;;;;;;19523:10;:8;:10::i;:::-;19561:5;19550:8;;:16;;;;;;;;;;;;;;;;;;19252:326;19590:12;19606:8;;;;;;;;;;;19605:9;19590:24;;19716:19;:25;19736:4;19716:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19745:19;:23;19765:2;19745:23;;;;;;;;;;;;;;;;;;;;;;;;;19716:52;19712:100;;;19795:5;19785:15;;19712:100;19824:12;19929:7;19925:969;;;19981:25;:29;20007:2;19981:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;20030:1;20014:13;;:17;19981:50;19977:754;;;20059:34;20089:3;20059:25;20070:13;;20059:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;20052:41;;20164:13;;20142:18;;20135:4;:25;;;;:::i;:::-;20134:43;;;;:::i;:::-;20112:18;;:65;;;;;;;:::i;:::-;;;;;;;;20246:13;;20226:16;;20219:4;:23;;;;:::i;:::-;20218:41;;;;:::i;:::-;20196:18;;:63;;;;;;;:::i;:::-;;;;;;;;20313:4;20306:6;:11;;;;:::i;:::-;20283:13;:19;20297:4;20283:19;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;19977:754;;;20390:25;:31;20416:4;20390:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;20440:1;20425:12;;:16;20390:51;20386:345;;;20469:33;20498:3;20469:24;20480:12;;20469:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;20462:40;;20572:12;;20551:17;;20544:4;:24;;;;:::i;:::-;20543:41;;;;:::i;:::-;20521:18;;:63;;;;;;;:::i;:::-;;;;;;;;20652:12;;20633:15;;20626:4;:22;;;;:::i;:::-;20625:39;;;;:::i;:::-;20603:18;;:61;;;;;;;:::i;:::-;;;;;;;;20711:4;20704:6;:11;;;;:::i;:::-;20683:13;:17;20697:2;20683:17;;;;;;;;;;;;;;;;:32;;;;;;;:::i;:::-;;;;;;;;20386:345;19977:754;20758:1;20751:4;:8;20747:91;;;20780:42;20796:4;20810;20817;20780:15;:42::i;:::-;20747:91;20864:4;20854:14;;;;;:::i;:::-;;;19925:969;20906:33;20922:4;20928:2;20932:6;20906:15;:33::i;:::-;17136:3811;;;;17023:3924;;;;:::o;1217:191::-;1291:16;1310:6;;;;;;;;;;;1291:25;;1336:8;1327:6;;:17;;;;;;;;;;;;;;;;;;1391:8;1360:40;;1381:8;1360:40;;;;;;;;;;;;1280:128;1217:191;:::o;16693:188::-;16810:5;16776:25;:31;16802:4;16776:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16867:5;16833:40;;16861:4;16833:40;;;;;;;;;;;;16693:188;;:::o;5572:733::-;5730:1;5712:20;;:6;:20;;;5704:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5814:1;5793:23;;:9;:23;;;5785:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5869:47;5890:6;5898:9;5909:6;5869:20;:47::i;:::-;5929:21;5953:9;:17;5963:6;5953:17;;;;;;;;;;;;;;;;5929:41;;6006:6;5989:13;:23;;5981:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6127:6;6111:13;:22;6091:9;:17;6101:6;6091:17;;;;;;;;;;;;;;;:42;;;;6179:6;6155:9;:20;6165:9;6155:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6220:9;6203:35;;6212:6;6203:35;;;6231:6;6203:35;;;;;;:::i;:::-;;;;;;;;6251:46;6271:6;6279:9;6290:6;6251:19;:46::i;:::-;5693:612;5572:733;;;:::o;22074:1502::-;22113:23;22139:24;22157:4;22139:9;:24::i;:::-;22113:50;;22174:25;22223:18;;22202;;:39;;;;:::i;:::-;22174:67;;22252:12;22300:1;22281:15;:20;:46;;;;22326:1;22305:17;:22;22281:46;22277:85;;;22344:7;;;;;22277:85;22417:2;22396:18;;:23;;;;:::i;:::-;22378:15;:41;22374:115;;;22475:2;22454:18;;:23;;;;:::i;:::-;22436:41;;22374:115;22550:23;22637:1;22617:17;22595:18;;22577:15;:36;;;;:::i;:::-;22576:58;;;;:::i;:::-;:62;;;;:::i;:::-;22550:88;;22649:26;22678:36;22698:15;22678;:19;;:36;;;;:::i;:::-;22649:65;;22727:25;22755:21;22727:49;;22789:36;22806:18;22789:16;:36::i;:::-;22838:18;22859:44;22885:17;22859:21;:25;;:44;;;;:::i;:::-;22838:65;;22920:23;22946:57;22985:17;22946:34;22961:18;;22946:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;22920:83;;23016:23;23055:15;23042:10;:28;;;;:::i;:::-;23016:54;;23104:1;23083:18;:22;;;;23137:1;23116:18;:22;;;;23173:1;23155:15;:19;:42;;;;;23196:1;23178:15;:19;23155:42;23151:278;;;23214:46;23227:15;23244;23214:12;:46::i;:::-;23280:137;23313:18;23350:15;23384:18;;23280:137;;;;;;;;:::i;:::-;;;;;;;;23151:278;23519:9;;;;;;;;;;;23511:23;;23542:21;23511:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23497:71;;;;;22102:1474;;;;;;;;;22074:1502;:::o;8207:98::-;8265:7;8296:1;8292;:5;;;;:::i;:::-;8285:12;;8207:98;;;;:::o;8313:::-;8371:7;8402:1;8398;:5;;;;:::i;:::-;8391:12;;8313:98;;;;:::o;7707:125::-;;;;:::o;7840:124::-;;;;:::o;8101:98::-;8159:7;8190:1;8186;:5;;;;:::i;:::-;8179:12;;8101:98;;;;:::o;20955:589::-;21081:21;21119:1;21105:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21081:40;;21150:4;21132;21137:1;21132:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21176:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21166:4;21171:1;21166:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;21211:62;21228:4;21243:15;21261:11;21211:8;:62::i;:::-;21312:15;:66;;;21393:11;21419:1;21463:4;21490;21510:15;21312:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21010:534;20955:589;:::o;21552:514::-;21700:62;21717:4;21732:15;21750:11;21700:8;:62::i;:::-;21805:15;:31;;;21844:9;21877:4;21897:11;21923:1;21966;22009:8;;;;;;;;;;;22032:15;21805:253;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21552:514;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:329::-;2242:6;2291:2;2279:9;2270:7;2266:23;2262:32;2259:119;;;2297:79;;:::i;:::-;2259:119;2417:1;2442:53;2487:7;2478:6;2467:9;2463:22;2442:53;:::i;:::-;2432:63;;2388:117;2183:329;;;;:::o;2518:77::-;2555:7;2584:5;2573:16;;2518:77;;;:::o;2601:118::-;2688:24;2706:5;2688:24;:::i;:::-;2683:3;2676:37;2601:118;;:::o;2725:222::-;2818:4;2856:2;2845:9;2841:18;2833:26;;2869:71;2937:1;2926:9;2922:17;2913:6;2869:71;:::i;:::-;2725:222;;;;:::o;2953:122::-;3026:24;3044:5;3026:24;:::i;:::-;3019:5;3016:35;3006:63;;3065:1;3062;3055:12;3006:63;2953:122;:::o;3081:139::-;3127:5;3165:6;3152:20;3143:29;;3181:33;3208:5;3181:33;:::i;:::-;3081:139;;;;:::o;3226:474::-;3294:6;3302;3351:2;3339:9;3330:7;3326:23;3322:32;3319:119;;;3357:79;;:::i;:::-;3319:119;3477:1;3502:53;3547:7;3538:6;3527:9;3523:22;3502:53;:::i;:::-;3492:63;;3448:117;3604:2;3630:53;3675:7;3666:6;3655:9;3651:22;3630:53;:::i;:::-;3620:63;;3575:118;3226:474;;;;;:::o;3706:90::-;3740:7;3783:5;3776:13;3769:21;3758:32;;3706:90;;;:::o;3802:109::-;3883:21;3898:5;3883:21;:::i;:::-;3878:3;3871:34;3802:109;;:::o;3917:210::-;4004:4;4042:2;4031:9;4027:18;4019:26;;4055:65;4117:1;4106:9;4102:17;4093:6;4055:65;:::i;:::-;3917:210;;;;:::o;4133:60::-;4161:3;4182:5;4175:12;;4133:60;;;:::o;4199:142::-;4249:9;4282:53;4300:34;4309:24;4327:5;4309:24;:::i;:::-;4300:34;:::i;:::-;4282:53;:::i;:::-;4269:66;;4199:142;;;:::o;4347:126::-;4397:9;4430:37;4461:5;4430:37;:::i;:::-;4417:50;;4347:126;;;:::o;4479:148::-;4551:9;4584:37;4615:5;4584:37;:::i;:::-;4571:50;;4479:148;;;:::o;4633:175::-;4742:59;4795:5;4742:59;:::i;:::-;4737:3;4730:72;4633:175;;:::o;4814:266::-;4929:4;4967:2;4956:9;4952:18;4944:26;;4980:93;5070:1;5059:9;5055:17;5046:6;4980:93;:::i;:::-;4814:266;;;;:::o;5086:152::-;5162:9;5195:37;5226:5;5195:37;:::i;:::-;5182:50;;5086:152;;;:::o;5244:183::-;5357:63;5414:5;5357:63;:::i;:::-;5352:3;5345:76;5244:183;;:::o;5433:274::-;5552:4;5590:2;5579:9;5575:18;5567:26;;5603:97;5697:1;5686:9;5682:17;5673:6;5603:97;:::i;:::-;5433:274;;;;:::o;5713:619::-;5790:6;5798;5806;5855:2;5843:9;5834:7;5830:23;5826:32;5823:119;;;5861:79;;:::i;:::-;5823:119;5981:1;6006:53;6051:7;6042:6;6031:9;6027:22;6006:53;:::i;:::-;5996:63;;5952:117;6108:2;6134:53;6179:7;6170:6;6159:9;6155:22;6134:53;:::i;:::-;6124:63;;6079:118;6236:2;6262:53;6307:7;6298:6;6287:9;6283:22;6262:53;:::i;:::-;6252:63;;6207:118;5713:619;;;;;:::o;6338:86::-;6373:7;6413:4;6406:5;6402:16;6391:27;;6338:86;;;:::o;6430:112::-;6513:22;6529:5;6513:22;:::i;:::-;6508:3;6501:35;6430:112;;:::o;6548:214::-;6637:4;6675:2;6664:9;6660:18;6652:26;;6688:67;6752:1;6741:9;6737:17;6728:6;6688:67;:::i;:::-;6548:214;;;;:::o;6768:118::-;6855:24;6873:5;6855:24;:::i;:::-;6850:3;6843:37;6768:118;;:::o;6892:222::-;6985:4;7023:2;7012:9;7008:18;7000:26;;7036:71;7104:1;7093:9;7089:17;7080:6;7036:71;:::i;:::-;6892:222;;;;:::o;7120:116::-;7190:21;7205:5;7190:21;:::i;:::-;7183:5;7180:32;7170:60;;7226:1;7223;7216:12;7170:60;7120:116;:::o;7242:133::-;7285:5;7323:6;7310:20;7301:29;;7339:30;7363:5;7339:30;:::i;:::-;7242:133;;;;:::o;7381:468::-;7446:6;7454;7503:2;7491:9;7482:7;7478:23;7474:32;7471:119;;;7509:79;;:::i;:::-;7471:119;7629:1;7654:53;7699:7;7690:6;7679:9;7675:22;7654:53;:::i;:::-;7644:63;;7600:117;7756:2;7782:50;7824:7;7815:6;7804:9;7800:22;7782:50;:::i;:::-;7772:60;;7727:115;7381:468;;;;;:::o;7855:323::-;7911:6;7960:2;7948:9;7939:7;7935:23;7931:32;7928:119;;;7966:79;;:::i;:::-;7928:119;8086:1;8111:50;8153:7;8144:6;8133:9;8129:22;8111:50;:::i;:::-;8101:60;;8057:114;7855:323;;;;:::o;8184:765::-;8270:6;8278;8286;8294;8343:3;8331:9;8322:7;8318:23;8314:33;8311:120;;;8350:79;;:::i;:::-;8311:120;8470:1;8495:53;8540:7;8531:6;8520:9;8516:22;8495:53;:::i;:::-;8485:63;;8441:117;8597:2;8623:53;8668:7;8659:6;8648:9;8644:22;8623:53;:::i;:::-;8613:63;;8568:118;8725:2;8751:53;8796:7;8787:6;8776:9;8772:22;8751:53;:::i;:::-;8741:63;;8696:118;8853:2;8879:53;8924:7;8915:6;8904:9;8900:22;8879:53;:::i;:::-;8869:63;;8824:118;8184:765;;;;;;;:::o;8955:329::-;9014:6;9063:2;9051:9;9042:7;9038:23;9034:32;9031:119;;;9069:79;;:::i;:::-;9031:119;9189:1;9214:53;9259:7;9250:6;9239:9;9235:22;9214:53;:::i;:::-;9204:63;;9160:117;8955:329;;;;:::o;9290:474::-;9358:6;9366;9415:2;9403:9;9394:7;9390:23;9386:32;9383:119;;;9421:79;;:::i;:::-;9383:119;9541:1;9566:53;9611:7;9602:6;9591:9;9587:22;9566:53;:::i;:::-;9556:63;;9512:117;9668:2;9694:53;9739:7;9730:6;9719:9;9715:22;9694:53;:::i;:::-;9684:63;;9639:118;9290:474;;;;;:::o;9770:::-;9838:6;9846;9895:2;9883:9;9874:7;9870:23;9866:32;9863:119;;;9901:79;;:::i;:::-;9863:119;10021:1;10046:53;10091:7;10082:6;10071:9;10067:22;10046:53;:::i;:::-;10036:63;;9992:117;10148:2;10174:53;10219:7;10210:6;10199:9;10195:22;10174:53;:::i;:::-;10164:63;;10119:118;9770:474;;;;;:::o;10250:180::-;10298:77;10295:1;10288:88;10395:4;10392:1;10385:15;10419:4;10416:1;10409:15;10436:320;10480:6;10517:1;10511:4;10507:12;10497:22;;10564:1;10558:4;10554:12;10585:18;10575:81;;10641:4;10633:6;10629:17;10619:27;;10575:81;10703:2;10695:6;10692:14;10672:18;10669:38;10666:84;;10722:18;;:::i;:::-;10666:84;10487:269;10436:320;;;:::o;10762:227::-;10902:34;10898:1;10890:6;10886:14;10879:58;10971:10;10966:2;10958:6;10954:15;10947:35;10762:227;:::o;10995:366::-;11137:3;11158:67;11222:2;11217:3;11158:67;:::i;:::-;11151:74;;11234:93;11323:3;11234:93;:::i;:::-;11352:2;11347:3;11343:12;11336:19;;10995:366;;;:::o;11367:419::-;11533:4;11571:2;11560:9;11556:18;11548:26;;11620:9;11614:4;11610:20;11606:1;11595:9;11591:17;11584:47;11648:131;11774:4;11648:131;:::i;:::-;11640:139;;11367:419;;;:::o;11792:180::-;11840:77;11837:1;11830:88;11937:4;11934:1;11927:15;11961:4;11958:1;11951:15;11978:191;12018:3;12037:20;12055:1;12037:20;:::i;:::-;12032:25;;12071:20;12089:1;12071:20;:::i;:::-;12066:25;;12114:1;12111;12107:9;12100:16;;12135:3;12132:1;12129:10;12126:36;;;12142:18;;:::i;:::-;12126:36;11978:191;;;;:::o;12175:332::-;12296:4;12334:2;12323:9;12319:18;12311:26;;12347:71;12415:1;12404:9;12400:17;12391:6;12347:71;:::i;:::-;12428:72;12496:2;12485:9;12481:18;12472:6;12428:72;:::i;:::-;12175:332;;;;;:::o;12513:137::-;12567:5;12598:6;12592:13;12583:22;;12614:30;12638:5;12614:30;:::i;:::-;12513:137;;;;:::o;12656:345::-;12723:6;12772:2;12760:9;12751:7;12747:23;12743:32;12740:119;;;12778:79;;:::i;:::-;12740:119;12898:1;12923:61;12976:7;12967:6;12956:9;12952:22;12923:61;:::i;:::-;12913:71;;12869:125;12656:345;;;;:::o;13007:194::-;13047:4;13067:20;13085:1;13067:20;:::i;:::-;13062:25;;13101:20;13119:1;13101:20;:::i;:::-;13096:25;;13145:1;13142;13138:9;13130:17;;13169:1;13163:4;13160:11;13157:37;;;13174:18;;:::i;:::-;13157:37;13007:194;;;;:::o;13207:410::-;13247:7;13270:20;13288:1;13270:20;:::i;:::-;13265:25;;13304:20;13322:1;13304:20;:::i;:::-;13299:25;;13359:1;13356;13352:9;13381:30;13399:11;13381:30;:::i;:::-;13370:41;;13560:1;13551:7;13547:15;13544:1;13541:22;13521:1;13514:9;13494:83;13471:139;;13590:18;;:::i;:::-;13471:139;13255:362;13207:410;;;;:::o;13623:180::-;13671:77;13668:1;13661:88;13768:4;13765:1;13758:15;13792:4;13789:1;13782:15;13809:185;13849:1;13866:20;13884:1;13866:20;:::i;:::-;13861:25;;13900:20;13918:1;13900:20;:::i;:::-;13895:25;;13939:1;13929:35;;13944:18;;:::i;:::-;13929:35;13986:1;13983;13979:9;13974:14;;13809:185;;;;:::o;14000:182::-;14140:34;14136:1;14128:6;14124:14;14117:58;14000:182;:::o;14188:366::-;14330:3;14351:67;14415:2;14410:3;14351:67;:::i;:::-;14344:74;;14427:93;14516:3;14427:93;:::i;:::-;14545:2;14540:3;14536:12;14529:19;;14188:366;;;:::o;14560:419::-;14726:4;14764:2;14753:9;14749:18;14741:26;;14813:9;14807:4;14803:20;14799:1;14788:9;14784:17;14777:47;14841:131;14967:4;14841:131;:::i;:::-;14833:139;;14560:419;;;:::o;14985:244::-;15125:34;15121:1;15113:6;15109:14;15102:58;15194:27;15189:2;15181:6;15177:15;15170:52;14985:244;:::o;15235:366::-;15377:3;15398:67;15462:2;15457:3;15398:67;:::i;:::-;15391:74;;15474:93;15563:3;15474:93;:::i;:::-;15592:2;15587:3;15583:12;15576:19;;15235:366;;;:::o;15607:419::-;15773:4;15811:2;15800:9;15796:18;15788:26;;15860:9;15854:4;15850:20;15846:1;15835:9;15831:17;15824:47;15888:131;16014:4;15888:131;:::i;:::-;15880:139;;15607:419;;;:::o;16032:224::-;16172:34;16168:1;16160:6;16156:14;16149:58;16241:7;16236:2;16228:6;16224:15;16217:32;16032:224;:::o;16262:366::-;16404:3;16425:67;16489:2;16484:3;16425:67;:::i;:::-;16418:74;;16501:93;16590:3;16501:93;:::i;:::-;16619:2;16614:3;16610:12;16603:19;;16262:366;;;:::o;16634:419::-;16800:4;16838:2;16827:9;16823:18;16815:26;;16887:9;16881:4;16877:20;16873:1;16862:9;16858:17;16851:47;16915:131;17041:4;16915:131;:::i;:::-;16907:139;;16634:419;;;:::o;17059:172::-;17199:24;17195:1;17187:6;17183:14;17176:48;17059:172;:::o;17237:366::-;17379:3;17400:67;17464:2;17459:3;17400:67;:::i;:::-;17393:74;;17476:93;17565:3;17476:93;:::i;:::-;17594:2;17589:3;17585:12;17578:19;;17237:366;;;:::o;17609:419::-;17775:4;17813:2;17802:9;17798:18;17790:26;;17862:9;17856:4;17852:20;17848:1;17837:9;17833:17;17826:47;17890:131;18016:4;17890:131;:::i;:::-;17882:139;;17609:419;;;:::o;18034:143::-;18091:5;18122:6;18116:13;18107:22;;18138:33;18165:5;18138:33;:::i;:::-;18034:143;;;;:::o;18183:351::-;18253:6;18302:2;18290:9;18281:7;18277:23;18273:32;18270:119;;;18308:79;;:::i;:::-;18270:119;18428:1;18453:64;18509:7;18500:6;18489:9;18485:22;18453:64;:::i;:::-;18443:74;;18399:128;18183:351;;;;:::o;18540:332::-;18661:4;18699:2;18688:9;18684:18;18676:26;;18712:71;18780:1;18769:9;18765:17;18756:6;18712:71;:::i;:::-;18793:72;18861:2;18850:9;18846:18;18837:6;18793:72;:::i;:::-;18540:332;;;;;:::o;18878:442::-;19027:4;19065:2;19054:9;19050:18;19042:26;;19078:71;19146:1;19135:9;19131:17;19122:6;19078:71;:::i;:::-;19159:72;19227:2;19216:9;19212:18;19203:6;19159:72;:::i;:::-;19241;19309:2;19298:9;19294:18;19285:6;19241:72;:::i;:::-;18878:442;;;;;;:::o;19326:240::-;19466:34;19462:1;19454:6;19450:14;19443:58;19535:23;19530:2;19522:6;19518:15;19511:48;19326:240;:::o;19572:366::-;19714:3;19735:67;19799:2;19794:3;19735:67;:::i;:::-;19728:74;;19811:93;19900:3;19811:93;:::i;:::-;19929:2;19924:3;19920:12;19913:19;;19572:366;;;:::o;19944:419::-;20110:4;20148:2;20137:9;20133:18;20125:26;;20197:9;20191:4;20187:20;20183:1;20172:9;20168:17;20161:47;20225:131;20351:4;20225:131;:::i;:::-;20217:139;;19944:419;;;:::o;20369:239::-;20509:34;20505:1;20497:6;20493:14;20486:58;20578:22;20573:2;20565:6;20561:15;20554:47;20369:239;:::o;20614:366::-;20756:3;20777:67;20841:2;20836:3;20777:67;:::i;:::-;20770:74;;20853:93;20942:3;20853:93;:::i;:::-;20971:2;20966:3;20962:12;20955:19;;20614:366;;;:::o;20986:419::-;21152:4;21190:2;21179:9;21175:18;21167:26;;21239:9;21233:4;21229:20;21225:1;21214:9;21210:17;21203:47;21267:131;21393:4;21267:131;:::i;:::-;21259:139;;20986:419;;;:::o;21411:174::-;21551:26;21547:1;21539:6;21535:14;21528:50;21411:174;:::o;21591:366::-;21733:3;21754:67;21818:2;21813:3;21754:67;:::i;:::-;21747:74;;21830:93;21919:3;21830:93;:::i;:::-;21948:2;21943:3;21939:12;21932:19;;21591:366;;;:::o;21963:419::-;22129:4;22167:2;22156:9;22152:18;22144:26;;22216:9;22210:4;22206:20;22202:1;22191:9;22187:17;22180:47;22244:131;22370:4;22244:131;:::i;:::-;22236:139;;21963:419;;;:::o;22388:225::-;22528:34;22524:1;22516:6;22512:14;22505:58;22597:8;22592:2;22584:6;22580:15;22573:33;22388:225;:::o;22619:366::-;22761:3;22782:67;22846:2;22841:3;22782:67;:::i;:::-;22775:74;;22858:93;22947:3;22858:93;:::i;:::-;22976:2;22971:3;22967:12;22960:19;;22619:366;;;:::o;22991:419::-;23157:4;23195:2;23184:9;23180:18;23172:26;;23244:9;23238:4;23234:20;23230:1;23219:9;23215:17;23208:47;23272:131;23398:4;23272:131;:::i;:::-;23264:139;;22991:419;;;:::o;23416:223::-;23556:34;23552:1;23544:6;23540:14;23533:58;23625:6;23620:2;23612:6;23608:15;23601:31;23416:223;:::o;23645:366::-;23787:3;23808:67;23872:2;23867:3;23808:67;:::i;:::-;23801:74;;23884:93;23973:3;23884:93;:::i;:::-;24002:2;23997:3;23993:12;23986:19;;23645:366;;;:::o;24017:419::-;24183:4;24221:2;24210:9;24206:18;24198:26;;24270:9;24264:4;24260:20;24256:1;24245:9;24241:17;24234:47;24298:131;24424:4;24298:131;:::i;:::-;24290:139;;24017:419;;;:::o;24442:221::-;24582:34;24578:1;24570:6;24566:14;24559:58;24651:4;24646:2;24638:6;24634:15;24627:29;24442:221;:::o;24669:366::-;24811:3;24832:67;24896:2;24891:3;24832:67;:::i;:::-;24825:74;;24908:93;24997:3;24908:93;:::i;:::-;25026:2;25021:3;25017:12;25010:19;;24669:366;;;:::o;25041:419::-;25207:4;25245:2;25234:9;25230:18;25222:26;;25294:9;25288:4;25284:20;25280:1;25269:9;25265:17;25258:47;25322:131;25448:4;25322:131;:::i;:::-;25314:139;;25041:419;;;:::o;25466:224::-;25606:34;25602:1;25594:6;25590:14;25583:58;25675:7;25670:2;25662:6;25658:15;25651:32;25466:224;:::o;25696:366::-;25838:3;25859:67;25923:2;25918:3;25859:67;:::i;:::-;25852:74;;25935:93;26024:3;25935:93;:::i;:::-;26053:2;26048:3;26044:12;26037:19;;25696:366;;;:::o;26068:419::-;26234:4;26272:2;26261:9;26257:18;26249:26;;26321:9;26315:4;26311:20;26307:1;26296:9;26292:17;26285:47;26349:131;26475:4;26349:131;:::i;:::-;26341:139;;26068:419;;;:::o;26493:222::-;26633:34;26629:1;26621:6;26617:14;26610:58;26702:5;26697:2;26689:6;26685:15;26678:30;26493:222;:::o;26721:366::-;26863:3;26884:67;26948:2;26943:3;26884:67;:::i;:::-;26877:74;;26960:93;27049:3;26960:93;:::i;:::-;27078:2;27073:3;27069:12;27062:19;;26721:366;;;:::o;27093:419::-;27259:4;27297:2;27286:9;27282:18;27274:26;;27346:9;27340:4;27336:20;27332:1;27321:9;27317:17;27310:47;27374:131;27500:4;27374:131;:::i;:::-;27366:139;;27093:419;;;:::o;27518:172::-;27658:24;27654:1;27646:6;27642:14;27635:48;27518:172;:::o;27696:366::-;27838:3;27859:67;27923:2;27918:3;27859:67;:::i;:::-;27852:74;;27935:93;28024:3;27935:93;:::i;:::-;28053:2;28048:3;28044:12;28037:19;;27696:366;;;:::o;28068:419::-;28234:4;28272:2;28261:9;28257:18;28249:26;;28321:9;28315:4;28311:20;28307:1;28296:9;28292:17;28285:47;28349:131;28475:4;28349:131;:::i;:::-;28341:139;;28068:419;;;:::o;28493:240::-;28633:34;28629:1;28621:6;28617:14;28610:58;28702:23;28697:2;28689:6;28685:15;28678:48;28493:240;:::o;28739:366::-;28881:3;28902:67;28966:2;28961:3;28902:67;:::i;:::-;28895:74;;28978:93;29067:3;28978:93;:::i;:::-;29096:2;29091:3;29087:12;29080:19;;28739:366;;;:::o;29111:419::-;29277:4;29315:2;29304:9;29300:18;29292:26;;29364:9;29358:4;29354:20;29350:1;29339:9;29335:17;29328:47;29392:131;29518:4;29392:131;:::i;:::-;29384:139;;29111:419;;;:::o;29536:169::-;29676:21;29672:1;29664:6;29660:14;29653:45;29536:169;:::o;29711:366::-;29853:3;29874:67;29938:2;29933:3;29874:67;:::i;:::-;29867:74;;29950:93;30039:3;29950:93;:::i;:::-;30068:2;30063:3;30059:12;30052:19;;29711:366;;;:::o;30083:419::-;30249:4;30287:2;30276:9;30272:18;30264:26;;30336:9;30330:4;30326:20;30322:1;30311:9;30307:17;30300:47;30364:131;30490:4;30364:131;:::i;:::-;30356:139;;30083:419;;;:::o;30508:241::-;30648:34;30644:1;30636:6;30632:14;30625:58;30717:24;30712:2;30704:6;30700:15;30693:49;30508:241;:::o;30755:366::-;30897:3;30918:67;30982:2;30977:3;30918:67;:::i;:::-;30911:74;;30994:93;31083:3;30994:93;:::i;:::-;31112:2;31107:3;31103:12;31096:19;;30755:366;;;:::o;31127:419::-;31293:4;31331:2;31320:9;31316:18;31308:26;;31380:9;31374:4;31370:20;31366:1;31355:9;31351:17;31344:47;31408:131;31534:4;31408:131;:::i;:::-;31400:139;;31127:419;;;:::o;31552:225::-;31692:34;31688:1;31680:6;31676:14;31669:58;31761:8;31756:2;31748:6;31744:15;31737:33;31552:225;:::o;31783:366::-;31925:3;31946:67;32010:2;32005:3;31946:67;:::i;:::-;31939:74;;32022:93;32111:3;32022:93;:::i;:::-;32140:2;32135:3;32131:12;32124:19;;31783:366;;;:::o;32155:419::-;32321:4;32359:2;32348:9;32344:18;32336:26;;32408:9;32402:4;32398:20;32394:1;32383:9;32379:17;32372:47;32436:131;32562:4;32436:131;:::i;:::-;32428:139;;32155:419;;;:::o;32580:442::-;32729:4;32767:2;32756:9;32752:18;32744:26;;32780:71;32848:1;32837:9;32833:17;32824:6;32780:71;:::i;:::-;32861:72;32929:2;32918:9;32914:18;32905:6;32861:72;:::i;:::-;32943;33011:2;33000:9;32996:18;32987:6;32943:72;:::i;:::-;32580:442;;;;;;:::o;33028:147::-;33129:11;33166:3;33151:18;;33028:147;;;;:::o;33181:114::-;;:::o;33301:398::-;33460:3;33481:83;33562:1;33557:3;33481:83;:::i;:::-;33474:90;;33573:93;33662:3;33573:93;:::i;:::-;33691:1;33686:3;33682:11;33675:18;;33301:398;;;:::o;33705:379::-;33889:3;33911:147;34054:3;33911:147;:::i;:::-;33904:154;;34075:3;34068:10;;33705:379;;;:::o;34090:180::-;34138:77;34135:1;34128:88;34235:4;34232:1;34225:15;34259:4;34256:1;34249:15;34276:180;34324:77;34321:1;34314:88;34421:4;34418:1;34411:15;34445:4;34442:1;34435:15;34462:143;34519:5;34550:6;34544:13;34535:22;;34566:33;34593:5;34566:33;:::i;:::-;34462:143;;;;:::o;34611:351::-;34681:6;34730:2;34718:9;34709:7;34705:23;34701:32;34698:119;;;34736:79;;:::i;:::-;34698:119;34856:1;34881:64;34937:7;34928:6;34917:9;34913:22;34881:64;:::i;:::-;34871:74;;34827:128;34611:351;;;;:::o;34968:85::-;35013:7;35042:5;35031:16;;34968:85;;;:::o;35059:158::-;35117:9;35150:61;35168:42;35177:32;35203:5;35177:32;:::i;:::-;35168:42;:::i;:::-;35150:61;:::i;:::-;35137:74;;35059:158;;;:::o;35223:147::-;35318:45;35357:5;35318:45;:::i;:::-;35313:3;35306:58;35223:147;;:::o;35376:114::-;35443:6;35477:5;35471:12;35461:22;;35376:114;;;:::o;35496:184::-;35595:11;35629:6;35624:3;35617:19;35669:4;35664:3;35660:14;35645:29;;35496:184;;;;:::o;35686:132::-;35753:4;35776:3;35768:11;;35806:4;35801:3;35797:14;35789:22;;35686:132;;;:::o;35824:108::-;35901:24;35919:5;35901:24;:::i;:::-;35896:3;35889:37;35824:108;;:::o;35938:179::-;36007:10;36028:46;36070:3;36062:6;36028:46;:::i;:::-;36106:4;36101:3;36097:14;36083:28;;35938:179;;;;:::o;36123:113::-;36193:4;36225;36220:3;36216:14;36208:22;;36123:113;;;:::o;36272:732::-;36391:3;36420:54;36468:5;36420:54;:::i;:::-;36490:86;36569:6;36564:3;36490:86;:::i;:::-;36483:93;;36600:56;36650:5;36600:56;:::i;:::-;36679:7;36710:1;36695:284;36720:6;36717:1;36714:13;36695:284;;;36796:6;36790:13;36823:63;36882:3;36867:13;36823:63;:::i;:::-;36816:70;;36909:60;36962:6;36909:60;:::i;:::-;36899:70;;36755:224;36742:1;36739;36735:9;36730:14;;36695:284;;;36699:14;36995:3;36988:10;;36396:608;;;36272:732;;;;:::o;37010:831::-;37273:4;37311:3;37300:9;37296:19;37288:27;;37325:71;37393:1;37382:9;37378:17;37369:6;37325:71;:::i;:::-;37406:80;37482:2;37471:9;37467:18;37458:6;37406:80;:::i;:::-;37533:9;37527:4;37523:20;37518:2;37507:9;37503:18;37496:48;37561:108;37664:4;37655:6;37561:108;:::i;:::-;37553:116;;37679:72;37747:2;37736:9;37732:18;37723:6;37679:72;:::i;:::-;37761:73;37829:3;37818:9;37814:19;37805:6;37761:73;:::i;:::-;37010:831;;;;;;;;:::o;37847:807::-;38096:4;38134:3;38123:9;38119:19;38111:27;;38148:71;38216:1;38205:9;38201:17;38192:6;38148:71;:::i;:::-;38229:72;38297:2;38286:9;38282:18;38273:6;38229:72;:::i;:::-;38311:80;38387:2;38376:9;38372:18;38363:6;38311:80;:::i;:::-;38401;38477:2;38466:9;38462:18;38453:6;38401:80;:::i;:::-;38491:73;38559:3;38548:9;38544:19;38535:6;38491:73;:::i;:::-;38574;38642:3;38631:9;38627:19;38618:6;38574:73;:::i;:::-;37847:807;;;;;;;;;:::o;38660:663::-;38748:6;38756;38764;38813:2;38801:9;38792:7;38788:23;38784:32;38781:119;;;38819:79;;:::i;:::-;38781:119;38939:1;38964:64;39020:7;39011:6;39000:9;38996:22;38964:64;:::i;:::-;38954:74;;38910:128;39077:2;39103:64;39159:7;39150:6;39139:9;39135:22;39103:64;:::i;:::-;39093:74;;39048:129;39216:2;39242:64;39298:7;39289:6;39278:9;39274:22;39242:64;:::i;:::-;39232:74;;39187:129;38660:663;;;;;:::o

Swarm Source

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