ETH Price: $3,063.04 (+1.23%)
Gas: 5 Gwei

Token

Viral Crypto App (VCX)
 

Overview

Max Total Supply

27,020,401,250 VCX

Holders

874

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: VCX
Balance
0.00000000000842772 VCX

Value
$0.00
0x97d0c559350a2209d66c20a662e3c23eb088baca
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:
PlatformToken

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 2 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-29
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.7.6;

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

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

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

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

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

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

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

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

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

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

    function factory() external pure returns (address);

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

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

    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;

    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() external view virtual override returns (string memory) {
        return _name;
    }

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        external
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "ERC20: decreased allowance below zero"
            )
        );
        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");
        _balances[sender] = _balances[sender].sub(
            amount,
            "ERC20: transfer amount exceeds balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        _balances[account] = _balances[account].sub(
            amount,
            "ERC20: burn amount exceeds balance"
        );
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

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

interface VCDividendTracker {
    function excludeFromDividends(address account, bool reduceHolderCount)
        external;

    function updateClaimWait(uint256 newClaimWait) external;

    function updateMinimumToken(uint256 newMinimumToken) external;

    function minimumTokenBalanceForDividends() external view returns (uint256);

    function claimWait() external view returns (uint256);

    function totalDividendsDistributed() external view returns (uint256);

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

    function excludedFromDividends(address _account)
        external
        view
        returns (bool);

    function setBalance(address payable account, uint256 newBalance) external;

    function checkOwnership(address _owner) external view returns (bool);

    function withdrawableDividendOf(address _owner)
        external
        view
        returns (uint256);

    function getAccount(address _account)
        external
        view
        returns (
            address account,
            uint256 withdrawableDividends,
            uint256 totalDividends,
            uint256 lastClaimTime,
            uint256 nextClaimTime,
            uint256 secondsUntilAutoClaimAvailable
        );

    function processAccount(address payable account, bool automatic)
        external
        returns (bool);

    function getNumberOfTokenHolders() external view returns (uint256);
}

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

    IUniswapV2Router02 public uniswapV2Router;
    VCDividendTracker public dividendTracker;

    address public uniswapV2Pair;
    uint256 internal constant ONE = 10**18;
    address internal constant ZERO_ADDRESS =
        0x0000000000000000000000000000000000000000;
    address public WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;

    // store automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    struct dailyTransferedVest {
        uint256 lastTransfer;
        uint256 amount;
    }

    mapping(address => bool) public automatedMarketMakerPairs;
    mapping(address => bool) public automatedMarketMakerRouters;
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public isBlacklisted;
    mapping(address => bool) public vestedAddress;
    mapping(address => uint256) public initialVest;
    mapping(address => uint256) public transferedVest;
    mapping(address => uint256) private _lastTX;
    mapping(address => uint256) private _lastTransfer;
    mapping(address => uint256) private _lastDailyTransferedAmount;
    mapping(address => dailyTransferedVest) private _lastDailySoldVest;

    uint256 public nativeRewardsFeeForSelling;
    uint256 public projectFeeForSelling;
    uint256 public liquidityFeeForSelling;
    uint256 public nativeRewardsFeeForBuying;
    uint256 public projectFeeForBuying;
    uint256 public liquidityFeeForBuying;
    uint256 public nativeRewardsFeeForTransfering;
    uint256 public projectFeeForTransfering;
    uint256 public liquidityFeeForTransfering;
    uint256 private maxTXAmount;
    uint256 public swapTokensAtAmount;
    uint256 public totalFeesForSelling;
    uint256 public totalFeesForBuying;
    uint256 public totalFeesForTransfering;
    uint256 public firstLiveBlock;
    uint256 public firstLiveBlockNumber;
    uint256 public maxHoldings;
    uint256 public vestedSellLimit;
    uint256 public maximumDailyAmountToSell;
    uint256 public maxDailyVestToSell;

    bool public swapEnabled;
    bool public sendDividendsEnabled;
    bool public paused;
    bool public maxTXEnabled;
    bool public maxHoldingsEnabled;
    bool public antiSnipeBot;
    bool public cooldown;
    bool public buySellOnly;
    bool public takeFees;
    bool public dailyCoolDown;
    bool public dailyVestSellingCoolDownEnabled;
    bool public enableMaxDailySell;
    bool private swapping;

    address payable _projectWallet;

    event UpdateDividendTracker(
        address indexed newAddress,
        address indexed oldAddress
    );
    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event SwapETHForTokens(uint256 amountIn, address[] path);
    event SendDividends(uint256 amount);
    event MaxDailyAmountToSellChanged(uint256 oldAmount, uint256 newAmount);
    event MaxHoldingsChanged(
        uint256 oldHoldings,
        uint256 newHoldings,
        bool maxHoldingsEnabled
    );
    event VestedSellLimitChanged(uint256 oldLimit, uint256 newLimit);
    event FeesChanged(
        uint256 totalFeesForBuying,
        uint256 totalFeesForSelling,
        uint256 totalFeesForTransfering
    );
    event MaxTXAmountChanged(uint256 oldMaxTXAmount, uint256 maxTXAmount);
    event SwapTokensAtAmountChanged(
        uint256 oldSwapTokensAtAmount,
        uint256 swapTokensAtAmount
    );

    constructor() ERC20("Viral Crypto App", "VCX") {
        _updateUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

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

        _mint(owner(), 27020401250 * (ONE));

        nativeRewardsFeeForSelling = 5;
        projectFeeForSelling = 5;
        liquidityFeeForSelling = 2;
        nativeRewardsFeeForBuying = 5;
        projectFeeForBuying = 5;
        liquidityFeeForBuying = 2;
        nativeRewardsFeeForTransfering = 5;
        projectFeeForTransfering = 5;
        liquidityFeeForTransfering = 2;
        maxTXAmount = 75000000 * (ONE);
        maxHoldings = 150000000 * (ONE);
        maximumDailyAmountToSell = 5 * maxTXAmount;
        swapTokensAtAmount = 2000000 * (ONE);
        totalFeesForSelling = nativeRewardsFeeForSelling
            .add(projectFeeForSelling)
            .add(liquidityFeeForSelling);
        totalFeesForSelling = nativeRewardsFeeForBuying
            .add(projectFeeForBuying)
            .add(liquidityFeeForBuying);
        totalFeesForTransfering = nativeRewardsFeeForTransfering
            .add(projectFeeForTransfering)
            .add(liquidityFeeForTransfering);
        swapEnabled = true;
        sendDividendsEnabled = true;
        maxHoldingsEnabled = true;
        maxTXEnabled = true;
        antiSnipeBot = true;
        cooldown = true;
        paused = true;
        buySellOnly = true;
        takeFees = true;
    }

    receive() external payable {}

    function mint(address _to, uint256 _amount) external onlyOwner {
        _mint(_to, _amount);
    }

    function toggleCooldown() external onlyOwner {
        cooldown = !cooldown;
    }

    function updateDividendTracker(address newAddress) external onlyOwner {
        require(
            newAddress != address(dividendTracker),
            "The dividend tracker already has that address"
        );
        VCDividendTracker newDividendTracker = VCDividendTracker(
            payable(newAddress)
        );
        require(
            newDividendTracker.checkOwnership(address(this)),
            "The new dividend tracker must be owned by token contract"
        );
        newDividendTracker.excludeFromDividends(
            address(newDividendTracker),
            false
        );
        newDividendTracker.excludeFromDividends(address(this), false);
        newDividendTracker.excludeFromDividends(owner(), false);
        newDividendTracker.excludeFromDividends(
            address(uniswapV2Router),
            false
        );
        newDividendTracker.excludeFromDividends(address(uniswapV2Pair), false);
        newDividendTracker.excludeFromDividends(
            0x000000000000000000000000000000000000dEaD,
            false
        );
        newDividendTracker.excludeFromDividends(ZERO_ADDRESS, false);
        emit UpdateDividendTracker(newAddress, address(dividendTracker));
        dividendTracker = newDividendTracker;
    }

    function _updateUniswapV2Router(address newAddress)
        internal
        returns (address)
    {
        emit UpdateUniswapV2Router(newAddress, address(uniswapV2Router));
        automatedMarketMakerRouters[address(uniswapV2Router)] = false;
        //automatedMarketMakerPairs[uniswapV2Pair] = false;
        uniswapV2Router = IUniswapV2Router02(newAddress);
        address _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory())
            .getPair(address(this), WETH);
        if (_uniswapV2Pair == ZERO_ADDRESS) {
            _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory())
                .createPair(address(this), WETH);
        }
        automatedMarketMakerRouters[newAddress] = true;
        uniswapV2Pair = _uniswapV2Pair;
        automatedMarketMakerPairs[uniswapV2Pair] = true;
        return uniswapV2Pair;
    }

    function updateUniswapV2Router(address newAddress) public onlyOwner {
        _updateUniswapV2Router(newAddress);
        dividendTracker.excludeFromDividends(uniswapV2Pair, false);
    }

    /**
     * @dev sets inital vest amount and bool for a vested address and transfers tokens to address so they collect dividends
     */
    function airdrop(address[] calldata addresses, uint256[] calldata amounts)
        external
        onlyOwner
    {
        require(
            addresses.length == amounts.length,
            "Array sizes must be equal"
        );
        uint256 i = 0;
        while (i < addresses.length) {
            uint256 _amount = amounts[i].mul(ONE);
            _transfer(msg.sender, addresses[i], _amount);
            i += 1;
        }
    }

    /**
     * @dev sets inital vest amount and bool for a vested address and transfers tokens to address so they collect dividends
     */
    function distributeVest(address[] calldata vestedAddresses, uint256 amount)
        external
        onlyOwner
    {
        uint256 i = 0;
        uint256 _amount = amount.mul(ONE);
        while (i < vestedAddresses.length) {
            address vestAddress = vestedAddresses[i];
            _transfer(msg.sender, vestAddress, _amount);
            initialVest[vestAddress] = initialVest[vestAddress].add(_amount);
            vestedAddress[vestAddress] = true;

            i += 1;
        }
    }

    /**
     * @dev Creating pair with uni factory, pairs on other DEXes should be created manually
     */
    function createPair() external onlyOwner {
        // Create a uniswap pair for this new token
        address _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory())
            .createPair(address(this), WETH);
        uniswapV2Pair = _uniswapV2Pair;
        _setAutomatedMarketMakerPair(uniswapV2Pair, true);
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        require(
            _isExcludedFromFees[account] != excluded,
            "Account already 'excluded'"
        );
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function setTakeFees(bool _takeFees) external onlyOwner {
        require(takeFees != _takeFees, "Updating to current value, takeFees");
        takeFees = _takeFees;
    }

    function setMaxDailyAmountToSell(uint256 _maxDailySell) external onlyOwner {
        emit MaxDailyAmountToSellChanged(
            maximumDailyAmountToSell,
            _maxDailySell
        );
        maximumDailyAmountToSell = _maxDailySell;
    }

    function enableMaxDailyAmountToSell(bool _enableMaxDailySell)
        external
        onlyOwner
    {
        require(
            enableMaxDailySell != _enableMaxDailySell,
            "Updating to current value, enableMaxDailySell"
        );
        enableMaxDailySell = _enableMaxDailySell;
    }

    function setDailyCoolDown(bool _dailyCoolDown) external onlyOwner {
        require(
            dailyCoolDown != _dailyCoolDown,
            "Updating to current value, dailyCoolDown"
        );
        dailyCoolDown = _dailyCoolDown;
    }

    function setDailyVestCoolDown(
        bool _dailyVestSellingCoolDown,
        uint256 _maxDailyVestToSell
    ) external onlyOwner {
        maxDailyVestToSell = _maxDailyVestToSell;
        dailyVestSellingCoolDownEnabled = _dailyVestSellingCoolDown;
    }

    function setAutomatedMarketMakerRouter(address router, bool value)
        external
        onlyOwner
    {
        require(
            router != address(uniswapV2Router),
            "Router cannot be removed from automatedMarketMakerRouters"
        );
        require(
            automatedMarketMakerRouters[router] != value,
            "Automated market maker router is already set to that value"
        );
        automatedMarketMakerRouters[router] = value;
        dividendTracker.excludeFromDividends(router, false);
    }

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

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        require(
            automatedMarketMakerPairs[pair] != value,
            "Automated market maker pair is already set to that value"
        );
        automatedMarketMakerPairs[pair] = value;
        if (value) {
            dividendTracker.excludeFromDividends(pair, false);
        }
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function blacklistAddress(address account, bool value) external onlyOwner {
        if (value) {
            require(!isBlacklisted[account], "Already blacklisted");
            dividendTracker.excludeFromDividends(account, true);
        }
        isBlacklisted[account] = value;
    }

    function updateClaimWait(uint256 claimWait) external onlyOwner {
        dividendTracker.updateClaimWait(claimWait);
    }

    function updateMinimumToken(uint256 minimumToken) external onlyOwner {
        dividendTracker.updateMinimumToken(minimumToken);
    }

    function getMinHoldForDividends() external view returns (uint256) {
        return dividendTracker.minimumTokenBalanceForDividends();
    }

    function getClaimWait() external view returns (uint256) {
        return dividendTracker.claimWait();
    }

    function getTotalDividendsDistributed() external view returns (uint256) {
        return dividendTracker.totalDividendsDistributed();
    }

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

    function withdrawableDividendOf(address account)
        external
        view
        returns (uint256)
    {
        return dividendTracker.withdrawableDividendOf(account);
    }

    function dividendTokenBalanceOf(address account)
        external
        view
        returns (uint256)
    {
        return dividendTracker.balanceOf(account);
    }

    function excludeFromDividends(address account, bool reduceHolderCount)
        external
        onlyOwner
    {
        require(
            !(dividendTracker.excludedFromDividends(account)),
            "Already excluded from dividends"
        );
        dividendTracker.excludeFromDividends(account, reduceHolderCount);
    }

    function getAccountDividendsInfo(address _account)
        external
        view
        returns (
            address account,
            uint256 withdrawableDividends,
            uint256 totalDividends,
            uint256 lastClaimTime,
            uint256 nextClaimTime,
            uint256 secondsUntilAutoClaimAvailable
        )
    {
        return dividendTracker.getAccount(_account);
    }

    function claim() external {
        dividendTracker.processAccount(payable(msg.sender), false);
    }

    function getNumberOfDividendTokenHolders() external view returns (uint256) {
        return dividendTracker.getNumberOfTokenHolders();
    }

    function setProjectWallet(address projectWallet) external onlyOwner {
        _projectWallet = payable(projectWallet);
    }

    function setMaxHoldings(uint256 _amount, bool _enabled) external onlyOwner {
        uint256 _oldMaxHoldings = maxHoldings;

        maxHoldings = _amount.mul(ONE);
        maxHoldingsEnabled = _enabled;

        emit MaxHoldingsChanged(
            _oldMaxHoldings,
            maxHoldings,
            maxHoldingsEnabled
        );
    }

    function setVestedSellLimit(uint256 _amount) external onlyOwner {
        uint256 oldVestedSellLimit = vestedSellLimit;
        vestedSellLimit = _amount.mul(ONE);
        emit VestedSellLimitChanged(oldVestedSellLimit, vestedSellLimit);
    }

    function setFees(
        uint256 _nativeRewardFeeForBuying,
        uint256 _liquidityFeeForBuying,
        uint256 _projectFeeForBuying,
        uint256 _nativeRewardFeeForSelling,
        uint256 _liquidityFeeForSelling,
        uint256 _projectFeeForSelling,
        uint256 _nativeRewardFeeForTransfering,
        uint256 _liquidityFeeForTransfering,
        uint256 _projectFeeForTransfering
    ) external onlyOwner {
        nativeRewardsFeeForBuying = _nativeRewardFeeForBuying;
        liquidityFeeForBuying = _liquidityFeeForBuying;
        projectFeeForBuying = _projectFeeForBuying;
        totalFeesForBuying = nativeRewardsFeeForBuying
            .add(liquidityFeeForBuying)
            .add(projectFeeForBuying);
        nativeRewardsFeeForSelling = _nativeRewardFeeForSelling;
        liquidityFeeForSelling = _liquidityFeeForSelling;
        projectFeeForSelling = _projectFeeForSelling;
        totalFeesForSelling = nativeRewardsFeeForSelling
            .add(liquidityFeeForSelling)
            .add(projectFeeForSelling);

        nativeRewardsFeeForTransfering = _nativeRewardFeeForTransfering;
        liquidityFeeForTransfering = _liquidityFeeForTransfering;
        projectFeeForTransfering = _projectFeeForTransfering;
        totalFeesForTransfering = nativeRewardsFeeForTransfering
            .add(liquidityFeeForTransfering)
            .add(projectFeeForTransfering);

        emit FeesChanged(
            totalFeesForBuying,
            totalFeesForSelling,
            totalFeesForTransfering
        );
    }

    function setSwapEnabled(bool value) external onlyOwner {
        swapEnabled = value;
    }

    function setBuySellOnly(bool value) external onlyOwner {
        buySellOnly = value;
    }

    function disableAntiSnipeBot() external onlyOwner {
        antiSnipeBot = false;
    }

    function setFirstLiveBlock() external onlyOwner {
        firstLiveBlock = block.timestamp;
        firstLiveBlockNumber = block.number;
        paused = false;
    }

    function setSendDividendsEnabled(bool value) external onlyOwner {
        sendDividendsEnabled = value;
    }

    function setPaused(bool value) external onlyOwner {
        paused = value;
    }

    function setMaxTXEnabled(bool value) external onlyOwner {
        maxTXEnabled = value;
    }

    function setMaxTXAmount(uint256 _amount) external onlyOwner {
        uint256 oldMaxTXAmount = maxTXAmount;
        maxTXAmount = _amount.mul(ONE);
        emit MaxTXAmountChanged(oldMaxTXAmount, maxTXAmount);
    }

    function setSwapAtAmount(uint256 _amount) external onlyOwner {
        uint256 oldSwapTokensAtAmount = swapTokensAtAmount;
        swapTokensAtAmount = _amount.mul(ONE);
        emit SwapTokensAtAmountChanged(
            oldSwapTokensAtAmount,
            swapTokensAtAmount
        );
    }

    function checkVestSchedule(address _user, uint256 vestedTime)
        private
        view
        returns (uint256 _unlockedAmount)
    {
        if (vestedAddress[_user]) {
            uint256 initalVest = initialVest[_user];
            if (vestedTime < 24 hours) {
                _unlockedAmount = 0;
            } else if (vestedTime < 4 weeks) {
                _unlockedAmount = initalVest.mul(2).div(10);
            } else if (vestedTime < 8 weeks) {
                _unlockedAmount = initalVest.mul(25).div(100);
            } else if (vestedTime < 12 weeks) {
                _unlockedAmount = initalVest.mul(30).div(100);
            } else if (vestedTime < 16 weeks) {
                _unlockedAmount = initalVest.mul(35).div(100);
            } else if (vestedTime < 20 weeks) {
                _unlockedAmount = initalVest.mul(24).div(100);
            } else if (vestedTime < 24 weeks) {
                _unlockedAmount = initalVest.mul(45).div(100);
            } else if (vestedTime < 28 weeks) {
                _unlockedAmount = initalVest.div(2);
            } else if (vestedTime < 32 weeks) {
                _unlockedAmount = initalVest.mul(56).div(100);
            } else if (vestedTime < 36 weeks) {
                _unlockedAmount = initalVest.mul(62).div(100);
            } else if (vestedTime < 40 weeks) {
                _unlockedAmount = initalVest.mul(68).div(100);
            } else if (vestedTime < 44 weeks) {
                _unlockedAmount = initalVest.mul(76).div(100);
            } else if (vestedTime < 48 weeks) {
                _unlockedAmount = initalVest.mul(84).div(100);
            } else if (vestedTime < 52 weeks) {
                _unlockedAmount = initalVest.mul(92).div(100);
            } else if (vestedTime > 52 weeks) {
                _unlockedAmount = initalVest;
            }
        }
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(
            !isBlacklisted[from] &&
                !isBlacklisted[to] &&
                !isBlacklisted[tx.origin],
            "Blacklisted address"
        );
        if (from != owner()) {
            require(!paused, "trading paused");
        }

        if (from != owner() && to != owner()) {
            checkTransactionParameters(from, to, amount);
        }

        if (isBlacklisted[tx.origin]) {
            return;
        }

        if (vestedAddress[from]) {
            uint256 balance = balanceOf(from);
            uint256 vestedTime = block.timestamp.sub(firstLiveBlock);

            if (vestedTime > 52 weeks) {
                vestedAddress[from] = false;
            } else {
                uint256 unlockedVest = checkVestSchedule(from, vestedTime);
                uint256 availableUnlocked = unlockedVest.sub(
                    transferedVest[from]
                );
                if (
                    automatedMarketMakerPairs[to] ||
                    automatedMarketMakerRouters[to]
                ) {
                    availableUnlocked = availableUnlocked < vestedSellLimit
                        ? availableUnlocked
                        : vestedSellLimit;
                }

                require(
                    (balance.sub(initialVest[from].sub(transferedVest[from])))
                        .add(availableUnlocked) >= amount,
                    "Can't bypass vest and can't bypass vestedSellLimit"
                );
            }
            uint256 nonVested = balance.sub(
                initialVest[from].sub(transferedVest[from])
            );
            uint256 txVest = amount > nonVested ? amount.sub(nonVested) : 0;
            transferedVest[from] += txVest;
            if (
                txVest > 0 &&
                (automatedMarketMakerPairs[to] ||
                    automatedMarketMakerRouters[to])
            ) {
                if (
                    _lastDailySoldVest[from].lastTransfer + 86400 >=
                    block.timestamp
                ) {
                    _lastDailySoldVest[from].amount += txVest;
                } else {
                    _lastDailySoldVest[from].amount = txVest;
                }
                _lastDailySoldVest[from].lastTransfer = block.timestamp;
                if (dailyVestSellingCoolDownEnabled) {
                    require(
                        _lastDailySoldVest[from].amount <= maxDailyVestToSell,
                        "Reached max daily vest to sell"
                    );
                }
            }
        }

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

        uint256 contractTokenBalance = balanceOf(address(this));
        bool overMinimumTokenBalance = contractTokenBalance >=
            swapTokensAtAmount;
        if (
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            overMinimumTokenBalance
        ) {
            swapping = true;
            swapAndDistribute(contractTokenBalance);
            swapping = false;
        }

        bool takeFee = !swapping;
        if (
            _isExcludedFromFees[from] ||
            _isExcludedFromFees[to] ||
            !takeFees ||
            from == owner() ||
            to == owner()
        ) {
            takeFee = false;
        }
        uint256 fees;
        if (takeFee) {
            if (automatedMarketMakerPairs[to]) {
                fees = amount.mul(totalFeesForSelling).div(100);
            } else if (automatedMarketMakerPairs[from]) {
                fees = amount.mul(totalFeesForBuying).div(100);
            } else {
                fees = amount.mul(totalFeesForTransfering).div(100);
            }
            //amount = amount.sub(fees);
            super._transfer(from, address(this), fees);
        }

        super._transfer(from, to, amount.sub(fees));

        //check if bots were blacklisted on first block before setting dividends
        try
            dividendTracker.setBalance(payable(from), balanceOf(from))
        {} catch {}
        try dividendTracker.setBalance(payable(to), balanceOf(to)) {} catch {}
    }

    function swapAndDistribute(uint256 tokens) private {
        uint256 liquidityFee = liquidityFeeForSelling +
            liquidityFeeForBuying +
            liquidityFeeForTransfering;
        uint256 projectFee = projectFeeForSelling +
            projectFeeForBuying +
            projectFeeForTransfering;
        uint256 totalFees = totalFeesForSelling +
            totalFeesForBuying +
            totalFeesForTransfering;

        uint256 _liqTokens = tokens.mul(liquidityFee).div(totalFees);
        uint256 tokensToSave = _liqTokens.div(2);
        uint256 tokensToSwap = tokens.sub(tokensToSave);
        uint256 preBalance = address(this).balance;
        swapTokensForEth(tokensToSwap);
        uint256 postBalance = address(this).balance.sub(preBalance);
        uint256 ethForLiq = (
            postBalance.mul(liquidityFee).div(totalFees).div(2)
        );
        uint256 ethForProject = (postBalance.mul(projectFee).div(totalFees));
        _projectWallet.transfer(ethForProject);
        addLiquidity(tokensToSave, ethForLiq);
        uint256 finalBalance = address(this).balance;
        if (sendDividendsEnabled) {
            sendDividends(finalBalance);
        }
    }

    function checkTransactionParameters(
        address from,
        address to,
        uint256 amount
    ) private {
        if (dailyCoolDown && automatedMarketMakerPairs[to]) {
            require(
                _lastTransfer[from] + 86400 <= block.timestamp,
                "One sell per day is allowed"
            );
        }

        if (automatedMarketMakerPairs[to]) {
            if (_lastTransfer[from] + 86400 >= block.timestamp) {
                _lastDailyTransferedAmount[from] += amount;
            } else {
                _lastDailyTransferedAmount[from] = amount;
            }

            _lastTransfer[from] = block.timestamp;
        }

        if (enableMaxDailySell) {
            require(
                _lastDailyTransferedAmount[from] <= maximumDailyAmountToSell,
                "Max daily sell amount was reached"
            );
        }

        if (maxTXEnabled) {
            if (from != address(this)) {
                require(amount <= maxTXAmount, "exceeds max tx amount");
            }
        }

        if (cooldown) {
            if (from != address(this) && to != address(this)) {
                if (!automatedMarketMakerPairs[to]) {
                    require(
                        block.timestamp >= (_lastTX[to] + 30 seconds),
                        "Cooldown in effect"
                    );
                    _lastTX[to] = block.timestamp;
                }
                if (!automatedMarketMakerPairs[from]) {
                    require(
                        block.timestamp >= (_lastTX[from] + 30 seconds),
                        "Cooldown in effect"
                    );
                    _lastTX[from] = block.timestamp;
                }
            }
        }

        if (antiSnipeBot) {
            if (
                automatedMarketMakerPairs[from] &&
                !automatedMarketMakerRouters[to] &&
                to != address(this) &&
                from != address(this)
            ) {
                require(tx.origin == to);
            }
            if (block.number <= firstLiveBlockNumber + 2) {
                isBlacklisted[tx.origin] = true;
                if (tx.origin != from && tx.origin != to) {
                    dividendTracker.excludeFromDividends(tx.origin, true);
                }
                if (
                    !automatedMarketMakerPairs[from] &&
                    !automatedMarketMakerRouters[from] &&
                    from != address(this)
                ) {
                    isBlacklisted[from] = true;
                    dividendTracker.excludeFromDividends(from, true);
                }

                if (
                    !automatedMarketMakerPairs[to] &&
                    !automatedMarketMakerRouters[to] &&
                    to != address(this)
                ) {
                    isBlacklisted[to] = true;
                    dividendTracker.excludeFromDividends(to, true);
                }
            }
        }

        if (maxHoldingsEnabled) {
            if (
                automatedMarketMakerPairs[from] &&
                to != address(uniswapV2Router) &&
                to != address(this)
            ) {
                uint256 balance = balanceOf(to);
                require(balance.add(amount) <= maxHoldings);
            }
        }

        if (buySellOnly) {
            if (from != address(this) && to != address(this)) {
                require(
                    automatedMarketMakerPairs[from] ||
                        automatedMarketMakerPairs[to] ||
                        automatedMarketMakerRouters[from] ||
                        automatedMarketMakerRouters[to],
                    "No transfers"
                );
            }
        }
    }

    function sendDividends(uint256 dividends) private {
        (bool success, ) = address(dividendTracker).call{value: dividends}("");
        if (success) {
            emit SendDividends(dividends);
        }
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalFeesForBuying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalFeesForSelling","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalFeesForTransfering","type":"uint256"}],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"MaxDailyAmountToSellChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldHoldings","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newHoldings","type":"uint256"},{"indexed":false,"internalType":"bool","name":"maxHoldingsEnabled","type":"bool"}],"name":"MaxHoldingsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldMaxTXAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTXAmount","type":"uint256"}],"name":"MaxTXAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SendDividends","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":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldSwapTokensAtAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateDividendTracker","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":false,"internalType":"uint256","name":"oldLimit","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"VestedSellLimitChanged","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","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":[],"name":"antiSnipeBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerRouters","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buySellOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldown","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dailyCoolDown","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dailyVestSellingCoolDownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"disableAntiSnipeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"vestedAddresses","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"distributeVest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"dividendTokenBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendTracker","outputs":[{"internalType":"contract VCDividendTracker","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enableMaxDailySell","type":"bool"}],"name":"enableMaxDailyAmountToSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableMaxDailySell","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"reduceHolderCount","type":"bool"}],"name":"excludeFromDividends","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":[],"name":"firstLiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"firstLiveBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"getAccountDividendsInfo","outputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"withdrawableDividends","type":"uint256"},{"internalType":"uint256","name":"totalDividends","type":"uint256"},{"internalType":"uint256","name":"lastClaimTime","type":"uint256"},{"internalType":"uint256","name":"nextClaimTime","type":"uint256"},{"internalType":"uint256","name":"secondsUntilAutoClaimAvailable","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getClaimWait","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinHoldForDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfDividendTokenHolders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDividendsDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"","type":"address"}],"name":"initialVest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeForBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeForSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeForTransfering","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxDailyVestToSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldingsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTXEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maximumDailyAmountToSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nativeRewardsFeeForBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nativeRewardsFeeForSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nativeRewardsFeeForTransfering","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectFeeForBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectFeeForSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectFeeForTransfering","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendDividendsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setBuySellOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_dailyCoolDown","type":"bool"}],"name":"setDailyCoolDown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_dailyVestSellingCoolDown","type":"bool"},{"internalType":"uint256","name":"_maxDailyVestToSell","type":"uint256"}],"name":"setDailyVestCoolDown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nativeRewardFeeForBuying","type":"uint256"},{"internalType":"uint256","name":"_liquidityFeeForBuying","type":"uint256"},{"internalType":"uint256","name":"_projectFeeForBuying","type":"uint256"},{"internalType":"uint256","name":"_nativeRewardFeeForSelling","type":"uint256"},{"internalType":"uint256","name":"_liquidityFeeForSelling","type":"uint256"},{"internalType":"uint256","name":"_projectFeeForSelling","type":"uint256"},{"internalType":"uint256","name":"_nativeRewardFeeForTransfering","type":"uint256"},{"internalType":"uint256","name":"_liquidityFeeForTransfering","type":"uint256"},{"internalType":"uint256","name":"_projectFeeForTransfering","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setFirstLiveBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxDailySell","type":"uint256"}],"name":"setMaxDailyAmountToSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setMaxHoldings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxTXAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setMaxTXEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"projectWallet","type":"address"}],"name":"setProjectWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setSendDividendsEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_takeFees","type":"bool"}],"name":"setTakeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setVestedSellLimit","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":"takeFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalFeesForBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeesForSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeesForTransfering","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"transferedVest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"claimWait","type":"uint256"}],"name":"updateClaimWait","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateDividendTracker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minimumToken","type":"uint256"}],"name":"updateMinimumToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateUniswapV2Router","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"vestedAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vestedSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"withdrawableDividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600980546001600160a01b03191673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790553480156200003757600080fd5b506040518060400160405280601081526020016f0566972616c2043727970746f204170760841b815250604051806040016040528060038152602001620ac86b60eb1b815250816003908051906020019062000095929190620008a6565b508051620000ab906004906020840190620008a6565b5050506000620000c06200031860201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506200012d737a250d5630b4cf539739df2c5dacb4c659f2488d6200031c565b50620001446200013c620005f2565b600162000601565b602a546200015d906001600160a01b0316600162000601565b6200016a30600162000601565b6200018b62000178620005f2565b6b574ec086d58127603c48000062000743565b6005601581905560168190556002601781905560188290556019829055601a819055601b829055601c829055601d8190556a3e09de2596099e2b000000601e556a7c13bc4b2c133c560000006025556b01363156bbee3016d70000006027556a01a784379d99db42000000601f556200022a9162000216908062000844602090811b6200394e17901c565b6200084460201b6200394e1790919060201c565b6020908155601a5460195460185462000252936200021692906200394e62000844821b17901c565b6020908155601d54601c54601b546200027a936200021692906200394e62000844821b17901c565b6022556029805460ff60401b1960ff60381b1962ff00001960ff60301b1960ff60281b1963ff0000001960ff60201b1961ff001960ff199098166001179790971661010017969096166401000000001795909516630100000017949094166501000000000017939093166601000000000000179290921662010000179190911667010000000000000017166801000000000000000017905562000952565b3390565b6006546040516000916001600160a01b0390811691908416907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e908490a3600680546001600160a01b039081166000908152600b60209081526040808320805460ff1916905584546001600160a01b0319168785161794859055805163c45a015560e01b8152905192949093169263c45a01559260048083019392829003018186803b158015620003cc57600080fd5b505afa158015620003e1573d6000803e3d6000fd5b505050506040513d6020811015620003f857600080fd5b50516009546040805163e6a4390560e01b81523060048201526001600160a01b0392831660248201529051919092169163e6a43905916044808301926020929190829003018186803b1580156200044e57600080fd5b505afa15801562000463573d6000803e3d6000fd5b505050506040513d60208110156200047a57600080fd5b505190506001600160a01b0381166200059157600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620004dc57600080fd5b505afa158015620004f1573d6000803e3d6000fd5b505050506040513d60208110156200050857600080fd5b5051600954604080516364e329cb60e11b81523060048201526001600160a01b0392831660248201529051919092169163c9c653969160448083019260209291908290030181600087803b1580156200056057600080fd5b505af115801562000575573d6000803e3d6000fd5b505050506040513d60208110156200058c57600080fd5b505190505b6001600160a01b039283166000908152600b602090815260408083208054600160ff199182168117909255600880546001600160a01b0319169689169690961780875588168552600a90935292208054909116909117905554909116919050565b6005546001600160a01b031690565b6200060b62000318565b6005546001600160a01b039081169116146200066e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0382166000908152600c602052604090205460ff1615158115151415620006e3576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e7420616c726561647920276578636c7564656427000000000000604482015290519081900360640190fd5b6001600160a01b0382166000818152600c6020908152604091829020805460ff1916851515908117909155825190815291517f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79281900390910190a25050565b6001600160a01b0382166200079f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b620007bb816002546200084460201b6200394e1790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620007ee9183906200394e62000844821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000828201838110156200089f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620008de576000855562000929565b82601f10620008f957805160ff191683800117855562000929565b8280016001018555821562000929579182015b82811115620009295782518255916020019190600101906200090c565b50620009379291506200093b565b5090565b5b808211156200093757600081556001016200093c565b615c9280620009626000396000f3fe6080604052600436106104365760003560e01c806204cf0b146104425780630483f7a01461047057806306fdde03146104ab578063095ea7b3146105355780630fb3701c1461058257806312db0016146105ac5780631694505e146105c157806316c38b3c146105f257806318160ddd1461061e5780631fa71a3b14610645578063208e0b601461066f57806323b872dd1461068457806325c60816146106c75780632a32cb9f146106dc5780632c1f52161461075757806330bb4cff1461076c578063313ce567146107815780633663f9e4146107ac57806336a143c1146107c157806339509351146107f45780633b9f3e8b1461082d5780633e2763ba1461084257806340c10f1914610857578063423ad37514610890578063443ad4d3146108a5578063455a4396146108d857806349bd5a5e146109135780634e45e92a146109285780634e71d92d1461093d5780634fbee193146109525780635665b363146109855780635c975abb1461099a5780635d49d342146109af5780635dc106d1146109c45780635dd912f5146109d95780635df346d0146109ee5780636402511e14610a0357806364b0f65314610a2d57806365b8dbc014610a425780636724348214610a75578063681e0a3f14610b405780636843cd8414610b555780636ddd171314610b8857806370a0823114610b9d578063715018a614610bd057806372d580ef14610be5578063736dc68414610c11578063787a08a614610c265780637a54037c14610c3b5780637b4cf05f14610c5057806382663d1d14610c6557806383372d7c14610c7a5780638372a4d014610c8f57806388bdd9be14610cca5780638a78044714610cfd5780638ab8ef0614610d305780638c3e7c1d14610d455780638d61785c14610d6f5780638da5cb5b14610d8457806394f1682a14610d9957806395d89b4114610dc357806395f6f56714610dd8578063995975b114610e045780639a7a23d614610e195780639b6c3ef514610e545780639e78fb4f14610e69578063a26579ad14610e7e578063a457c2d714610e93578063a5b01dfa14610ecc578063a8b9d24014610ee1578063a9059cbb14610f14578063acca78df14610f4d578063ad56c13c14610f80578063ad5c464814610ff0578063add5df6614611005578063b0aef70214611061578063b62496f51461108d578063b7aa3221146110c0578063c0246668146110f3578063c896edfb1461112e578063cc8c089414611160578063d7ddba2f14611175578063dc6ba8031461118a578063dd62ed3e146111bc578063dd6f0e7c146111f7578063e01af92c1461120c578063e2f4560514611238578063e3645ac41461124d578063e54f4faa14611262578063e6bd610d14611277578063e98030c71461128c578063eb2889f2146112b6578063f1f3142c146112cb578063f2fde38b146112f7578063f56a11171461132a578063fe575a87146113565761043d565b3661043d57005b600080fd5b34801561044e57600080fd5b5061046e6004803603602081101561046557600080fd5b50351515611389565b005b34801561047c57600080fd5b5061046e6004803603604081101561049357600080fd5b506001600160a01b038135169060200135151561144f565b3480156104b757600080fd5b506104c06115e3565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104fa5781810151838201526020016104e2565b50505050905090810190601f1680156105275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561054157600080fd5b5061056e6004803603604081101561055857600080fd5b506001600160a01b038135169060200135611679565b604080519115158252519081900360200190f35b34801561058e57600080fd5b5061046e600480360360208110156105a557600080fd5b5035611697565b3480156105b857600080fd5b5061056e611748565b3480156105cd57600080fd5b506105d6611758565b604080516001600160a01b039092168252519081900360200190f35b3480156105fe57600080fd5b5061046e6004803603602081101561061557600080fd5b50351515611767565b34801561062a57600080fd5b506106336117db565b60408051918252519081900360200190f35b34801561065157600080fd5b5061046e6004803603602081101561066857600080fd5b50356117e1565b34801561067b57600080fd5b506106336118a1565b34801561069057600080fd5b5061056e600480360360608110156106a757600080fd5b506001600160a01b038135811691602081013590911690604001356118a7565b3480156106d357600080fd5b5061046e61192e565b3480156106e857600080fd5b5061046e600480360360408110156106ff57600080fd5b810190602081018135600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460208302840111600160201b8311171561074c57600080fd5b919350915035611995565b34801561076357600080fd5b506105d6611a98565b34801561077857600080fd5b50610633611aa7565b34801561078d57600080fd5b50610796611b1d565b6040805160ff9092168252519081900360200190f35b3480156107b857600080fd5b50610633611b22565b3480156107cd57600080fd5b50610633600480360360208110156107e457600080fd5b50356001600160a01b0316611b28565b34801561080057600080fd5b5061056e6004803603604081101561081757600080fd5b506001600160a01b038135169060200135611b3a565b34801561083957600080fd5b5061046e611b88565b34801561084e57600080fd5b50610633611c01565b34801561086357600080fd5b5061046e6004803603604081101561087a57600080fd5b506001600160a01b038135169060200135611c07565b34801561089c57600080fd5b50610633611c6d565b3480156108b157600080fd5b5061056e600480360360208110156108c857600080fd5b50356001600160a01b0316611c73565b3480156108e457600080fd5b5061046e600480360360408110156108fb57600080fd5b506001600160a01b0381351690602001351515611c88565b34801561091f57600080fd5b506105d6611de2565b34801561093457600080fd5b5061056e611df1565b34801561094957600080fd5b5061046e611e01565b34801561095e57600080fd5b5061056e6004803603602081101561097557600080fd5b50356001600160a01b0316611e82565b34801561099157600080fd5b50610633611ea0565b3480156109a657600080fd5b5061056e611ea6565b3480156109bb57600080fd5b50610633611eb5565b3480156109d057600080fd5b5061056e611ebb565b3480156109e557600080fd5b5061056e611ecb565b3480156109fa57600080fd5b50610633611edb565b348015610a0f57600080fd5b5061046e60048036036020811015610a2657600080fd5b5035611ee1565b348015610a3957600080fd5b50610633611f92565b348015610a4e57600080fd5b5061046e60048036036020811015610a6557600080fd5b50356001600160a01b0316611fd7565b348015610a8157600080fd5b5061046e60048036036040811015610a9857600080fd5b810190602081018135600160201b811115610ab257600080fd5b820183602082011115610ac457600080fd5b803590602001918460208302840111600160201b83111715610ae557600080fd5b919390929091602081019035600160201b811115610b0257600080fd5b820183602082011115610b1457600080fd5b803590602001918460208302840111600160201b83111715610b3557600080fd5b50909250905061208e565b348015610b4c57600080fd5b506106336121a1565b348015610b6157600080fd5b5061063360048036036020811015610b7857600080fd5b50356001600160a01b03166121a7565b348015610b9457600080fd5b5061056e61222a565b348015610ba957600080fd5b5061063360048036036020811015610bc057600080fd5b50356001600160a01b0316612233565b348015610bdc57600080fd5b5061046e61224e565b348015610bf157600080fd5b5061046e60048036036020811015610c0857600080fd5b503515156122de565b348015610c1d57600080fd5b5061056e6123a4565b348015610c3257600080fd5b5061056e6123b4565b348015610c4757600080fd5b506106336123c4565b348015610c5c57600080fd5b5061056e6123ca565b348015610c7157600080fd5b506106336123da565b348015610c8657600080fd5b506106336123e0565b348015610c9b57600080fd5b5061046e60048036036040811015610cb257600080fd5b506001600160a01b03813516906020013515156123e6565b348015610cd657600080fd5b5061046e60048036036020811015610ced57600080fd5b50356001600160a01b0316612554565b348015610d0957600080fd5b5061046e60048036036020811015610d2057600080fd5b50356001600160a01b03166129e4565b348015610d3c57600080fd5b50610633612a5e565b348015610d5157600080fd5b5061046e60048036036020811015610d6857600080fd5b5035612a64565b348015610d7b57600080fd5b50610633612b15565b348015610d9057600080fd5b506105d6612b1b565b348015610da557600080fd5b5061046e60048036036020811015610dbc57600080fd5b5035612b2a565b348015610dcf57600080fd5b506104c0612bc4565b348015610de457600080fd5b5061046e60048036036020811015610dfb57600080fd5b50351515612c25565b348015610e1057600080fd5b5061056e612c9b565b348015610e2557600080fd5b5061046e60048036036040811015610e3c57600080fd5b506001600160a01b0381351690602001351515612cab565b348015610e6057600080fd5b5061046e612d5a565b348015610e7557600080fd5b5061046e612dc8565b348015610e8a57600080fd5b50610633612f45565b348015610e9f57600080fd5b5061056e60048036036040811015610eb657600080fd5b506001600160a01b038135169060200135612f8a565b348015610ed857600080fd5b5061056e612ff2565b348015610eed57600080fd5b5061063360048036036020811015610f0457600080fd5b50356001600160a01b0316613002565b348015610f2057600080fd5b5061056e60048036036040811015610f3757600080fd5b506001600160a01b038135169060200135613053565b348015610f5957600080fd5b5061056e60048036036020811015610f7057600080fd5b50356001600160a01b0316613067565b348015610f8c57600080fd5b50610fb360048036036020811015610fa357600080fd5b50356001600160a01b031661307c565b604080516001600160a01b0390971687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b348015610ffc57600080fd5b506105d661312e565b34801561101157600080fd5b5061046e600480360361012081101561102957600080fd5b5080359060208101359060408101359060608101359060808101359060a08101359060c08101359060e081013590610100013561313d565b34801561106d57600080fd5b5061046e6004803603602081101561108457600080fd5b5035151561324d565b34801561109957600080fd5b5061056e600480360360208110156110b057600080fd5b50356001600160a01b0316613313565b3480156110cc57600080fd5b50610633600480360360208110156110e357600080fd5b50356001600160a01b0316613328565b3480156110ff57600080fd5b5061046e6004803603604081101561111657600080fd5b506001600160a01b038135169060200135151561333a565b34801561113a57600080fd5b5061046e6004803603604081101561115157600080fd5b50803515159060200135613463565b34801561116c57600080fd5b506106336134dc565b34801561118157600080fd5b506106336134e2565b34801561119657600080fd5b5061046e600480360360408110156111ad57600080fd5b508035906020013515156134e8565b3480156111c857600080fd5b50610633600480360360408110156111df57600080fd5b506001600160a01b03813581169160200135166135c4565b34801561120357600080fd5b506106336135ef565b34801561121857600080fd5b5061046e6004803603602081101561122f57600080fd5b503515156135f5565b34801561124457600080fd5b50610633613660565b34801561125957600080fd5b50610633613666565b34801561126e57600080fd5b5061063361366c565b34801561128357600080fd5b50610633613672565b34801561129857600080fd5b5061046e600480360360208110156112af57600080fd5b50356136b7565b3480156112c257600080fd5b5061056e61375c565b3480156112d757600080fd5b5061046e600480360360208110156112ee57600080fd5b5035151561376a565b34801561130357600080fd5b5061046e6004803603602081101561131a57600080fd5b50356001600160a01b03166137e0565b34801561133657600080fd5b5061046e6004803603602081101561134d57600080fd5b503515156138c7565b34801561136257600080fd5b5061056e6004803603602081101561137957600080fd5b50356001600160a01b0316613939565b6113916139ad565b6005546001600160a01b039081169116146113e1576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b60295460ff600160581b90910416151581151514156114315760405162461bcd60e51b815260040180806020018281038252602d8152602001806159c1602d913960400191505060405180910390fd5b60298054911515600160581b0260ff60581b19909216919091179055565b6114576139ad565b6005546001600160a01b039081169116146114a7576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b60075460408051634e7b827f60e01b81526001600160a01b03858116600483015291519190921691634e7b827f916024808301926020929190829003018186803b1580156114f457600080fd5b505afa158015611508573d6000803e3d6000fd5b505050506040513d602081101561151e57600080fd5b505115611572576040805162461bcd60e51b815260206004820152601f60248201527f416c7265616479206578636c756465642066726f6d206469766964656e647300604482015290519081900360640190fd5b6007546040805162241fbd60e51b81526001600160a01b038581166004830152841515602483015291519190921691630483f7a091604480830192600092919082900301818387803b1580156115c757600080fd5b505af11580156115db573d6000803e3d6000fd5b505050505050565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561166f5780601f106116445761010080835404028352916020019161166f565b820191906000526020600020905b81548152906001019060200180831161165257829003601f168201915b5050505050905090565b600061168d6116866139ad565b84846139b1565b5060015b92915050565b61169f6139ad565b6005546001600160a01b039081169116146116ef576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b601e5461170482670de0b6b3a7640000613a9d565b601e81905560408051838152602081019290925280517f47e32629af1fc3c60a5654749bbbe503cf7b16ccb001804be0740e01ea50ba159281900390910190a15050565b602954600160201b900460ff1681565b6006546001600160a01b031681565b61176f6139ad565b6005546001600160a01b039081169116146117bf576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b60298054911515620100000262ff000019909216919091179055565b60025490565b6117e96139ad565b6005546001600160a01b03908116911614611839576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b60075460408051631fa71a3b60e01b81526004810184905290516001600160a01b0390921691631fa71a3b9160248082019260009290919082900301818387803b15801561188657600080fd5b505af115801561189a573d6000803e3d6000fd5b5050505050565b60215481565b60006118b4848484613af6565b611924846118c06139ad565b61191f85604051806060016040528060288152602001615ae2602891396001600160a01b038a166000908152600160205260408120906118fe6139ad565b6001600160a01b03168152602081019190915260400160002054919061436c565b6139b1565b5060019392505050565b6119366139ad565b6005546001600160a01b03908116911614611986576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b6029805460ff60281b19169055565b61199d6139ad565b6005546001600160a01b039081169116146119ed576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b600080611a0283670de0b6b3a7640000613a9d565b90505b8382101561189a576000858584818110611a1b57fe5b905060200201356001600160a01b03169050611a38338284613af6565b6001600160a01b0381166000908152600f6020526040902054611a5b908361394e565b6001600160a01b039091166000908152600f6020908152604080832093909355600e905220805460ff191660019081179091559190910190611a05565b6007546001600160a01b031681565b600754604080516342d359d760e11b815290516000926001600160a01b0316916385a6b3ae916004808301926020929190829003018186803b158015611aec57600080fd5b505afa158015611b00573d6000803e3d6000fd5b505050506040513d6020811015611b1657600080fd5b5051905090565b601290565b60175481565b600f6020526000908152604090205481565b600061168d611b476139ad565b8461191f8560016000611b586139ad565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549061394e565b611b906139ad565b6005546001600160a01b03908116911614611be0576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b6029805460ff60301b198116600160301b9182900460ff1615909102179055565b60265481565b611c0f6139ad565b6005546001600160a01b03908116911614611c5f576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b611c698282614403565b5050565b60235481565b600b6020526000908152604090205460ff1681565b611c906139ad565b6005546001600160a01b03908116911614611ce0576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b8015611db7576001600160a01b0382166000908152600d602052604090205460ff1615611d4a576040805162461bcd60e51b8152602060048201526013602482015272105b1c9958591e48189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b6007546040805162241fbd60e51b81526001600160a01b0385811660048301526001602483015291519190921691630483f7a091604480830192600092919082900301818387803b158015611d9e57600080fd5b505af1158015611db2573d6000803e3d6000fd5b505050505b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6008546001600160a01b031681565b6029546301000000900460ff1681565b6007546040805163bc4c4b3760e01b815233600482015260006024820181905291516001600160a01b039093169263bc4c4b3792604480840193602093929083900390910190829087803b158015611e5857600080fd5b505af1158015611e6c573d6000803e3d6000fd5b505050506040513d6020811015611c6957600080fd5b6001600160a01b03166000908152600c602052604090205460ff1690565b60165481565b60295462010000900460ff1681565b60285481565b602954600160481b900460ff1681565b602954600160401b900460ff1681565b60205481565b611ee96139ad565b6005546001600160a01b03908116911614611f39576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b601f54611f4e82670de0b6b3a7640000613a9d565b601f81905560408051838152602081019290925280517fab0ec7468909bac916971a36711bb7a453201e59940de1fb0be6acc303854ffd9281900390910190a15050565b600754604080516304ddf6ef60e11b815290516000926001600160a01b0316916309bbedde916004808301926020929190829003018186803b158015611aec57600080fd5b611fdf6139ad565b6005546001600160a01b0390811691161461202f576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b612038816144d5565b506007546008546040805162241fbd60e51b81526001600160a01b03928316600482015260006024820181905291519290931692630483f7a0926044808301939282900301818387803b15801561188657600080fd5b6120966139ad565b6005546001600160a01b039081169116146120e6576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b828114612136576040805162461bcd60e51b8152602060048201526019602482015278105c9c985e481cda5e995cc81b5d5cdd08189948195c5d585b603a1b604482015290519081900360640190fd5b60005b8381101561189a576000612170670de0b6b3a764000085858581811061215b57fe5b90506020020135613a9d90919063ffffffff16565b90506121983387878581811061218257fe5b905060200201356001600160a01b031683613af6565b50600101612139565b60155481565b600754604080516370a0823160e01b81526001600160a01b038481166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b1580156121f857600080fd5b505afa15801561220c573d6000803e3d6000fd5b505050506040513d602081101561222257600080fd5b505192915050565b60295460ff1681565b6001600160a01b031660009081526020819052604090205490565b6122566139ad565b6005546001600160a01b039081169116146122a6576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b6005546040516000916001600160a01b031690600080516020615b2a833981519152908390a3600580546001600160a01b0319169055565b6122e66139ad565b6005546001600160a01b03908116911614612336576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b60295460ff600160481b90910416151581151514156123865760405162461bcd60e51b8152600401808060200182810382526028815260200180615a616028913960400191505060405180910390fd5b60298054911515600160481b0260ff60481b19909216919091179055565b602954600160381b900460ff1681565b602954600160301b900460ff1681565b601b5481565b602954600160281b900460ff1681565b60225481565b601d5481565b6123ee6139ad565b6005546001600160a01b0390811691161461243e576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b6006546001600160a01b038381169116141561248b5760405162461bcd60e51b8152600401808060200182810382526039815260200180615a286039913960400191505060405180910390fd5b6001600160a01b0382166000908152600b602052604090205460ff16151581151514156124e95760405162461bcd60e51b815260040180806020018281038252603a8152602001806159ee603a913960400191505060405180910390fd5b6001600160a01b038281166000818152600b6020526040808220805460ff1916861515179055600754815162241fbd60e51b81526004810194909452602484018390529051931692630483f7a092604480820193929182900301818387803b1580156115c757600080fd5b61255c6139ad565b6005546001600160a01b039081169116146125ac576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b6007546001600160a01b03828116911614156125f95760405162461bcd60e51b815260040180806020018281038252602d815260200180615c30602d913960400191505060405180910390fd5b6040805163064591a760e11b8152306004820152905182916001600160a01b03831691630c8b234e91602480820192602092909190829003018186803b15801561264257600080fd5b505afa158015612656573d6000803e3d6000fd5b505050506040513d602081101561266c57600080fd5b50516126a95760405162461bcd60e51b8152600401808060200182810382526038815260200180615a896038913960400191505060405180910390fd5b6040805162241fbd60e51b81526001600160a01b0383166004820181905260006024830181905292519092630483f7a0926044808201939182900301818387803b1580156126f657600080fd5b505af115801561270a573d6000803e3d6000fd5b50506040805162241fbd60e51b815230600482015260006024820181905291516001600160a01b0386169450630483f7a093506044808301939282900301818387803b15801561275957600080fd5b505af115801561276d573d6000803e3d6000fd5b50505050806001600160a01b0316630483f7a0612788612b1b565b60006040518363ffffffff1660e01b815260040180836001600160a01b03168152602001821515815260200192505050600060405180830381600087803b1580156127d257600080fd5b505af11580156127e6573d6000803e3d6000fd5b50506006546040805162241fbd60e51b81526001600160a01b03928316600482015260006024820181905291519286169450630483f7a093506044808201939182900301818387803b15801561283b57600080fd5b505af115801561284f573d6000803e3d6000fd5b50506008546040805162241fbd60e51b81526001600160a01b03928316600482015260006024820181905291519286169450630483f7a093506044808201939182900301818387803b1580156128a457600080fd5b505af11580156128b8573d6000803e3d6000fd5b50506040805162241fbd60e51b815261dead600482015260006024820181905291516001600160a01b0386169450630483f7a093506044808301939282900301818387803b15801561290957600080fd5b505af115801561291d573d6000803e3d6000fd5b50506040805162241fbd60e51b81526000600482018190526024820181905291516001600160a01b0386169450630483f7a093506044808301939282900301818387803b15801561296d57600080fd5b505af1158015612981573d6000803e3d6000fd5b50506007546040516001600160a01b03918216935090851691507f90c7d74461c613da5efa97d90740869367d74ab3aa5837aa4ae9a975f954b7a890600090a3600780546001600160a01b0319166001600160a01b039290921691909117905550565b6129ec6139ad565b6005546001600160a01b03908116911614612a3c576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b602a80546001600160a01b0319166001600160a01b0392909216919091179055565b60275481565b612a6c6139ad565b6005546001600160a01b03908116911614612abc576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b602654612ad182670de0b6b3a7640000613a9d565b602681905560408051838152602081019290925280517f0273e0904ccd5aa39aadf810a8d0fc96671a08ba577fe49feab57fa1b6aad8309281900390910190a15050565b60195481565b6005546001600160a01b031690565b612b326139ad565b6005546001600160a01b03908116911614612b82576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b602754604080519182526020820183905280517f8c77526a6c0a7aa7cec23fef2dbb5958248deca84a91f836bd9e04a2aea4e6db9281900390910190a1602755565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561166f5780601f106116445761010080835404028352916020019161166f565b612c2d6139ad565b6005546001600160a01b03908116911614612c7d576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b6029805491151563010000000263ff00000019909216919091179055565b602954600160501b900460ff1681565b612cb36139ad565b6005546001600160a01b03908116911614612d03576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b6008546001600160a01b0383811691161415612d505760405162461bcd60e51b8152600401808060200182810382526035815260200180615b8d6035913960400191505060405180910390fd5b611c69828261479e565b612d626139ad565b6005546001600160a01b03908116911614612db2576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b42602355436024556029805462ff000019169055565b612dd06139ad565b6005546001600160a01b03908116911614612e20576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b6006546040805163c45a015560e01b815290516000926001600160a01b03169163c45a0155916004808301926020929190829003018186803b158015612e6557600080fd5b505afa158015612e79573d6000803e3d6000fd5b505050506040513d6020811015612e8f57600080fd5b5051600954604080516364e329cb60e11b81523060048201526001600160a01b0392831660248201529051919092169163c9c653969160448083019260209291908290030181600087803b158015612ee657600080fd5b505af1158015612efa573d6000803e3d6000fd5b505050506040513d6020811015612f1057600080fd5b5051600880546001600160a01b0319166001600160a01b038084169190911791829055919250612f429116600161479e565b50565b60075460408051631bc9e27b60e21b815290516000926001600160a01b031691636f2789ec916004808301926020929190829003018186803b158015611aec57600080fd5b600061168d612f976139ad565b8461191f85604051806060016040528060258152602001615c0b6025913960016000612fc16139ad565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061436c565b602954600160581b900460ff1681565b600754604080516302a2e74960e61b81526001600160a01b0384811660048301529151600093929092169163a8b9d24091602480820192602092909190829003018186803b1580156121f857600080fd5b600061168d6130606139ad565b8484613af6565b600e6020526000908152604090205460ff1681565b6007546040805163fbcbc0f160e01b81526001600160a01b038481166004830152915160009384938493849384938493169163fbcbc0f19160248083019260c0929190829003018186803b1580156130d357600080fd5b505afa1580156130e7573d6000803e3d6000fd5b505050506040513d60c08110156130fd57600080fd5b508051602082015160408301516060840151608085015160a090950151939c929b5090995097509195509350915050565b6009546001600160a01b031681565b6131456139ad565b6005546001600160a01b03908116911614613195576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b6018899055601a88905560198790556131b8876131b28b8b61394e565b9061394e565b6021556015869055601785905560168490556131d8846131b2888861394e565b602055601b839055601d829055601c8190556131f8816131b2858561394e565b60228190556021546020805460408051938452918301528181019290925290517fe06a46af1c04656f68e4f75cbbb23baa176651c7f99930a378ef9f1616dc2b8c9181900360600190a1505050505050505050565b6132556139ad565b6005546001600160a01b039081169116146132a5576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b60295460ff600160401b90910416151581151514156132f55760405162461bcd60e51b8152600401808060200182810382526023815260200180615b4a6023913960400191505060405180910390fd5b60298054911515600160401b0260ff60401b19909216919091179055565b600a6020526000908152604090205460ff1681565b60106020526000908152604090205481565b6133426139ad565b6005546001600160a01b03908116911614613392576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600c602052604090205460ff1615158115151415613403576040805162461bcd60e51b815260206004820152601a6024820152794163636f756e7420616c726561647920276578636c756465642760301b604482015290519081900360640190fd5b6001600160a01b0382166000818152600c6020908152604091829020805460ff1916851515908117909155825190815291517f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79281900390910190a25050565b61346b6139ad565b6005546001600160a01b039081169116146134bb576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b60285560298054911515600160501b0260ff60501b19909216919091179055565b601c5481565b60185481565b6134f06139ad565b6005546001600160a01b03908116911614613540576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b60255461355583670de0b6b3a7640000613a9d565b602581905560298054841515600160201b90810260ff60201b199092169190911791829055604080518581526020810194909452910460ff16151582820152517fd6d1ec2dffd2df16cb6d0859837b49920203bb429cc368ce9eab6df4d60e94399181900360600190a1505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b601a5481565b6135fd6139ad565b6005546001600160a01b0390811691161461364d576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b6029805460ff1916911515919091179055565b601f5481565b60245481565b60255481565b60075460408051632f842d8560e21b815290516000926001600160a01b03169163be10b614916004808301926020929190829003018186803b158015611aec57600080fd5b6136bf6139ad565b6005546001600160a01b0390811691161461370f576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b6007546040805163e98030c760e01b81526004810184905290516001600160a01b039092169163e98030c79160248082019260009290919082900301818387803b15801561188657600080fd5b602954610100900460ff1681565b6137726139ad565b6005546001600160a01b039081169116146137c2576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b60298054911515600160381b0260ff60381b19909216919091179055565b6137e86139ad565b6005546001600160a01b03908116911614613838576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b6001600160a01b03811661387d5760405162461bcd60e51b815260040180806020018281038252602681526020018061591b6026913960400191505060405180910390fd5b6005546040516001600160a01b03808416921690600080516020615b2a83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6138cf6139ad565b6005546001600160a01b0390811691161461391f576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b602980549115156101000261ff0019909216919091179055565b600d6020526000908152604090205460ff1681565b6000828201838110156139a6576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b9392505050565b3390565b6001600160a01b0383166139f65760405162461bcd60e51b8152600401808060200182810382526024815260200180615be76024913960400191505060405180910390fd5b6001600160a01b038216613a3b5760405162461bcd60e51b81526004018080602001828103825260228152602001806159416022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600082613aac57506000611691565b82820282848281613ab957fe5b04146139a65760405162461bcd60e51b8152600401808060200182810382526021815260200180615ac16021913960400191505060405180910390fd5b6001600160a01b038316613b3b5760405162461bcd60e51b8152600401808060200182810382526025815260200180615bc26025913960400191505060405180910390fd5b6001600160a01b038216613b805760405162461bcd60e51b81526004018080602001828103825260238152602001806158a56023913960400191505060405180910390fd5b6001600160a01b0383166000908152600d602052604090205460ff16158015613bc257506001600160a01b0382166000908152600d602052604090205460ff16155b8015613bde5750326000908152600d602052604090205460ff16155b613c25576040805162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b604482015290519081900360640190fd5b613c2d612b1b565b6001600160a01b0316836001600160a01b031614613c945760295462010000900460ff1615613c94576040805162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99c81c185d5cd95960921b604482015290519081900360640190fd5b613c9c612b1b565b6001600160a01b0316836001600160a01b031614158015613cd65750613cc0612b1b565b6001600160a01b0316826001600160a01b031614155b15613ce657613ce68383836148d0565b326000908152600d602052604090205460ff1615613d0357614367565b6001600160a01b0383166000908152600e602052604090205460ff161561405f576000613d2f84612233565b90506000613d486023544261510d90919063ffffffff16565b90506301dfe200811115613d7b576001600160a01b0385166000908152600e60205260409020805460ff19169055613e8d565b6000613d87868361514f565b6001600160a01b03871660009081526010602052604081205491925090613daf90839061510d565b6001600160a01b0387166000908152600a602052604090205490915060ff1680613df157506001600160a01b0386166000908152600b602052604090205460ff165b15613e0c576026548110613e0757602654613e09565b805b90505b6001600160a01b038716600090815260106020908152604080832054600f909252909120548691613e4d9184916131b291613e469161510d565b889061510d565b1015613e8a5760405162461bcd60e51b81526004018080602001828103825260328152602001806158c86032913960400191505060405180910390fd5b50505b6001600160a01b038516600090815260106020908152604080832054600f909252822054613ec691613ebf919061510d565b849061510d565b90506000818511613ed8576000613ee2565b613ee2858361510d565b6001600160a01b038816600090815260106020526040902080548201905590508015801590613f4b57506001600160a01b0386166000908152600a602052604090205460ff1680613f4b57506001600160a01b0386166000908152600b602052604090205460ff165b1561405a576001600160a01b038716600090815260146020526040902054426201518090910110613f9c576001600160a01b0387166000908152601460205260409020600101805482019055613fbb565b6001600160a01b03871660009081526014602052604090206001018190555b6001600160a01b0387166000908152601460205260409020429055602954600160501b900460ff161561405a576028546001600160a01b038816600090815260146020526040902060010154111561405a576040805162461bcd60e51b815260206004820152601e60248201527f52656163686564206d6178206461696c79207665737420746f2073656c6c0000604482015290519081900360640190fd5b505050505b80614075576140708383600061531c565b614367565b600061408030612233565b601f546029549192508210159060ff1680156140a65750602954600160601b900460ff16155b80156140cb57506001600160a01b0385166000908152600a602052604090205460ff16155b80156140d45750805b15614103576029805460ff60601b1916600160601b1790556140f58261545a565b6029805460ff60601b191690555b6029546001600160a01b0386166000908152600c602052604090205460ff600160601b90920482161591168061415157506001600160a01b0385166000908152600c602052604090205460ff165b806141665750602954600160401b900460ff16155b806141895750614174612b1b565b6001600160a01b0316866001600160a01b0316145b806141ac5750614197612b1b565b6001600160a01b0316856001600160a01b0316145b156141b5575060005b60008115614268576001600160a01b0386166000908152600a602052604090205460ff1615614205576141fe60646141f860205488613a9d90919063ffffffff16565b9061556b565b905061425d565b6001600160a01b0387166000908152600a602052604090205460ff1615614240576141fe60646141f860215488613a9d90919063ffffffff16565b61425a60646141f860225488613a9d90919063ffffffff16565b90505b61426887308361531c565b61427c8787614277888561510d565b61531c565b6007546001600160a01b031663e30443bc8861429781612233565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156142dd57600080fd5b505af19250505080156142ee575060015b506007546001600160a01b031663e30443bc8761430a81612233565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561435057600080fd5b505af1925050508015614361575060015b50505050505b505050565b600081848411156143fb5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156143c05781810151838201526020016143a8565b50505050905090810190601f1680156143ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b03821661445e576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60025461446b908261394e565b6002556001600160a01b038216600090815260208190526040902054614491908261394e565b6001600160a01b038316600081815260208181526040808320949094558351858152935192939192600080516020615b6d8339815191529281900390910190a35050565b6006546040516000916001600160a01b0390811691908416907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e908490a3600680546001600160a01b039081166000908152600b60209081526040808320805460ff1916905584546001600160a01b0319168785161794859055805163c45a015560e01b8152905192949093169263c45a01559260048083019392829003018186803b15801561458457600080fd5b505afa158015614598573d6000803e3d6000fd5b505050506040513d60208110156145ae57600080fd5b50516009546040805163e6a4390560e01b81523060048201526001600160a01b0392831660248201529051919092169163e6a43905916044808301926020929190829003018186803b15801561460357600080fd5b505afa158015614617573d6000803e3d6000fd5b505050506040513d602081101561462d57600080fd5b505190506001600160a01b03811661473d57600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561468d57600080fd5b505afa1580156146a1573d6000803e3d6000fd5b505050506040513d60208110156146b757600080fd5b5051600954604080516364e329cb60e11b81523060048201526001600160a01b0392831660248201529051919092169163c9c653969160448083019260209291908290030181600087803b15801561470e57600080fd5b505af1158015614722573d6000803e3d6000fd5b505050506040513d602081101561473857600080fd5b505190505b6001600160a01b039283166000908152600b602090815260408083208054600160ff199182168117909255600880546001600160a01b0319169689169690961780875588168552600a90935292208054909116909117905554909116919050565b6001600160a01b0382166000908152600a602052604090205460ff16151581151514156147fc5760405162461bcd60e51b81526004018080602001828103825260388152602001806159636038913960400191505060405180910390fd5b6001600160a01b0382166000908152600a60205260409020805460ff19168215801591909117909155614894576007546040805162241fbd60e51b81526001600160a01b0385811660048301526000602483018190529251931692630483f7a09260448084019391929182900301818387803b15801561487b57600080fd5b505af115801561488f573d6000803e3d6000fd5b505050505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b602954600160481b900460ff16801561490157506001600160a01b0382166000908152600a602052604090205460ff165b15614978576001600160a01b03831660009081526012602052604090205442620151809091011115614978576040805162461bcd60e51b815260206004820152601b60248201527a13db99481cd95b1b081c195c8819185e481a5cc8185b1b1bddd959602a1b604482015290519081900360640190fd5b6001600160a01b0382166000908152600a602052604090205460ff1615614a1a576001600160a01b0383166000908152601260205260409020544262015180909101106149e2576001600160a01b03831660009081526013602052604090208054820190556149fe565b6001600160a01b03831660009081526013602052604090208190555b6001600160a01b03831660009081526012602052604090204290555b602954600160581b900460ff1615614a85576027546001600160a01b0384166000908152601360205260409020541115614a855760405162461bcd60e51b81526004018080602001828103825260218152602001806158fa6021913960400191505060405180910390fd5b6029546301000000900460ff1615614af6576001600160a01b0383163014614af657601e54811115614af6576040805162461bcd60e51b8152602060048201526015602482015274195e18d959591cc81b585e081d1e08185b5bdd5b9d605a1b604482015290519081900360640190fd5b602954600160301b900460ff1615614c71576001600160a01b0383163014801590614b2a57506001600160a01b0382163014155b15614c71576001600160a01b0382166000908152600a602052604090205460ff16614bd0576001600160a01b038216600090815260116020526040902054601e01421015614bb4576040805162461bcd60e51b815260206004820152601260248201527110dbdbdb191bdddb881a5b881959999958dd60721b604482015290519081900360640190fd5b6001600160a01b03821660009081526011602052604090204290555b6001600160a01b0383166000908152600a602052604090205460ff16614c71576001600160a01b038316600090815260116020526040902054601e01421015614c55576040805162461bcd60e51b815260206004820152601260248201527110dbdbdb191bdddb881a5b881959999958dd60721b604482015290519081900360640190fd5b6001600160a01b03831660009081526011602052604090204290555b602954600160281b900460ff1615614f85576001600160a01b0383166000908152600a602052604090205460ff168015614cc457506001600160a01b0382166000908152600b602052604090205460ff16155b8015614cd957506001600160a01b0382163014155b8015614cee57506001600160a01b0383163014155b15614d0857326001600160a01b03831614614d0857600080fd5b6024546002014311614f8557326000818152600d60205260409020805460ff191660011790556001600160a01b03841614801590614d4f5750326001600160a01b03831614155b15614dbf576007546040805162241fbd60e51b81523260048201526001602482015290516001600160a01b0390921691630483f7a09160448082019260009290919082900301818387803b158015614da657600080fd5b505af1158015614dba573d6000803e3d6000fd5b505050505b6001600160a01b0383166000908152600a602052604090205460ff16158015614e0157506001600160a01b0383166000908152600b602052604090205460ff16155b8015614e1657506001600160a01b0383163014155b15614ea2576001600160a01b038084166000818152600d6020526040808220805460ff19166001908117909155600754825162241fbd60e51b8152600481019590955260248501919091529051931692630483f7a092604480820193929182900301818387803b158015614e8957600080fd5b505af1158015614e9d573d6000803e3d6000fd5b505050505b6001600160a01b0382166000908152600a602052604090205460ff16158015614ee457506001600160a01b0382166000908152600b602052604090205460ff16155b8015614ef957506001600160a01b0382163014155b15614f85576001600160a01b038083166000818152600d6020526040808220805460ff19166001908117909155600754825162241fbd60e51b8152600481019590955260248501919091529051931692630483f7a092604480820193929182900301818387803b158015614f6c57600080fd5b505af1158015614f80573d6000803e3d6000fd5b505050505b602954600160201b900460ff161561500f576001600160a01b0383166000908152600a602052604090205460ff168015614fcd57506006546001600160a01b03838116911614155b8015614fe257506001600160a01b0382163014155b1561500f576000614ff283612233565b602554909150615002828461394e565b111561500d57600080fd5b505b602954600160381b900460ff1615614367576001600160a01b038316301480159061504357506001600160a01b0382163014155b15614367576001600160a01b0383166000908152600a602052604090205460ff168061508757506001600160a01b0382166000908152600a602052604090205460ff165b806150aa57506001600160a01b0383166000908152600b602052604090205460ff165b806150cd57506001600160a01b0382166000908152600b602052604090205460ff165b614367576040805162461bcd60e51b815260206004820152600c60248201526b4e6f207472616e736665727360a01b604482015290519081900360640190fd5b60006139a683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061436c565b6001600160a01b0382166000908152600e602052604081205460ff1615611691576001600160a01b0383166000908152600f60205260409020546201518083101561519d5760009150615315565b6224ea008310156151bf576151b8600a6141f8836002613a9d565b9150615315565b6249d4008310156151da576151b860646141f8836019613a9d565b626ebe008310156151f5576151b860646141f883601e613a9d565b6293a800831015615210576151b860646141f8836023613a9d565b62b8920083101561522b576151b860646141f8836018613a9d565b62dd7c00831015615246576151b860646141f883602d613a9d565b630102660083101561525d576151b881600261556b565b6301275000831015615279576151b860646141f8836038613a9d565b63014c3a00831015615295576151b860646141f883603e613a9d565b63017124008310156152b1576151b860646141f8836044613a9d565b6301960e008310156152cd576151b860646141f883604c613a9d565b6301baf8008310156152e9576151b860646141f8836054613a9d565b6301dfe200831015615305576151b860646141f883605c613a9d565b6301dfe200831115615315578091505b5092915050565b6001600160a01b0383166153615760405162461bcd60e51b8152600401808060200182810382526025815260200180615bc26025913960400191505060405180910390fd5b6001600160a01b0382166153a65760405162461bcd60e51b81526004018080602001828103825260238152602001806158a56023913960400191505060405180910390fd5b6153e38160405180606001604052806026815260200161599b602691396001600160a01b038616600090815260208190526040902054919061436c565b6001600160a01b038085166000908152602081905260408082209390935590841681522054615412908261394e565b6001600160a01b03808416600081815260208181526040918290209490945580518581529051919392871692600080516020615b6d83398151915292918290030190a3505050565b6000601d54601a54601754010190506000601c546019546016540101905060006022546021546020540101905060006154a0826141f88688613a9d90919063ffffffff16565b905060006154af82600261556b565b905060006154bd878361510d565b9050476154c9826155aa565b60006154d5478361510d565b905060006154ea60026141f88981868e613a9d565b905060006154fc886141f8858c613a9d565b602a546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015615537573d6000803e3d6000fd5b5061554286836156d9565b6029544790610100900460ff161561555d5761555d816157ac565b505050505050505050505050565b60006139a683836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b81525061583f565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106155d957fe5b6001600160a01b03928316602091820292909201015260095482519116908290600190811061560457fe5b6001600160a01b03928316602091820292909201015260065461562a91309116846139b1565b60065460405163791ac94760e01b8152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b838110156156b0578181015183820152602001615698565b505050509050019650505050505050600060405180830381600087803b1580156115c757600080fd5b6006546156f19030906001600160a01b0316846139b1565b6006546001600160a01b031663f305d719823085600080615710612b1b565b426040518863ffffffff1660e01b815260040180876001600160a01b03168152602001868152602001858152602001848152602001836001600160a01b0316815260200182815260200196505050505050506060604051808303818588803b15801561577b57600080fd5b505af115801561578f573d6000803e3d6000fd5b50505050506040513d60608110156157a657600080fd5b50505050565b6007546040516000916001600160a01b03169083908381818185875af1925050503d80600081146157f9576040519150601f19603f3d011682016040523d82523d6000602084013e6157fe565b606091505b505090508015611c69576040805183815290517fb0cc2628d6d644cf6be9d8110e142297ac910d6d8026d795a99f272fd9ad60b19181900360200190a15050565b6000818361588e5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156143c05781810151838201526020016143a8565b50600083858161589a57fe5b049594505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737343616e277420627970617373207665737420616e642063616e2774206279706173732076657374656453656c6c4c696d69744d6178206461696c792073656c6c20616d6f756e742077617320726561636865644f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734175746f6d61746564206d61726b6574206d616b6572207061697220697320616c72656164792073657420746f20746861742076616c756545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63655570646174696e6720746f2063757272656e742076616c75652c20656e61626c654d61784461696c7953656c6c4175746f6d61746564206d61726b6574206d616b657220726f7574657220697320616c72656164792073657420746f20746861742076616c7565526f757465722063616e6e6f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572526f75746572735570646174696e6720746f2063757272656e742076616c75652c206461696c79436f6f6c446f776e546865206e6577206469766964656e6420747261636b6572206d757374206265206f776e656420627920746f6b656e20636f6e7472616374536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05570646174696e6720746f2063757272656e742076616c75652c2074616b6546656573ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef506169722063616e6e6f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572506169727345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f546865206469766964656e6420747261636b657220616c72656164792068617320746861742061646472657373a2646970667358221220de170779f74076201e2db667fe75cf13d820fc9cf467527b6b5cffa9394b29ff64736f6c63430007060033

Deployed Bytecode

0x6080604052600436106104365760003560e01c806204cf0b146104425780630483f7a01461047057806306fdde03146104ab578063095ea7b3146105355780630fb3701c1461058257806312db0016146105ac5780631694505e146105c157806316c38b3c146105f257806318160ddd1461061e5780631fa71a3b14610645578063208e0b601461066f57806323b872dd1461068457806325c60816146106c75780632a32cb9f146106dc5780632c1f52161461075757806330bb4cff1461076c578063313ce567146107815780633663f9e4146107ac57806336a143c1146107c157806339509351146107f45780633b9f3e8b1461082d5780633e2763ba1461084257806340c10f1914610857578063423ad37514610890578063443ad4d3146108a5578063455a4396146108d857806349bd5a5e146109135780634e45e92a146109285780634e71d92d1461093d5780634fbee193146109525780635665b363146109855780635c975abb1461099a5780635d49d342146109af5780635dc106d1146109c45780635dd912f5146109d95780635df346d0146109ee5780636402511e14610a0357806364b0f65314610a2d57806365b8dbc014610a425780636724348214610a75578063681e0a3f14610b405780636843cd8414610b555780636ddd171314610b8857806370a0823114610b9d578063715018a614610bd057806372d580ef14610be5578063736dc68414610c11578063787a08a614610c265780637a54037c14610c3b5780637b4cf05f14610c5057806382663d1d14610c6557806383372d7c14610c7a5780638372a4d014610c8f57806388bdd9be14610cca5780638a78044714610cfd5780638ab8ef0614610d305780638c3e7c1d14610d455780638d61785c14610d6f5780638da5cb5b14610d8457806394f1682a14610d9957806395d89b4114610dc357806395f6f56714610dd8578063995975b114610e045780639a7a23d614610e195780639b6c3ef514610e545780639e78fb4f14610e69578063a26579ad14610e7e578063a457c2d714610e93578063a5b01dfa14610ecc578063a8b9d24014610ee1578063a9059cbb14610f14578063acca78df14610f4d578063ad56c13c14610f80578063ad5c464814610ff0578063add5df6614611005578063b0aef70214611061578063b62496f51461108d578063b7aa3221146110c0578063c0246668146110f3578063c896edfb1461112e578063cc8c089414611160578063d7ddba2f14611175578063dc6ba8031461118a578063dd62ed3e146111bc578063dd6f0e7c146111f7578063e01af92c1461120c578063e2f4560514611238578063e3645ac41461124d578063e54f4faa14611262578063e6bd610d14611277578063e98030c71461128c578063eb2889f2146112b6578063f1f3142c146112cb578063f2fde38b146112f7578063f56a11171461132a578063fe575a87146113565761043d565b3661043d57005b600080fd5b34801561044e57600080fd5b5061046e6004803603602081101561046557600080fd5b50351515611389565b005b34801561047c57600080fd5b5061046e6004803603604081101561049357600080fd5b506001600160a01b038135169060200135151561144f565b3480156104b757600080fd5b506104c06115e3565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104fa5781810151838201526020016104e2565b50505050905090810190601f1680156105275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561054157600080fd5b5061056e6004803603604081101561055857600080fd5b506001600160a01b038135169060200135611679565b604080519115158252519081900360200190f35b34801561058e57600080fd5b5061046e600480360360208110156105a557600080fd5b5035611697565b3480156105b857600080fd5b5061056e611748565b3480156105cd57600080fd5b506105d6611758565b604080516001600160a01b039092168252519081900360200190f35b3480156105fe57600080fd5b5061046e6004803603602081101561061557600080fd5b50351515611767565b34801561062a57600080fd5b506106336117db565b60408051918252519081900360200190f35b34801561065157600080fd5b5061046e6004803603602081101561066857600080fd5b50356117e1565b34801561067b57600080fd5b506106336118a1565b34801561069057600080fd5b5061056e600480360360608110156106a757600080fd5b506001600160a01b038135811691602081013590911690604001356118a7565b3480156106d357600080fd5b5061046e61192e565b3480156106e857600080fd5b5061046e600480360360408110156106ff57600080fd5b810190602081018135600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460208302840111600160201b8311171561074c57600080fd5b919350915035611995565b34801561076357600080fd5b506105d6611a98565b34801561077857600080fd5b50610633611aa7565b34801561078d57600080fd5b50610796611b1d565b6040805160ff9092168252519081900360200190f35b3480156107b857600080fd5b50610633611b22565b3480156107cd57600080fd5b50610633600480360360208110156107e457600080fd5b50356001600160a01b0316611b28565b34801561080057600080fd5b5061056e6004803603604081101561081757600080fd5b506001600160a01b038135169060200135611b3a565b34801561083957600080fd5b5061046e611b88565b34801561084e57600080fd5b50610633611c01565b34801561086357600080fd5b5061046e6004803603604081101561087a57600080fd5b506001600160a01b038135169060200135611c07565b34801561089c57600080fd5b50610633611c6d565b3480156108b157600080fd5b5061056e600480360360208110156108c857600080fd5b50356001600160a01b0316611c73565b3480156108e457600080fd5b5061046e600480360360408110156108fb57600080fd5b506001600160a01b0381351690602001351515611c88565b34801561091f57600080fd5b506105d6611de2565b34801561093457600080fd5b5061056e611df1565b34801561094957600080fd5b5061046e611e01565b34801561095e57600080fd5b5061056e6004803603602081101561097557600080fd5b50356001600160a01b0316611e82565b34801561099157600080fd5b50610633611ea0565b3480156109a657600080fd5b5061056e611ea6565b3480156109bb57600080fd5b50610633611eb5565b3480156109d057600080fd5b5061056e611ebb565b3480156109e557600080fd5b5061056e611ecb565b3480156109fa57600080fd5b50610633611edb565b348015610a0f57600080fd5b5061046e60048036036020811015610a2657600080fd5b5035611ee1565b348015610a3957600080fd5b50610633611f92565b348015610a4e57600080fd5b5061046e60048036036020811015610a6557600080fd5b50356001600160a01b0316611fd7565b348015610a8157600080fd5b5061046e60048036036040811015610a9857600080fd5b810190602081018135600160201b811115610ab257600080fd5b820183602082011115610ac457600080fd5b803590602001918460208302840111600160201b83111715610ae557600080fd5b919390929091602081019035600160201b811115610b0257600080fd5b820183602082011115610b1457600080fd5b803590602001918460208302840111600160201b83111715610b3557600080fd5b50909250905061208e565b348015610b4c57600080fd5b506106336121a1565b348015610b6157600080fd5b5061063360048036036020811015610b7857600080fd5b50356001600160a01b03166121a7565b348015610b9457600080fd5b5061056e61222a565b348015610ba957600080fd5b5061063360048036036020811015610bc057600080fd5b50356001600160a01b0316612233565b348015610bdc57600080fd5b5061046e61224e565b348015610bf157600080fd5b5061046e60048036036020811015610c0857600080fd5b503515156122de565b348015610c1d57600080fd5b5061056e6123a4565b348015610c3257600080fd5b5061056e6123b4565b348015610c4757600080fd5b506106336123c4565b348015610c5c57600080fd5b5061056e6123ca565b348015610c7157600080fd5b506106336123da565b348015610c8657600080fd5b506106336123e0565b348015610c9b57600080fd5b5061046e60048036036040811015610cb257600080fd5b506001600160a01b03813516906020013515156123e6565b348015610cd657600080fd5b5061046e60048036036020811015610ced57600080fd5b50356001600160a01b0316612554565b348015610d0957600080fd5b5061046e60048036036020811015610d2057600080fd5b50356001600160a01b03166129e4565b348015610d3c57600080fd5b50610633612a5e565b348015610d5157600080fd5b5061046e60048036036020811015610d6857600080fd5b5035612a64565b348015610d7b57600080fd5b50610633612b15565b348015610d9057600080fd5b506105d6612b1b565b348015610da557600080fd5b5061046e60048036036020811015610dbc57600080fd5b5035612b2a565b348015610dcf57600080fd5b506104c0612bc4565b348015610de457600080fd5b5061046e60048036036020811015610dfb57600080fd5b50351515612c25565b348015610e1057600080fd5b5061056e612c9b565b348015610e2557600080fd5b5061046e60048036036040811015610e3c57600080fd5b506001600160a01b0381351690602001351515612cab565b348015610e6057600080fd5b5061046e612d5a565b348015610e7557600080fd5b5061046e612dc8565b348015610e8a57600080fd5b50610633612f45565b348015610e9f57600080fd5b5061056e60048036036040811015610eb657600080fd5b506001600160a01b038135169060200135612f8a565b348015610ed857600080fd5b5061056e612ff2565b348015610eed57600080fd5b5061063360048036036020811015610f0457600080fd5b50356001600160a01b0316613002565b348015610f2057600080fd5b5061056e60048036036040811015610f3757600080fd5b506001600160a01b038135169060200135613053565b348015610f5957600080fd5b5061056e60048036036020811015610f7057600080fd5b50356001600160a01b0316613067565b348015610f8c57600080fd5b50610fb360048036036020811015610fa357600080fd5b50356001600160a01b031661307c565b604080516001600160a01b0390971687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b348015610ffc57600080fd5b506105d661312e565b34801561101157600080fd5b5061046e600480360361012081101561102957600080fd5b5080359060208101359060408101359060608101359060808101359060a08101359060c08101359060e081013590610100013561313d565b34801561106d57600080fd5b5061046e6004803603602081101561108457600080fd5b5035151561324d565b34801561109957600080fd5b5061056e600480360360208110156110b057600080fd5b50356001600160a01b0316613313565b3480156110cc57600080fd5b50610633600480360360208110156110e357600080fd5b50356001600160a01b0316613328565b3480156110ff57600080fd5b5061046e6004803603604081101561111657600080fd5b506001600160a01b038135169060200135151561333a565b34801561113a57600080fd5b5061046e6004803603604081101561115157600080fd5b50803515159060200135613463565b34801561116c57600080fd5b506106336134dc565b34801561118157600080fd5b506106336134e2565b34801561119657600080fd5b5061046e600480360360408110156111ad57600080fd5b508035906020013515156134e8565b3480156111c857600080fd5b50610633600480360360408110156111df57600080fd5b506001600160a01b03813581169160200135166135c4565b34801561120357600080fd5b506106336135ef565b34801561121857600080fd5b5061046e6004803603602081101561122f57600080fd5b503515156135f5565b34801561124457600080fd5b50610633613660565b34801561125957600080fd5b50610633613666565b34801561126e57600080fd5b5061063361366c565b34801561128357600080fd5b50610633613672565b34801561129857600080fd5b5061046e600480360360208110156112af57600080fd5b50356136b7565b3480156112c257600080fd5b5061056e61375c565b3480156112d757600080fd5b5061046e600480360360208110156112ee57600080fd5b5035151561376a565b34801561130357600080fd5b5061046e6004803603602081101561131a57600080fd5b50356001600160a01b03166137e0565b34801561133657600080fd5b5061046e6004803603602081101561134d57600080fd5b503515156138c7565b34801561136257600080fd5b5061056e6004803603602081101561137957600080fd5b50356001600160a01b0316613939565b6113916139ad565b6005546001600160a01b039081169116146113e1576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b60295460ff600160581b90910416151581151514156114315760405162461bcd60e51b815260040180806020018281038252602d8152602001806159c1602d913960400191505060405180910390fd5b60298054911515600160581b0260ff60581b19909216919091179055565b6114576139ad565b6005546001600160a01b039081169116146114a7576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b60075460408051634e7b827f60e01b81526001600160a01b03858116600483015291519190921691634e7b827f916024808301926020929190829003018186803b1580156114f457600080fd5b505afa158015611508573d6000803e3d6000fd5b505050506040513d602081101561151e57600080fd5b505115611572576040805162461bcd60e51b815260206004820152601f60248201527f416c7265616479206578636c756465642066726f6d206469766964656e647300604482015290519081900360640190fd5b6007546040805162241fbd60e51b81526001600160a01b038581166004830152841515602483015291519190921691630483f7a091604480830192600092919082900301818387803b1580156115c757600080fd5b505af11580156115db573d6000803e3d6000fd5b505050505050565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561166f5780601f106116445761010080835404028352916020019161166f565b820191906000526020600020905b81548152906001019060200180831161165257829003601f168201915b5050505050905090565b600061168d6116866139ad565b84846139b1565b5060015b92915050565b61169f6139ad565b6005546001600160a01b039081169116146116ef576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b601e5461170482670de0b6b3a7640000613a9d565b601e81905560408051838152602081019290925280517f47e32629af1fc3c60a5654749bbbe503cf7b16ccb001804be0740e01ea50ba159281900390910190a15050565b602954600160201b900460ff1681565b6006546001600160a01b031681565b61176f6139ad565b6005546001600160a01b039081169116146117bf576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b60298054911515620100000262ff000019909216919091179055565b60025490565b6117e96139ad565b6005546001600160a01b03908116911614611839576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b60075460408051631fa71a3b60e01b81526004810184905290516001600160a01b0390921691631fa71a3b9160248082019260009290919082900301818387803b15801561188657600080fd5b505af115801561189a573d6000803e3d6000fd5b5050505050565b60215481565b60006118b4848484613af6565b611924846118c06139ad565b61191f85604051806060016040528060288152602001615ae2602891396001600160a01b038a166000908152600160205260408120906118fe6139ad565b6001600160a01b03168152602081019190915260400160002054919061436c565b6139b1565b5060019392505050565b6119366139ad565b6005546001600160a01b03908116911614611986576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b6029805460ff60281b19169055565b61199d6139ad565b6005546001600160a01b039081169116146119ed576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b600080611a0283670de0b6b3a7640000613a9d565b90505b8382101561189a576000858584818110611a1b57fe5b905060200201356001600160a01b03169050611a38338284613af6565b6001600160a01b0381166000908152600f6020526040902054611a5b908361394e565b6001600160a01b039091166000908152600f6020908152604080832093909355600e905220805460ff191660019081179091559190910190611a05565b6007546001600160a01b031681565b600754604080516342d359d760e11b815290516000926001600160a01b0316916385a6b3ae916004808301926020929190829003018186803b158015611aec57600080fd5b505afa158015611b00573d6000803e3d6000fd5b505050506040513d6020811015611b1657600080fd5b5051905090565b601290565b60175481565b600f6020526000908152604090205481565b600061168d611b476139ad565b8461191f8560016000611b586139ad565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549061394e565b611b906139ad565b6005546001600160a01b03908116911614611be0576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b6029805460ff60301b198116600160301b9182900460ff1615909102179055565b60265481565b611c0f6139ad565b6005546001600160a01b03908116911614611c5f576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b611c698282614403565b5050565b60235481565b600b6020526000908152604090205460ff1681565b611c906139ad565b6005546001600160a01b03908116911614611ce0576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b8015611db7576001600160a01b0382166000908152600d602052604090205460ff1615611d4a576040805162461bcd60e51b8152602060048201526013602482015272105b1c9958591e48189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b6007546040805162241fbd60e51b81526001600160a01b0385811660048301526001602483015291519190921691630483f7a091604480830192600092919082900301818387803b158015611d9e57600080fd5b505af1158015611db2573d6000803e3d6000fd5b505050505b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6008546001600160a01b031681565b6029546301000000900460ff1681565b6007546040805163bc4c4b3760e01b815233600482015260006024820181905291516001600160a01b039093169263bc4c4b3792604480840193602093929083900390910190829087803b158015611e5857600080fd5b505af1158015611e6c573d6000803e3d6000fd5b505050506040513d6020811015611c6957600080fd5b6001600160a01b03166000908152600c602052604090205460ff1690565b60165481565b60295462010000900460ff1681565b60285481565b602954600160481b900460ff1681565b602954600160401b900460ff1681565b60205481565b611ee96139ad565b6005546001600160a01b03908116911614611f39576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b601f54611f4e82670de0b6b3a7640000613a9d565b601f81905560408051838152602081019290925280517fab0ec7468909bac916971a36711bb7a453201e59940de1fb0be6acc303854ffd9281900390910190a15050565b600754604080516304ddf6ef60e11b815290516000926001600160a01b0316916309bbedde916004808301926020929190829003018186803b158015611aec57600080fd5b611fdf6139ad565b6005546001600160a01b0390811691161461202f576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b612038816144d5565b506007546008546040805162241fbd60e51b81526001600160a01b03928316600482015260006024820181905291519290931692630483f7a0926044808301939282900301818387803b15801561188657600080fd5b6120966139ad565b6005546001600160a01b039081169116146120e6576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b828114612136576040805162461bcd60e51b8152602060048201526019602482015278105c9c985e481cda5e995cc81b5d5cdd08189948195c5d585b603a1b604482015290519081900360640190fd5b60005b8381101561189a576000612170670de0b6b3a764000085858581811061215b57fe5b90506020020135613a9d90919063ffffffff16565b90506121983387878581811061218257fe5b905060200201356001600160a01b031683613af6565b50600101612139565b60155481565b600754604080516370a0823160e01b81526001600160a01b038481166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b1580156121f857600080fd5b505afa15801561220c573d6000803e3d6000fd5b505050506040513d602081101561222257600080fd5b505192915050565b60295460ff1681565b6001600160a01b031660009081526020819052604090205490565b6122566139ad565b6005546001600160a01b039081169116146122a6576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b6005546040516000916001600160a01b031690600080516020615b2a833981519152908390a3600580546001600160a01b0319169055565b6122e66139ad565b6005546001600160a01b03908116911614612336576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b60295460ff600160481b90910416151581151514156123865760405162461bcd60e51b8152600401808060200182810382526028815260200180615a616028913960400191505060405180910390fd5b60298054911515600160481b0260ff60481b19909216919091179055565b602954600160381b900460ff1681565b602954600160301b900460ff1681565b601b5481565b602954600160281b900460ff1681565b60225481565b601d5481565b6123ee6139ad565b6005546001600160a01b0390811691161461243e576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b6006546001600160a01b038381169116141561248b5760405162461bcd60e51b8152600401808060200182810382526039815260200180615a286039913960400191505060405180910390fd5b6001600160a01b0382166000908152600b602052604090205460ff16151581151514156124e95760405162461bcd60e51b815260040180806020018281038252603a8152602001806159ee603a913960400191505060405180910390fd5b6001600160a01b038281166000818152600b6020526040808220805460ff1916861515179055600754815162241fbd60e51b81526004810194909452602484018390529051931692630483f7a092604480820193929182900301818387803b1580156115c757600080fd5b61255c6139ad565b6005546001600160a01b039081169116146125ac576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b6007546001600160a01b03828116911614156125f95760405162461bcd60e51b815260040180806020018281038252602d815260200180615c30602d913960400191505060405180910390fd5b6040805163064591a760e11b8152306004820152905182916001600160a01b03831691630c8b234e91602480820192602092909190829003018186803b15801561264257600080fd5b505afa158015612656573d6000803e3d6000fd5b505050506040513d602081101561266c57600080fd5b50516126a95760405162461bcd60e51b8152600401808060200182810382526038815260200180615a896038913960400191505060405180910390fd5b6040805162241fbd60e51b81526001600160a01b0383166004820181905260006024830181905292519092630483f7a0926044808201939182900301818387803b1580156126f657600080fd5b505af115801561270a573d6000803e3d6000fd5b50506040805162241fbd60e51b815230600482015260006024820181905291516001600160a01b0386169450630483f7a093506044808301939282900301818387803b15801561275957600080fd5b505af115801561276d573d6000803e3d6000fd5b50505050806001600160a01b0316630483f7a0612788612b1b565b60006040518363ffffffff1660e01b815260040180836001600160a01b03168152602001821515815260200192505050600060405180830381600087803b1580156127d257600080fd5b505af11580156127e6573d6000803e3d6000fd5b50506006546040805162241fbd60e51b81526001600160a01b03928316600482015260006024820181905291519286169450630483f7a093506044808201939182900301818387803b15801561283b57600080fd5b505af115801561284f573d6000803e3d6000fd5b50506008546040805162241fbd60e51b81526001600160a01b03928316600482015260006024820181905291519286169450630483f7a093506044808201939182900301818387803b1580156128a457600080fd5b505af11580156128b8573d6000803e3d6000fd5b50506040805162241fbd60e51b815261dead600482015260006024820181905291516001600160a01b0386169450630483f7a093506044808301939282900301818387803b15801561290957600080fd5b505af115801561291d573d6000803e3d6000fd5b50506040805162241fbd60e51b81526000600482018190526024820181905291516001600160a01b0386169450630483f7a093506044808301939282900301818387803b15801561296d57600080fd5b505af1158015612981573d6000803e3d6000fd5b50506007546040516001600160a01b03918216935090851691507f90c7d74461c613da5efa97d90740869367d74ab3aa5837aa4ae9a975f954b7a890600090a3600780546001600160a01b0319166001600160a01b039290921691909117905550565b6129ec6139ad565b6005546001600160a01b03908116911614612a3c576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b602a80546001600160a01b0319166001600160a01b0392909216919091179055565b60275481565b612a6c6139ad565b6005546001600160a01b03908116911614612abc576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b602654612ad182670de0b6b3a7640000613a9d565b602681905560408051838152602081019290925280517f0273e0904ccd5aa39aadf810a8d0fc96671a08ba577fe49feab57fa1b6aad8309281900390910190a15050565b60195481565b6005546001600160a01b031690565b612b326139ad565b6005546001600160a01b03908116911614612b82576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b602754604080519182526020820183905280517f8c77526a6c0a7aa7cec23fef2dbb5958248deca84a91f836bd9e04a2aea4e6db9281900390910190a1602755565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561166f5780601f106116445761010080835404028352916020019161166f565b612c2d6139ad565b6005546001600160a01b03908116911614612c7d576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b6029805491151563010000000263ff00000019909216919091179055565b602954600160501b900460ff1681565b612cb36139ad565b6005546001600160a01b03908116911614612d03576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b6008546001600160a01b0383811691161415612d505760405162461bcd60e51b8152600401808060200182810382526035815260200180615b8d6035913960400191505060405180910390fd5b611c69828261479e565b612d626139ad565b6005546001600160a01b03908116911614612db2576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b42602355436024556029805462ff000019169055565b612dd06139ad565b6005546001600160a01b03908116911614612e20576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b6006546040805163c45a015560e01b815290516000926001600160a01b03169163c45a0155916004808301926020929190829003018186803b158015612e6557600080fd5b505afa158015612e79573d6000803e3d6000fd5b505050506040513d6020811015612e8f57600080fd5b5051600954604080516364e329cb60e11b81523060048201526001600160a01b0392831660248201529051919092169163c9c653969160448083019260209291908290030181600087803b158015612ee657600080fd5b505af1158015612efa573d6000803e3d6000fd5b505050506040513d6020811015612f1057600080fd5b5051600880546001600160a01b0319166001600160a01b038084169190911791829055919250612f429116600161479e565b50565b60075460408051631bc9e27b60e21b815290516000926001600160a01b031691636f2789ec916004808301926020929190829003018186803b158015611aec57600080fd5b600061168d612f976139ad565b8461191f85604051806060016040528060258152602001615c0b6025913960016000612fc16139ad565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061436c565b602954600160581b900460ff1681565b600754604080516302a2e74960e61b81526001600160a01b0384811660048301529151600093929092169163a8b9d24091602480820192602092909190829003018186803b1580156121f857600080fd5b600061168d6130606139ad565b8484613af6565b600e6020526000908152604090205460ff1681565b6007546040805163fbcbc0f160e01b81526001600160a01b038481166004830152915160009384938493849384938493169163fbcbc0f19160248083019260c0929190829003018186803b1580156130d357600080fd5b505afa1580156130e7573d6000803e3d6000fd5b505050506040513d60c08110156130fd57600080fd5b508051602082015160408301516060840151608085015160a090950151939c929b5090995097509195509350915050565b6009546001600160a01b031681565b6131456139ad565b6005546001600160a01b03908116911614613195576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b6018899055601a88905560198790556131b8876131b28b8b61394e565b9061394e565b6021556015869055601785905560168490556131d8846131b2888861394e565b602055601b839055601d829055601c8190556131f8816131b2858561394e565b60228190556021546020805460408051938452918301528181019290925290517fe06a46af1c04656f68e4f75cbbb23baa176651c7f99930a378ef9f1616dc2b8c9181900360600190a1505050505050505050565b6132556139ad565b6005546001600160a01b039081169116146132a5576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b60295460ff600160401b90910416151581151514156132f55760405162461bcd60e51b8152600401808060200182810382526023815260200180615b4a6023913960400191505060405180910390fd5b60298054911515600160401b0260ff60401b19909216919091179055565b600a6020526000908152604090205460ff1681565b60106020526000908152604090205481565b6133426139ad565b6005546001600160a01b03908116911614613392576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600c602052604090205460ff1615158115151415613403576040805162461bcd60e51b815260206004820152601a6024820152794163636f756e7420616c726561647920276578636c756465642760301b604482015290519081900360640190fd5b6001600160a01b0382166000818152600c6020908152604091829020805460ff1916851515908117909155825190815291517f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79281900390910190a25050565b61346b6139ad565b6005546001600160a01b039081169116146134bb576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b60285560298054911515600160501b0260ff60501b19909216919091179055565b601c5481565b60185481565b6134f06139ad565b6005546001600160a01b03908116911614613540576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b60255461355583670de0b6b3a7640000613a9d565b602581905560298054841515600160201b90810260ff60201b199092169190911791829055604080518581526020810194909452910460ff16151582820152517fd6d1ec2dffd2df16cb6d0859837b49920203bb429cc368ce9eab6df4d60e94399181900360600190a1505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b601a5481565b6135fd6139ad565b6005546001600160a01b0390811691161461364d576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b6029805460ff1916911515919091179055565b601f5481565b60245481565b60255481565b60075460408051632f842d8560e21b815290516000926001600160a01b03169163be10b614916004808301926020929190829003018186803b158015611aec57600080fd5b6136bf6139ad565b6005546001600160a01b0390811691161461370f576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b6007546040805163e98030c760e01b81526004810184905290516001600160a01b039092169163e98030c79160248082019260009290919082900301818387803b15801561188657600080fd5b602954610100900460ff1681565b6137726139ad565b6005546001600160a01b039081169116146137c2576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b60298054911515600160381b0260ff60381b19909216919091179055565b6137e86139ad565b6005546001600160a01b03908116911614613838576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b6001600160a01b03811661387d5760405162461bcd60e51b815260040180806020018281038252602681526020018061591b6026913960400191505060405180910390fd5b6005546040516001600160a01b03808416921690600080516020615b2a83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6138cf6139ad565b6005546001600160a01b0390811691161461391f576040805162461bcd60e51b81526020600482018190526024820152600080516020615b0a833981519152604482015290519081900360640190fd5b602980549115156101000261ff0019909216919091179055565b600d6020526000908152604090205460ff1681565b6000828201838110156139a6576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b9392505050565b3390565b6001600160a01b0383166139f65760405162461bcd60e51b8152600401808060200182810382526024815260200180615be76024913960400191505060405180910390fd5b6001600160a01b038216613a3b5760405162461bcd60e51b81526004018080602001828103825260228152602001806159416022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600082613aac57506000611691565b82820282848281613ab957fe5b04146139a65760405162461bcd60e51b8152600401808060200182810382526021815260200180615ac16021913960400191505060405180910390fd5b6001600160a01b038316613b3b5760405162461bcd60e51b8152600401808060200182810382526025815260200180615bc26025913960400191505060405180910390fd5b6001600160a01b038216613b805760405162461bcd60e51b81526004018080602001828103825260238152602001806158a56023913960400191505060405180910390fd5b6001600160a01b0383166000908152600d602052604090205460ff16158015613bc257506001600160a01b0382166000908152600d602052604090205460ff16155b8015613bde5750326000908152600d602052604090205460ff16155b613c25576040805162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b604482015290519081900360640190fd5b613c2d612b1b565b6001600160a01b0316836001600160a01b031614613c945760295462010000900460ff1615613c94576040805162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99c81c185d5cd95960921b604482015290519081900360640190fd5b613c9c612b1b565b6001600160a01b0316836001600160a01b031614158015613cd65750613cc0612b1b565b6001600160a01b0316826001600160a01b031614155b15613ce657613ce68383836148d0565b326000908152600d602052604090205460ff1615613d0357614367565b6001600160a01b0383166000908152600e602052604090205460ff161561405f576000613d2f84612233565b90506000613d486023544261510d90919063ffffffff16565b90506301dfe200811115613d7b576001600160a01b0385166000908152600e60205260409020805460ff19169055613e8d565b6000613d87868361514f565b6001600160a01b03871660009081526010602052604081205491925090613daf90839061510d565b6001600160a01b0387166000908152600a602052604090205490915060ff1680613df157506001600160a01b0386166000908152600b602052604090205460ff165b15613e0c576026548110613e0757602654613e09565b805b90505b6001600160a01b038716600090815260106020908152604080832054600f909252909120548691613e4d9184916131b291613e469161510d565b889061510d565b1015613e8a5760405162461bcd60e51b81526004018080602001828103825260328152602001806158c86032913960400191505060405180910390fd5b50505b6001600160a01b038516600090815260106020908152604080832054600f909252822054613ec691613ebf919061510d565b849061510d565b90506000818511613ed8576000613ee2565b613ee2858361510d565b6001600160a01b038816600090815260106020526040902080548201905590508015801590613f4b57506001600160a01b0386166000908152600a602052604090205460ff1680613f4b57506001600160a01b0386166000908152600b602052604090205460ff165b1561405a576001600160a01b038716600090815260146020526040902054426201518090910110613f9c576001600160a01b0387166000908152601460205260409020600101805482019055613fbb565b6001600160a01b03871660009081526014602052604090206001018190555b6001600160a01b0387166000908152601460205260409020429055602954600160501b900460ff161561405a576028546001600160a01b038816600090815260146020526040902060010154111561405a576040805162461bcd60e51b815260206004820152601e60248201527f52656163686564206d6178206461696c79207665737420746f2073656c6c0000604482015290519081900360640190fd5b505050505b80614075576140708383600061531c565b614367565b600061408030612233565b601f546029549192508210159060ff1680156140a65750602954600160601b900460ff16155b80156140cb57506001600160a01b0385166000908152600a602052604090205460ff16155b80156140d45750805b15614103576029805460ff60601b1916600160601b1790556140f58261545a565b6029805460ff60601b191690555b6029546001600160a01b0386166000908152600c602052604090205460ff600160601b90920482161591168061415157506001600160a01b0385166000908152600c602052604090205460ff165b806141665750602954600160401b900460ff16155b806141895750614174612b1b565b6001600160a01b0316866001600160a01b0316145b806141ac5750614197612b1b565b6001600160a01b0316856001600160a01b0316145b156141b5575060005b60008115614268576001600160a01b0386166000908152600a602052604090205460ff1615614205576141fe60646141f860205488613a9d90919063ffffffff16565b9061556b565b905061425d565b6001600160a01b0387166000908152600a602052604090205460ff1615614240576141fe60646141f860215488613a9d90919063ffffffff16565b61425a60646141f860225488613a9d90919063ffffffff16565b90505b61426887308361531c565b61427c8787614277888561510d565b61531c565b6007546001600160a01b031663e30443bc8861429781612233565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156142dd57600080fd5b505af19250505080156142ee575060015b506007546001600160a01b031663e30443bc8761430a81612233565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561435057600080fd5b505af1925050508015614361575060015b50505050505b505050565b600081848411156143fb5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156143c05781810151838201526020016143a8565b50505050905090810190601f1680156143ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b03821661445e576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60025461446b908261394e565b6002556001600160a01b038216600090815260208190526040902054614491908261394e565b6001600160a01b038316600081815260208181526040808320949094558351858152935192939192600080516020615b6d8339815191529281900390910190a35050565b6006546040516000916001600160a01b0390811691908416907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e908490a3600680546001600160a01b039081166000908152600b60209081526040808320805460ff1916905584546001600160a01b0319168785161794859055805163c45a015560e01b8152905192949093169263c45a01559260048083019392829003018186803b15801561458457600080fd5b505afa158015614598573d6000803e3d6000fd5b505050506040513d60208110156145ae57600080fd5b50516009546040805163e6a4390560e01b81523060048201526001600160a01b0392831660248201529051919092169163e6a43905916044808301926020929190829003018186803b15801561460357600080fd5b505afa158015614617573d6000803e3d6000fd5b505050506040513d602081101561462d57600080fd5b505190506001600160a01b03811661473d57600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561468d57600080fd5b505afa1580156146a1573d6000803e3d6000fd5b505050506040513d60208110156146b757600080fd5b5051600954604080516364e329cb60e11b81523060048201526001600160a01b0392831660248201529051919092169163c9c653969160448083019260209291908290030181600087803b15801561470e57600080fd5b505af1158015614722573d6000803e3d6000fd5b505050506040513d602081101561473857600080fd5b505190505b6001600160a01b039283166000908152600b602090815260408083208054600160ff199182168117909255600880546001600160a01b0319169689169690961780875588168552600a90935292208054909116909117905554909116919050565b6001600160a01b0382166000908152600a602052604090205460ff16151581151514156147fc5760405162461bcd60e51b81526004018080602001828103825260388152602001806159636038913960400191505060405180910390fd5b6001600160a01b0382166000908152600a60205260409020805460ff19168215801591909117909155614894576007546040805162241fbd60e51b81526001600160a01b0385811660048301526000602483018190529251931692630483f7a09260448084019391929182900301818387803b15801561487b57600080fd5b505af115801561488f573d6000803e3d6000fd5b505050505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b602954600160481b900460ff16801561490157506001600160a01b0382166000908152600a602052604090205460ff165b15614978576001600160a01b03831660009081526012602052604090205442620151809091011115614978576040805162461bcd60e51b815260206004820152601b60248201527a13db99481cd95b1b081c195c8819185e481a5cc8185b1b1bddd959602a1b604482015290519081900360640190fd5b6001600160a01b0382166000908152600a602052604090205460ff1615614a1a576001600160a01b0383166000908152601260205260409020544262015180909101106149e2576001600160a01b03831660009081526013602052604090208054820190556149fe565b6001600160a01b03831660009081526013602052604090208190555b6001600160a01b03831660009081526012602052604090204290555b602954600160581b900460ff1615614a85576027546001600160a01b0384166000908152601360205260409020541115614a855760405162461bcd60e51b81526004018080602001828103825260218152602001806158fa6021913960400191505060405180910390fd5b6029546301000000900460ff1615614af6576001600160a01b0383163014614af657601e54811115614af6576040805162461bcd60e51b8152602060048201526015602482015274195e18d959591cc81b585e081d1e08185b5bdd5b9d605a1b604482015290519081900360640190fd5b602954600160301b900460ff1615614c71576001600160a01b0383163014801590614b2a57506001600160a01b0382163014155b15614c71576001600160a01b0382166000908152600a602052604090205460ff16614bd0576001600160a01b038216600090815260116020526040902054601e01421015614bb4576040805162461bcd60e51b815260206004820152601260248201527110dbdbdb191bdddb881a5b881959999958dd60721b604482015290519081900360640190fd5b6001600160a01b03821660009081526011602052604090204290555b6001600160a01b0383166000908152600a602052604090205460ff16614c71576001600160a01b038316600090815260116020526040902054601e01421015614c55576040805162461bcd60e51b815260206004820152601260248201527110dbdbdb191bdddb881a5b881959999958dd60721b604482015290519081900360640190fd5b6001600160a01b03831660009081526011602052604090204290555b602954600160281b900460ff1615614f85576001600160a01b0383166000908152600a602052604090205460ff168015614cc457506001600160a01b0382166000908152600b602052604090205460ff16155b8015614cd957506001600160a01b0382163014155b8015614cee57506001600160a01b0383163014155b15614d0857326001600160a01b03831614614d0857600080fd5b6024546002014311614f8557326000818152600d60205260409020805460ff191660011790556001600160a01b03841614801590614d4f5750326001600160a01b03831614155b15614dbf576007546040805162241fbd60e51b81523260048201526001602482015290516001600160a01b0390921691630483f7a09160448082019260009290919082900301818387803b158015614da657600080fd5b505af1158015614dba573d6000803e3d6000fd5b505050505b6001600160a01b0383166000908152600a602052604090205460ff16158015614e0157506001600160a01b0383166000908152600b602052604090205460ff16155b8015614e1657506001600160a01b0383163014155b15614ea2576001600160a01b038084166000818152600d6020526040808220805460ff19166001908117909155600754825162241fbd60e51b8152600481019590955260248501919091529051931692630483f7a092604480820193929182900301818387803b158015614e8957600080fd5b505af1158015614e9d573d6000803e3d6000fd5b505050505b6001600160a01b0382166000908152600a602052604090205460ff16158015614ee457506001600160a01b0382166000908152600b602052604090205460ff16155b8015614ef957506001600160a01b0382163014155b15614f85576001600160a01b038083166000818152600d6020526040808220805460ff19166001908117909155600754825162241fbd60e51b8152600481019590955260248501919091529051931692630483f7a092604480820193929182900301818387803b158015614f6c57600080fd5b505af1158015614f80573d6000803e3d6000fd5b505050505b602954600160201b900460ff161561500f576001600160a01b0383166000908152600a602052604090205460ff168015614fcd57506006546001600160a01b03838116911614155b8015614fe257506001600160a01b0382163014155b1561500f576000614ff283612233565b602554909150615002828461394e565b111561500d57600080fd5b505b602954600160381b900460ff1615614367576001600160a01b038316301480159061504357506001600160a01b0382163014155b15614367576001600160a01b0383166000908152600a602052604090205460ff168061508757506001600160a01b0382166000908152600a602052604090205460ff165b806150aa57506001600160a01b0383166000908152600b602052604090205460ff165b806150cd57506001600160a01b0382166000908152600b602052604090205460ff165b614367576040805162461bcd60e51b815260206004820152600c60248201526b4e6f207472616e736665727360a01b604482015290519081900360640190fd5b60006139a683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061436c565b6001600160a01b0382166000908152600e602052604081205460ff1615611691576001600160a01b0383166000908152600f60205260409020546201518083101561519d5760009150615315565b6224ea008310156151bf576151b8600a6141f8836002613a9d565b9150615315565b6249d4008310156151da576151b860646141f8836019613a9d565b626ebe008310156151f5576151b860646141f883601e613a9d565b6293a800831015615210576151b860646141f8836023613a9d565b62b8920083101561522b576151b860646141f8836018613a9d565b62dd7c00831015615246576151b860646141f883602d613a9d565b630102660083101561525d576151b881600261556b565b6301275000831015615279576151b860646141f8836038613a9d565b63014c3a00831015615295576151b860646141f883603e613a9d565b63017124008310156152b1576151b860646141f8836044613a9d565b6301960e008310156152cd576151b860646141f883604c613a9d565b6301baf8008310156152e9576151b860646141f8836054613a9d565b6301dfe200831015615305576151b860646141f883605c613a9d565b6301dfe200831115615315578091505b5092915050565b6001600160a01b0383166153615760405162461bcd60e51b8152600401808060200182810382526025815260200180615bc26025913960400191505060405180910390fd5b6001600160a01b0382166153a65760405162461bcd60e51b81526004018080602001828103825260238152602001806158a56023913960400191505060405180910390fd5b6153e38160405180606001604052806026815260200161599b602691396001600160a01b038616600090815260208190526040902054919061436c565b6001600160a01b038085166000908152602081905260408082209390935590841681522054615412908261394e565b6001600160a01b03808416600081815260208181526040918290209490945580518581529051919392871692600080516020615b6d83398151915292918290030190a3505050565b6000601d54601a54601754010190506000601c546019546016540101905060006022546021546020540101905060006154a0826141f88688613a9d90919063ffffffff16565b905060006154af82600261556b565b905060006154bd878361510d565b9050476154c9826155aa565b60006154d5478361510d565b905060006154ea60026141f88981868e613a9d565b905060006154fc886141f8858c613a9d565b602a546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015615537573d6000803e3d6000fd5b5061554286836156d9565b6029544790610100900460ff161561555d5761555d816157ac565b505050505050505050505050565b60006139a683836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b81525061583f565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106155d957fe5b6001600160a01b03928316602091820292909201015260095482519116908290600190811061560457fe5b6001600160a01b03928316602091820292909201015260065461562a91309116846139b1565b60065460405163791ac94760e01b8152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b838110156156b0578181015183820152602001615698565b505050509050019650505050505050600060405180830381600087803b1580156115c757600080fd5b6006546156f19030906001600160a01b0316846139b1565b6006546001600160a01b031663f305d719823085600080615710612b1b565b426040518863ffffffff1660e01b815260040180876001600160a01b03168152602001868152602001858152602001848152602001836001600160a01b0316815260200182815260200196505050505050506060604051808303818588803b15801561577b57600080fd5b505af115801561578f573d6000803e3d6000fd5b50505050506040513d60608110156157a657600080fd5b50505050565b6007546040516000916001600160a01b03169083908381818185875af1925050503d80600081146157f9576040519150601f19603f3d011682016040523d82523d6000602084013e6157fe565b606091505b505090508015611c69576040805183815290517fb0cc2628d6d644cf6be9d8110e142297ac910d6d8026d795a99f272fd9ad60b19181900360200190a15050565b6000818361588e5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156143c05781810151838201526020016143a8565b50600083858161589a57fe5b049594505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737343616e277420627970617373207665737420616e642063616e2774206279706173732076657374656453656c6c4c696d69744d6178206461696c792073656c6c20616d6f756e742077617320726561636865644f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734175746f6d61746564206d61726b6574206d616b6572207061697220697320616c72656164792073657420746f20746861742076616c756545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63655570646174696e6720746f2063757272656e742076616c75652c20656e61626c654d61784461696c7953656c6c4175746f6d61746564206d61726b6574206d616b657220726f7574657220697320616c72656164792073657420746f20746861742076616c7565526f757465722063616e6e6f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572526f75746572735570646174696e6720746f2063757272656e742076616c75652c206461696c79436f6f6c446f776e546865206e6577206469766964656e6420747261636b6572206d757374206265206f776e656420627920746f6b656e20636f6e7472616374536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05570646174696e6720746f2063757272656e742076616c75652c2074616b6546656573ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef506169722063616e6e6f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572506169727345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f546865206469766964656e6420747261636b657220616c72656164792068617320746861742061646472657373a2646970667358221220de170779f74076201e2db667fe75cf13d820fc9cf467527b6b5cffa9394b29ff64736f6c63430007060033

Deployed Bytecode Sourcemap

10593:31695:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21277:310;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21277:310:0;;;;:::i;:::-;;24936:337;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24936:337:0;;;;;;;;;;:::i;4979:102::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6044:212;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6044:212:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;29091:219;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29091:219:0;;:::i;12880:30::-;;;;;;;;;;;;;:::i;10676:41::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;10676:41:0;;;;;;;;;;;;;;28897:83;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28897:83:0;;;;:::i;5306:108::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;23866:136;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23866:136:0;;:::i;12434:33::-;;;;;;;;;;;;;:::i;6264:456::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6264:456:0;;;;;;;;;;;;;;;;;:::i;28503:89::-;;;;;;;;;;;;;:::i;19544:514::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;19544:514:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;19544:514:0;;;;;;;;;;;;-1:-1:-1;19544:514:0;-1:-1:-1;19544:514:0;;:::i;10724:40::-;;;;;;;;;;;;;:::i;24276:141::-;;;;;;;;;;;;;:::i;5203:95::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11998:37;;;;;;;;;;;;;:::i;11549:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11549:46:0;-1:-1:-1;;;;;11549:46:0;;:::i;6728:302::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6728:302:0;;;;;;;;:::i;16329:84::-;;;;;;;;;;;;;:::i;12630:30::-;;;;;;;;;;;;;:::i;16220:101::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16220:101:0;;;;;;;;:::i;12519:29::-;;;;;;;;;;;;;:::i;11320:59::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11320:59:0;-1:-1:-1;;;;;11320:59:0;;:::i;23434:292::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23434:292:0;;;;;;;;;;:::i;10773:28::-;;;;;;;;;;;;;:::i;12849:24::-;;;;;;;;;;;;;:::i;25704:103::-;;;;;;;;;;;;;:::i;24425:128::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24425:128:0;-1:-1:-1;;;;;24425:128:0;;:::i;11956:35::-;;;;;;;;;;;;;:::i;12824:18::-;;;;;;;;;;;;;:::i;12713:33::-;;;;;;;;;;;;;:::i;13032:25::-;;;;;;;;;;;;;:::i;13005:20::-;;;;;;;;;;;;;:::i;12393:34::-;;;;;;;;;;;;;:::i;29318:299::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29318:299:0;;:::i;25815:142::-;;;;;;;;;;;;;:::i;18600:190::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18600:190:0;-1:-1:-1;;;;;18600:190:0;;:::i;18941:452::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18941:452:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18941:452:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18941:452:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18941:452:0;;;;;;;;;;-1:-1:-1;18941:452:0;;-1:-1:-1;18941:452:0;-1:-1:-1;18941:452:0;:::i;11908:41::-;;;;;;;;;;;;;:::i;24755:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24755:173:0;-1:-1:-1;;;;;24755:173:0;;:::i;12755:23::-;;;;;;;;;;;;;:::i;5422:177::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5422:177:0;-1:-1:-1;;;;;5422:177:0;;:::i;756:150::-;;;;;;;;;;;;;:::i;21595:247::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21595:247:0;;;;:::i;12975:23::-;;;;;;;;;;;;;:::i;12948:20::-;;;;;;;;;;;;;:::i;12173:45::-;;;;;;;;;;;;;:::i;12917:24::-;;;;;;;;;;;;;:::i;12474:38::-;;;;;;;;;;;;;:::i;12271:41::-;;;;;;;;;;;;;:::i;22122:548::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22122:548:0;;;;;;;;;;:::i;16421:1292::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16421:1292:0;-1:-1:-1;;;;;16421:1292:0;;:::i;25965:126::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25965:126:0;-1:-1:-1;;;;;25965:126:0;;:::i;12667:39::-;;;;;;;;;;;;;:::i;26457:247::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26457:247:0;;:::i;12089:34::-;;;;;;;;;;;;;:::i;542:79::-;;;;;;;;;;;;;:::i;21014:255::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21014:255:0;;:::i;5089:106::-;;;;;;;;;;;;;:::i;28988:95::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28988:95:0;;;;:::i;13064:43::-;;;;;;;;;;;;;:::i;22678:300::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22678:300:0;;;;;;;;;;:::i;28600:170::-;;;;;;;;;;;;;:::i;20177:329::-;;;;;;;;;;;;;:::i;24159:109::-;;;;;;;;;;;;;:::i;7038:402::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7038:402:0;;;;;;;;:::i;13114:30::-;;;;;;;;;;;;;:::i;24561:186::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24561:186:0;-1:-1:-1;;;;;24561:186:0;;:::i;5607:218::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5607:218:0;;;;;;;;:::i;11497:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11497:45:0;-1:-1:-1;;;;;11497:45:0;;:::i;25281:415::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25281:415:0;-1:-1:-1;;;;;25281:415:0;;:::i;:::-;;;;-1:-1:-1;;;;;25281:415:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10952:64;;;;;;;;;;;;;:::i;26712:1581::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26712:1581:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20831:175::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20831:175:0;;;;:::i;11256:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11256:57:0;-1:-1:-1;;;;;11256:57:0;;:::i;11602:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11602:49:0;-1:-1:-1;;;;;11602:49:0;;:::i;20514:309::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20514:309:0;;;;;;;;;;:::i;21850:264::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21850:264:0;;;;;;;;;:::i;12225:39::-;;;;;;;;;;;;;:::i;12042:40::-;;;;;;;;;;;;;:::i;26099:350::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26099:350:0;;;;;;;;;:::i;5833:203::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5833:203:0;;;;;;;;;;:::i;12130:36::-;;;;;;;;;;;;;:::i;28301:93::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28301:93:0;;;;:::i;12353:33::-;;;;;;;;;;;;;:::i;12555:35::-;;;;;;;;;;;;;:::i;12597:26::-;;;;;;;;;;;;;:::i;24010:141::-;;;;;;;;;;;;;:::i;23734:124::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23734:124:0;;:::i;12785:32::-;;;;;;;;;;;;;:::i;28402:93::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28402:93:0;;;;:::i;914:283::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;914:283:0;-1:-1:-1;;;;;914:283:0;;:::i;28778:111::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28778:111:0;;;;:::i;11445:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11445:45:0;-1:-1:-1;;;;;11445:45:0;;:::i;21277:310::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;21414:18:::1;::::0;::::1;-1:-1:-1::0;;;21414:18:0;;::::1;;:41;;::::0;::::1;;;;21392:136;;;;-1:-1:-1::0;;;21392:136:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21539:18;:40:::0;;;::::1;;-1:-1:-1::0;;;21539:40:0::1;-1:-1:-1::0;;;;21539:40:0;;::::1;::::0;;;::::1;::::0;;21277:310::o;24936:337::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;25084:15:::1;::::0;:46:::1;::::0;;-1:-1:-1;;;25084:46:0;;-1:-1:-1;;;;;25084:46:0;;::::1;;::::0;::::1;::::0;;;:15;;;::::1;::::0;:37:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;:15;:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;25084:46:0;25082:49:::1;25060:130;;;::::0;;-1:-1:-1;;;25060:130:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;25201:15;::::0;:64:::1;::::0;;-1:-1:-1;;;25201:64:0;;-1:-1:-1;;;;;25201:64:0;;::::1;;::::0;::::1;::::0;;::::1;;::::0;;;;;;:15;;;::::1;::::0;:36:::1;::::0;:64;;;;;:15:::1;::::0;:64;;;;;;;:15;;:64;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24936:337:::0;;:::o;4979:102::-;5068:5;5061:12;;;;;;;;-1:-1:-1;;5061:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5035:13;;5061:12;;5068:5;;5061:12;;5068:5;5061:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4979:102;:::o;6044:212::-;6165:4;6187:39;6196:12;:10;:12::i;:::-;6210:7;6219:6;6187:8;:39::i;:::-;-1:-1:-1;6244:4:0;6044:212;;;;;:::o;29091:219::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;29187:11:::1;::::0;29223:16:::1;:7:::0;10840:6:::1;29223:11;:16::i;:::-;29209:11;:30:::0;;;29255:47:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;;;;;;;::::1;739:1;29091:219:::0;:::o;12880:30::-;;;-1:-1:-1;;;12880:30:0;;;;;:::o;10676:41::-;;;-1:-1:-1;;;;;10676:41:0;;:::o;28897:83::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;28958:6:::1;:14:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;28958:14:0;;::::1;::::0;;;::::1;::::0;;28897:83::o;5306:108::-;5394:12;;5306:108;:::o;23866:136::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;23946:15:::1;::::0;:48:::1;::::0;;-1:-1:-1;;;23946:48:0;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;23946:15:0;;::::1;::::0;:34:::1;::::0;:48;;;;;:15:::1;::::0;:48;;;;;;;;:15;;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23866:136:::0;:::o;12434:33::-;;;;:::o;6264:456::-;6406:4;6423:36;6433:6;6441:9;6452:6;6423:9;:36::i;:::-;6470:220;6493:6;6514:12;:10;:12::i;:::-;6541:138;6597:6;6541:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6541:19:0;;;;;;:11;:19;;;;;;6561:12;:10;:12::i;:::-;-1:-1:-1;;;;;6541:33:0;;;;;;;;;;;;-1:-1:-1;6541:33:0;;;:138;:37;:138::i;:::-;6470:8;:220::i;:::-;-1:-1:-1;6708:4:0;6264:456;;;;;:::o;28503:89::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;28564:12:::1;:20:::0;;-1:-1:-1;;;;28564:20:0::1;::::0;;28503:89::o;19544:514::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;19673:9:::1;::::0;19715:15:::1;:6:::0;10840::::1;19715:10;:15::i;:::-;19697:33;;19741:310;19748:26:::0;;::::1;19741:310;;;19791:19;19813:15;;19829:1;19813:18;;;;;;;;;;;;;-1:-1:-1::0;;;;;19813:18:0::1;19791:40;;19846:43;19856:10;19868:11;19881:7;19846:9;:43::i;:::-;-1:-1:-1::0;;;;;19931:24:0;::::1;;::::0;;;:11:::1;:24;::::0;;;;;:37:::1;::::0;19960:7;19931:28:::1;:37::i;:::-;-1:-1:-1::0;;;;;19904:24:0;;::::1;;::::0;;;:11:::1;:24;::::0;;;;;;;:64;;;;19983:13:::1;:26:::0;;;:33;;-1:-1:-1;;19983:33:0::1;20012:4;19983:33:::0;;::::1;::::0;;;20033:6;;;::::1;::::0;19741:310:::1;;10724:40:::0;;;-1:-1:-1;;;;;10724:40:0;;:::o;24276:141::-;24366:15;;:43;;;-1:-1:-1;;;24366:43:0;;;;24339:7;;-1:-1:-1;;;;;24366:15:0;;:41;;:43;;;;;;;;;;;;;;:15;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24366:43:0;;-1:-1:-1;24276:141:0;:::o;5203:95::-;5288:2;5203:95;:::o;11998:37::-;;;;:::o;11549:46::-;;;;;;;;;;;;;:::o;6728:302::-;6845:4;6867:133;6890:12;:10;:12::i;:::-;6917:7;6939:50;6978:10;6939:11;:25;6951:12;:10;:12::i;:::-;-1:-1:-1;;;;;6939:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;6939:25:0;;;:34;;;;;;;;;;;:38;:50::i;16329:84::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;16397:8:::1;::::0;;-1:-1:-1;;;;16385:20:0;::::1;-1:-1:-1::0;;;16397:8:0;;;::::1;;;16396:9;16385:20:::0;;::::1;;::::0;;16329:84::o;12630:30::-;;;;:::o;16220:101::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;16294:19:::1;16300:3;16305:7;16294:5;:19::i;:::-;16220:101:::0;;:::o;12519:29::-;;;;:::o;11320:59::-;;;;;;;;;;;;;;;:::o;23434:292::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;23523:5:::1;23519:159;;;-1:-1:-1::0;;;;;23554:22:0;::::1;;::::0;;;:13:::1;:22;::::0;;;;;::::1;;23553:23;23545:55;;;::::0;;-1:-1:-1;;;23545:55:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;23545:55:0;;;;;;;;;;;;;::::1;;23615:15;::::0;:51:::1;::::0;;-1:-1:-1;;;23615:51:0;;-1:-1:-1;;;;;23615:51:0;;::::1;;::::0;::::1;::::0;:15;:51;;;;;;:15;;;::::1;::::0;:36:::1;::::0;:51;;;;;:15:::1;::::0;:51;;;;;;;:15;;:51;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23519:159;-1:-1:-1::0;;;;;23688:22:0;;;::::1;;::::0;;;:13:::1;:22;::::0;;;;:30;;-1:-1:-1;;23688:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23434:292::o;10773:28::-;;;-1:-1:-1;;;;;10773:28:0;;:::o;12849:24::-;;;;;;;;;:::o;25704:103::-;25741:15;;:58;;;-1:-1:-1;;;25741:58:0;;25780:10;25741:58;;;;:15;:58;;;;;;;;-1:-1:-1;;;;;25741:15:0;;;;:30;;:58;;;;;;;;;;;;;;;;;;:15;:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24425:128;-1:-1:-1;;;;;24517:28:0;24493:4;24517:28;;;:19;:28;;;;;;;;;24425:128::o;11956:35::-;;;;:::o;12824:18::-;;;;;;;;;:::o;12713:33::-;;;;:::o;13032:25::-;;;-1:-1:-1;;;13032:25:0;;;;;:::o;13005:20::-;;;-1:-1:-1;;;13005:20:0;;;;;:::o;12393:34::-;;;;:::o;29318:299::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;29422:18:::1;::::0;29472:16:::1;:7:::0;10840:6:::1;29472:11;:16::i;:::-;29451:18;:37:::0;;;29504:105:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;;;;;;;::::1;739:1;29318:299:::0;:::o;25815:142::-;25908:15;;:41;;;-1:-1:-1;;;25908:41:0;;;;25881:7;;-1:-1:-1;;;;;25908:15:0;;:39;;:41;;;;;;;;;;;;;;:15;:41;;;;;;;;;;18600:190;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;18679:34:::1;18702:10;18679:22;:34::i;:::-;-1:-1:-1::0;18724:15:0::1;::::0;18761:13:::1;::::0;18724:58:::1;::::0;;-1:-1:-1;;;18724:58:0;;-1:-1:-1;;;;;18761:13:0;;::::1;18724:58;::::0;::::1;::::0;:15:::1;:58:::0;;;;;;;;:15;;;::::1;::::0;:36:::1;::::0;:58;;;;;:15;:58;;;;;:15;;:58;::::1;;::::0;::::1;;;;::::0;::::1;18941:452:::0;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;19091:34;;::::1;19069:109;;;::::0;;-1:-1:-1;;;19069:109:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;19069:109:0;;;;;;;;;;;;;::::1;;19189:9;19213:173;19220:20:::0;;::::1;19213:173;;;19257:15;19275:19;10840:6;19275:7;;19283:1;19275:10;;;;;;;;;;;;;:14;;:19;;;;:::i;:::-;19257:37;;19309:44;19319:10;19331:9;;19341:1;19331:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;19331:12:0::1;19345:7;19309:9;:44::i;:::-;-1:-1:-1::0;19373:1:0::1;19368:6;19213:173;;11908:41:::0;;;;:::o;24755:173::-;24886:15;;:34;;;-1:-1:-1;;;24886:34:0;;-1:-1:-1;;;;;24886:34:0;;;;;;;;;24854:7;;24886:15;;;;;:25;;:34;;;;;;;;;;;;;;;:15;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24886:34:0;;24755:173;-1:-1:-1;;24755:173:0:o;12755:23::-;;;;;;:::o;5422:177::-;-1:-1:-1;;;;;5573:18:0;5541:7;5573:18;;;;;;;;;;;;5422:177::o;756:150::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;849:6:::1;::::0;828:40:::1;::::0;865:1:::1;::::0;-1:-1:-1;;;;;849:6:0::1;::::0;-1:-1:-1;;;;;;;;;;;828:40:0;865:1;;828:40:::1;879:6;:19:::0;;-1:-1:-1;;;;;;879:19:0::1;::::0;;756:150::o;21595:247::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;21694:13:::1;::::0;::::1;-1:-1:-1::0;;;21694:13:0;;::::1;;:31;;::::0;::::1;;;;21672:121;;;;-1:-1:-1::0;;;21672:121:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21804:13;:30:::0;;;::::1;;-1:-1:-1::0;;;21804:30:0::1;-1:-1:-1::0;;;;21804:30:0;;::::1;::::0;;;::::1;::::0;;21595:247::o;12975:23::-;;;-1:-1:-1;;;12975:23:0;;;;;:::o;12948:20::-;;;-1:-1:-1;;;12948:20:0;;;;;:::o;12173:45::-;;;;:::o;12917:24::-;;;-1:-1:-1;;;12917:24:0;;;;;:::o;12474:38::-;;;;:::o;12271:41::-;;;;:::o;22122:548::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;22282:15:::1;::::0;-1:-1:-1;;;;;22264:34:0;;::::1;22282:15:::0;::::1;22264:34;;22242:141;;;;-1:-1:-1::0;;;22242:141:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;22416:35:0;::::1;;::::0;;;:27:::1;:35;::::0;;;;;::::1;;:44;;::::0;::::1;;;;22394:152;;;;-1:-1:-1::0;;;22394:152:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;22557:35:0;;::::1;;::::0;;;:27:::1;:35;::::0;;;;;:43;;-1:-1:-1;;22557:43:0::1;::::0;::::1;;;::::0;;22611:15:::1;::::0;:51;;-1:-1:-1;;;22611:51:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;:15;::::1;::::0;:36:::1;::::0;:51;;;;;22557:35;22611:51;;;;;;22557:35;22611:15;:51;::::1;;::::0;::::1;;;;::::0;::::1;16421:1292:::0;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;16546:15:::1;::::0;-1:-1:-1;;;;;16524:38:0;;::::1;16546:15:::0;::::1;16524:38;;16502:133;;;;-1:-1:-1::0;;;16502:133:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16780:48;::::0;;-1:-1:-1;;;16780:48:0;;16822:4:::1;16780:48;::::0;::::1;::::0;;;16725:10;;-1:-1:-1;;;;;16780:33:0;::::1;::::0;::::1;::::0;:48;;;;;::::1;::::0;;;;;;;;;:33;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;16780:48:0;16758:154:::1;;;;-1:-1:-1::0;;;16758:154:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16923:112;::::0;;-1:-1:-1;;;16923:112:0;;-1:-1:-1;;;;;16923:39:0;::::1;:112;::::0;::::1;::::0;;;17019:5:::1;16923:112:::0;;;;;;;;:39;;::::1;::::0;:112;;;;;;;;;;;17019:5;16923:39;:112;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;17046:61:0::1;::::0;;-1:-1:-1;;;17046:61:0;;17094:4:::1;17046:61;::::0;::::1;::::0;17101:5:::1;17046:61:::0;;;;;;;;-1:-1:-1;;;;;17046:39:0;::::1;::::0;-1:-1:-1;17046:39:0::1;::::0;-1:-1:-1;17046:61:0;;;;;17101:5;17046:61;;;;;17101:5;17046:39;:61;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17118:18;-1:-1:-1::0;;;;;17118:39:0::1;;17158:7;:5;:7::i;:::-;17167:5;17118:55;;;;;;;;;;;;;-1:-1:-1::0;;;;;17118:55:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;17246:15:0::1;::::0;17184:109:::1;::::0;;-1:-1:-1;;;17184:109:0;;-1:-1:-1;;;;;17246:15:0;;::::1;17184:109;::::0;::::1;::::0;17246:15:::1;17184:109:::0;;;;;;;;:39;;::::1;::::0;-1:-1:-1;17184:39:0::1;::::0;-1:-1:-1;17184:109:0;;;;;;;;;;;17246:15;17184:39;:109;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;17352:13:0::1;::::0;17304:70:::1;::::0;;-1:-1:-1;;;17304:70:0;;-1:-1:-1;;;;;17352:13:0;;::::1;17304:70;::::0;::::1;::::0;17352:13:::1;17304:70:::0;;;;;;;;:39;;::::1;::::0;-1:-1:-1;17304:39:0::1;::::0;-1:-1:-1;17304:70:0;;;;;;;;;;;17352:13;17304:39;:70;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;17385:127:0::1;::::0;;-1:-1:-1;;;17385:127:0;;17439:42:::1;17385:127;::::0;::::1;::::0;17496:5:::1;17385:127:::0;;;;;;;;-1:-1:-1;;;;;17385:39:0;::::1;::::0;-1:-1:-1;17385:39:0::1;::::0;-1:-1:-1;17385:127:0;;;;;17496:5;17385:127;;;;;17496:5;17385:39;:127;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;17523:60:0::1;::::0;;-1:-1:-1;;;17523:60:0;;10903:42:::1;17523:60;::::0;::::1;::::0;;;;;;;;;;;-1:-1:-1;;;;;17523:39:0;::::1;::::0;-1:-1:-1;17523:39:0::1;::::0;-1:-1:-1;17523:60:0;;;;;10903:42;17523:60;;;;;10903:42;17523:39;:60;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;17641:15:0::1;::::0;17599:59:::1;::::0;-1:-1:-1;;;;;17641:15:0;;::::1;::::0;-1:-1:-1;17599:59:0;;::::1;::::0;-1:-1:-1;17599:59:0::1;::::0;17641:15:::1;::::0;17599:59:::1;17669:15;:36:::0;;-1:-1:-1;;;;;;17669:36:0::1;-1:-1:-1::0;;;;;17669:36:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;16421:1292:0:o;25965:126::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;26044:14:::1;:39:::0;;-1:-1:-1;;;;;;26044:39:0::1;-1:-1:-1::0;;;;;26044:39:0;;;::::1;::::0;;;::::1;::::0;;25965:126::o;12667:39::-;;;;:::o;26457:247::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;26561:15:::1;::::0;26605:16:::1;:7:::0;10840:6:::1;26605:11;:16::i;:::-;26587:15;:34:::0;;;26637:59:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;;;;;;;::::1;739:1;26457:247:::0;:::o;12089:34::-;;;;:::o;542:79::-;607:6;;-1:-1:-1;;;;;607:6:0;542:79;:::o;21014:255::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;21147:24:::1;::::0;21105:105:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;::::1;21221:24;:40:::0;21014:255::o;5089:106::-;5180:7;5173:14;;;;;;;;-1:-1:-1;;5173:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5147:13;;5173:14;;5180:7;;5173:14;;5180:7;5173:14;;;;;;;;;;;;;;;;;;;;;;;;28988:95;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;29055:12:::1;:20:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;29055:20:0;;::::1;::::0;;;::::1;::::0;;28988:95::o;13064:43::-;;;-1:-1:-1;;;13064:43:0;;;;;:::o;22678:300::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;22824:13:::1;::::0;-1:-1:-1;;;;;22816:21:0;;::::1;22824:13:::0;::::1;22816:21;;22794:124;;;;-1:-1:-1::0;;;22794:124:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22929:41;22958:4;22964:5;22929:28;:41::i;28600:170::-:0;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;28676:15:::1;28659:14;:32:::0;28725:12:::1;28702:20;:35:::0;28748:6:::1;:14:::0;;-1:-1:-1;;28748:14:0::1;::::0;;28600:170::o;20177:329::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;20325:15:::1;::::0;:25:::1;::::0;;-1:-1:-1;;;20325:25:0;;;;20282:22:::1;::::0;-1:-1:-1;;;;;20325:15:0::1;::::0;:23:::1;::::0;:25:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:15;:25;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;20325:25:0;20392:4:::1;::::0;20307:90:::1;::::0;;-1:-1:-1;;;20307:90:0;;20385:4:::1;20307:90;::::0;::::1;::::0;-1:-1:-1;;;;;20392:4:0;;::::1;20307:90:::0;;;;;;:69;;;::::1;::::0;::::1;::::0;:90;;;;;20325:25:::1;::::0;20307:90;;;;;;;20392:4:::1;20307:69:::0;:90;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;20307:90:0;20408:13:::1;:30:::0;;-1:-1:-1;;;;;;20408:30:0::1;-1:-1:-1::0;;;;;20408:30:0;;::::1;::::0;;;::::1;::::0;;;;20307:90;;-1:-1:-1;20449:49:0::1;::::0;20478:13:::1;-1:-1:-1::0;20449:28:0::1;:49::i;:::-;739:1;20177:329::o:0;24159:109::-;24233:15;;:27;;;-1:-1:-1;;;24233:27:0;;;;24206:7;;-1:-1:-1;;;;;24233:15:0;;:25;;:27;;;;;;;;;;;;;;:15;:27;;;;;;;;;;7038:402;7160:4;7182:228;7205:12;:10;:12::i;:::-;7232:7;7254:145;7311:15;7254:145;;;;;;;;;;;;;;;;;:11;:25;7266:12;:10;:12::i;:::-;-1:-1:-1;;;;;7254:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;7254:25:0;;;:34;;;;;;;;;;;:145;:38;:145::i;13114:30::-;;;-1:-1:-1;;;13114:30:0;;;;;:::o;24561:186::-;24692:15;;:47;;;-1:-1:-1;;;24692:47:0;;-1:-1:-1;;;;;24692:47:0;;;;;;;;;24660:7;;24692:15;;;;;:38;;:47;;;;;;;;;;;;;;;:15;:47;;;;;;;;;;5607:218;5731:4;5753:42;5763:12;:10;:12::i;:::-;5777:9;5788:6;5753:9;:42::i;11497:45::-;;;;;;;;;;;;;;;:::o;25281:415::-;25652:15;;:36;;;-1:-1:-1;;;25652:36:0;;-1:-1:-1;;;;;25652:36:0;;;;;;;;;25396:15;;;;;;;;;;;;25652;;:26;;:36;;;;;;;;;;;;;;:15;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25652:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25652:36:0;;-1:-1:-1;25652:36:0;-1:-1:-1;25652:36:0;;-1:-1:-1;25652:36:0;-1:-1:-1;25281:415:0;-1:-1:-1;;25281:415:0:o;10952:64::-;;;-1:-1:-1;;;;;10952:64:0;;:::o;26712:1581::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;27156:25:::1;:53:::0;;;27220:21:::1;:46:::0;;;27277:19:::1;:42:::0;;;27351:105:::1;27299:20:::0;27351:66:::1;27184:25:::0;27244:22;27351:43:::1;:66::i;:::-;:84:::0;::::1;:105::i;:::-;27330:18;:126:::0;27467:26:::1;:55:::0;;;27533:22:::1;:48:::0;;;27592:20:::1;:44:::0;;;27669:108:::1;27615:21:::0;27669:68:::1;27496:26:::0;27558:23;27669:44:::1;:68::i;:108::-;27647:19;:130:::0;27790:30:::1;:63:::0;;;27864:26:::1;:56:::0;;;27931:24:::1;:52:::0;;;28020:120:::1;27958:25:::0;28020:76:::1;27823:30:::0;27893:27;28020:48:::1;:76::i;:120::-;27994:23;:146:::0;;;28184:18:::1;::::0;28217:19:::1;::::0;;28158:127:::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;::::1;::::0;;;;;;;::::1;26712:1581:::0;;;;;;;;;:::o;20831:175::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;20906:8:::1;::::0;::::1;-1:-1:-1::0;;;20906:8:0;;::::1;;:21;;::::0;::::1;;;;20898:69;;;;-1:-1:-1::0;;;20898:69:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20978:8;:20:::0;;;::::1;;-1:-1:-1::0;;;20978:20:0::1;-1:-1:-1::0;;;;20978:20:0;;::::1;::::0;;;::::1;::::0;;20831:175::o;11256:57::-;;;;;;;;;;;;;;;:::o;11602:49::-;;;;;;;;;;;;;:::o;20514:309::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;20621:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;::::1;;:40;;::::0;::::1;;;;20599:116;;;::::0;;-1:-1:-1;;;20599:116:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;20599:116:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;20726:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;20726:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;20781:34;;;;;;;::::1;::::0;;;;;;;;::::1;20514:309:::0;;:::o;21850:264::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;21996:18:::1;:40:::0;22047:31:::1;:59:::0;;;::::1;;-1:-1:-1::0;;;22047:59:0::1;-1:-1:-1::0;;;;22047:59:0;;::::1;::::0;;;::::1;::::0;;21850:264::o;12225:39::-;;;;:::o;12042:40::-;;;;:::o;26099:350::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;26211:11:::1;::::0;26249:16:::1;:7:::0;10840:6:::1;26249:11;:16::i;:::-;26235:11;:30:::0;;;26276:18:::1;:29:::0;;;::::1;;-1:-1:-1::0;;;26276:29:0;;::::1;-1:-1:-1::0;;;;26276:29:0;;::::1;::::0;;;::::1;::::0;;;;26323:118:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;26412:18;::::1;26276:29;26412:18;26323:118;;::::0;;;;;::::1;::::0;;;;;;;::::1;739:1;26099:350:::0;;:::o;5833:203::-;-1:-1:-1;;;;;6001:18:0;;;5969:7;6001:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5833:203::o;12130:36::-;;;;:::o;28301:93::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;28367:11:::1;:19:::0;;-1:-1:-1;;28367:19:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28301:93::o;12353:33::-;;;;:::o;12555:35::-;;;;:::o;12597:26::-;;;;:::o;24010:141::-;24094:15;;:49;;;-1:-1:-1;;;24094:49:0;;;;24067:7;;-1:-1:-1;;;;;24094:15:0;;:47;;:49;;;;;;;;;;;;;;:15;:49;;;;;;;;;;23734:124;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;23808:15:::1;::::0;:42:::1;::::0;;-1:-1:-1;;;23808:42:0;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;23808:15:0;;::::1;::::0;:31:::1;::::0;:42;;;;;:15:::1;::::0;:42;;;;;;;;:15;;:42;::::1;;::::0;::::1;;;;::::0;::::1;12785:32:::0;;;;;;;;;:::o;28402:93::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;28468:11:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;28468:19:0::1;-1:-1:-1::0;;;;28468:19:0;;::::1;::::0;;;::::1;::::0;;28402:93::o;914:283::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;1019:22:0;::::1;997:110;;;;-1:-1:-1::0;;;997:110:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1144:6;::::0;1123:38:::1;::::0;-1:-1:-1;;;;;1123:38:0;;::::1;::::0;1144:6:::1;::::0;-1:-1:-1;;;;;;;;;;;1123:38:0;1144:6:::1;::::0;1123:38:::1;1172:6;:17:::0;;-1:-1:-1;;;;;;1172:17:0::1;-1:-1:-1::0;;;;;1172:17:0;;;::::1;::::0;;;::::1;::::0;;914:283::o;28778:111::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;28853:20:::1;:28:::0;;;::::1;;;;-1:-1:-1::0;;28853:28:0;;::::1;::::0;;;::::1;::::0;;28778:111::o;11445:45::-;;;;;;;;;;;;;;;:::o;1228:179::-;1286:7;1318:5;;;1342:6;;;;1334:46;;;;;-1:-1:-1;;;1334:46:0;;;;;;;;;;;;-1:-1:-1;;;1334:46:0;;;;;;;;;;;;;;;1398:1;1228:179;-1:-1:-1;;;1228:179:0:o;95:98::-;175:10;95:98;:::o;8725:378::-;-1:-1:-1;;;;;8861:19:0;;8853:68;;;;-1:-1:-1;;;8853:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8940:21:0;;8932:68;;;;-1:-1:-1;;;8932:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9011:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9063:32;;;;;;;;;;;;;;;;;8725:378;;;:::o;1791:246::-;1849:7;1873:6;1869:47;;-1:-1:-1;1903:1:0;1896:8;;1869:47;1938:5;;;1942:1;1938;:5;:1;1962:5;;;;;:10;1954:56;;;;-1:-1:-1;;;1954:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31530:4602;-1:-1:-1;;;;;31662:18:0;;31654:68;;;;-1:-1:-1;;;31654:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31741:16:0;;31733:64;;;;-1:-1:-1;;;31733:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31831:19:0;;;;;;:13;:19;;;;;;;;31830:20;:59;;;;-1:-1:-1;;;;;;31872:17:0;;;;;;:13;:17;;;;;;;;31871:18;31830:59;:105;;;;-1:-1:-1;31925:9:0;31911:24;;;;:13;:24;;;;;;;;31910:25;31830:105;31808:174;;;;;-1:-1:-1;;;31808:174:0;;;;;;;;;;;;-1:-1:-1;;;31808:174:0;;;;;;;;;;;;;;;32005:7;:5;:7::i;:::-;-1:-1:-1;;;;;31997:15:0;:4;-1:-1:-1;;;;;31997:15:0;;31993:82;;32038:6;;;;;;;32037:7;32029:34;;;;;-1:-1:-1;;;32029:34:0;;;;;;;;;;;;-1:-1:-1;;;32029:34:0;;;;;;;;;;;;;;;32099:7;:5;:7::i;:::-;-1:-1:-1;;;;;32091:15:0;:4;-1:-1:-1;;;;;32091:15:0;;;:32;;;;;32116:7;:5;:7::i;:::-;-1:-1:-1;;;;;32110:13:0;:2;-1:-1:-1;;;;;32110:13:0;;;32091:32;32087:109;;;32140:44;32167:4;32173:2;32177:6;32140:26;:44::i;:::-;32226:9;32212:24;;;;:13;:24;;;;;;;;32208:63;;;32253:7;;32208:63;-1:-1:-1;;;;;32287:19:0;;;;;;:13;:19;;;;;;;;32283:2177;;;32323:15;32341;32351:4;32341:9;:15::i;:::-;32323:33;;32371:18;32392:35;32412:14;;32392:15;:19;;:35;;;;:::i;:::-;32371:56;;32461:8;32448:10;:21;32444:910;;;-1:-1:-1;;;;;32490:19:0;;32512:5;32490:19;;;:13;:19;;;;;:27;;-1:-1:-1;;32490:27:0;;;32444:910;;;32558:20;32581:35;32599:4;32605:10;32581:17;:35::i;:::-;-1:-1:-1;;;;;32702:20:0;;32635:25;32702:20;;;:14;:20;;;;;;32558:58;;-1:-1:-1;32635:25:0;32663:78;;32558:58;;32663:16;:78::i;:::-;-1:-1:-1;;;;;32786:29:0;;;;;;:25;:29;;;;;;32635:106;;-1:-1:-1;32786:29:0;;;:85;;-1:-1:-1;;;;;;32840:31:0;;;;;;:27;:31;;;;;;;;32786:85;32760:317;;;32954:15;;32934:17;:35;:123;;33042:15;;32934:123;;;32997:17;32934:123;32914:143;;32760:317;-1:-1:-1;;;;;33162:20:0;;;;;;:14;:20;;;;;;;;;33140:11;:17;;;;;;;33238:6;;33127:107;;33216:17;;33128:56;;33140:43;;:21;:43::i;:::-;33128:7;;:11;:56::i;33127:107::-;:117;;33097:241;;;;-1:-1:-1;;;33097:241:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32444:910;;;-1:-1:-1;;;;;33440:20:0;;33368:17;33440:20;;;:14;:20;;;;;;;;;33418:11;:17;;;;;;33388:88;;33418:43;;:17;:21;:43::i;:::-;33388:7;;:11;:88::i;:::-;33368:108;;33491:14;33517:9;33508:6;:18;:46;;33553:1;33508:46;;;33529:21;:6;33540:9;33529:10;:21::i;:::-;-1:-1:-1;;;;;33569:20:0;;;;;;:14;:20;;;;;:30;;;;;;33491:63;-1:-1:-1;33636:10:0;;;;;:118;;-1:-1:-1;;;;;;33668:29:0;;;;;;:25;:29;;;;;;;;;:85;;-1:-1:-1;;;;;;33722:31:0;;;;;;:27;:31;;;;;;;;33668:85;33614:835;;;-1:-1:-1;;;;;33815:24:0;;;;;;:18;:24;;;;;:37;33885:15;33855:5;33815:45;;;:85;33789:304;;-1:-1:-1;;;;;33943:24:0;;;;;;:18;:24;;;;;:31;;:41;;;;;;33789:304;;;-1:-1:-1;;;;;34033:24:0;;;;;;:18;:24;;;;;:31;;:40;;;33789:304;-1:-1:-1;;;;;34111:24:0;;;;;;:18;:24;;;;;34151:15;34111:55;;34189:31;;-1:-1:-1;;;34189:31:0;;;;34185:249;;;34314:18;;-1:-1:-1;;;;;34279:24:0;;;;;;:18;:24;;;;;:31;;;:53;;34245:169;;;;;-1:-1:-1;;;34245:169:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;32283:2177;;;;;34476:11;34472:93;;34504:28;34520:4;34526:2;34530:1;34504:15;:28::i;:::-;34547:7;;34472:93;34577:28;34608:24;34626:4;34608:9;:24::i;:::-;34711:18;;34758:11;;34577:55;;-1:-1:-1;34674:55:0;;;;34758:11;;:37;;;;-1:-1:-1;34787:8:0;;-1:-1:-1;;;34787:8:0;;;;34786:9;34758:37;:86;;;;-1:-1:-1;;;;;;34813:31:0;;;;;;:25;:31;;;;;;;;34812:32;34758:86;:126;;;;;34861:23;34758:126;34740:283;;;34911:8;:15;;-1:-1:-1;;;;34911:15:0;-1:-1:-1;;;34911:15:0;;;34941:39;34959:20;34941:17;:39::i;:::-;34995:8;:16;;-1:-1:-1;;;;34995:16:0;;;34740:283;35051:8;;-1:-1:-1;;;;;35088:25:0;;35035:12;35088:25;;;35051:8;35088:25;;;;;;35051:8;-1:-1:-1;;;35051:8:0;;;;;35050:9;;35088:25;;:65;;-1:-1:-1;;;;;;35130:23:0;;;;;;:19;:23;;;;;;;;35088:65;:91;;;-1:-1:-1;35171:8:0;;-1:-1:-1;;;35171:8:0;;;;35170:9;35088:91;:123;;;;35204:7;:5;:7::i;:::-;-1:-1:-1;;;;;35196:15:0;:4;-1:-1:-1;;;;;35196:15:0;;35088:123;:153;;;;35234:7;:5;:7::i;:::-;-1:-1:-1;;;;;35228:13:0;:2;-1:-1:-1;;;;;35228:13:0;;35088:153;35070:225;;;-1:-1:-1;35278:5:0;35070:225;35305:12;35332:7;35328:471;;;-1:-1:-1;;;;;35360:29:0;;;;;;:25;:29;;;;;;;;35356:333;;;35417:40;35453:3;35417:31;35428:19;;35417:6;:10;;:31;;;;:::i;:::-;:35;;:40::i;:::-;35410:47;;35356:333;;;-1:-1:-1;;;;;35483:31:0;;;;;;:25;:31;;;;;;;;35479:210;;;35542:39;35577:3;35542:30;35553:18;;35542:6;:10;;:30;;;;:::i;35479:210::-;35629:44;35669:3;35629:35;35640:23;;35629:6;:10;;:35;;;;:::i;:44::-;35622:51;;35479:210;35745:42;35761:4;35775;35782;35745:15;:42::i;:::-;35811:43;35827:4;35833:2;35837:16;:6;35848:4;35837:10;:16::i;:::-;35811:15;:43::i;:::-;35966:15;;-1:-1:-1;;;;;35966:15:0;:26;36001:4;36008:15;36001:4;36008:9;:15::i;:::-;35966:58;;;;;;;;;;;;;-1:-1:-1;;;;;35966:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35949:96;36059:15;;-1:-1:-1;;;;;36059:15:0;:26;36094:2;36099:13;36094:2;36099:9;:13::i;:::-;36059:54;;;;;;;;;;;;;-1:-1:-1;;;;;36059:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36055:70;31530:4602;;;;;;;;:::o;1559:224::-;1679:7;1715:12;1707:6;;;;1699:29;;;;-1:-1:-1;;;1699:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1751:5:0;;;1559:224::o;8004:314::-;-1:-1:-1;;;;;8088:21:0;;8080:65;;;;;-1:-1:-1;;;8080:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8171:12;;:24;;8188:6;8171:16;:24::i;:::-;8156:12;:39;-1:-1:-1;;;;;8227:18:0;;:9;:18;;;;;;;;;;;:30;;8250:6;8227:22;:30::i;:::-;-1:-1:-1;;;;;8206:18:0;;:9;:18;;;;;;;;;;;:51;;;;8273:37;;;;;;;8206:18;;:9;;-1:-1:-1;;;;;;;;;;;8273:37:0;;;;;;;;;8004:314;;:::o;17721:871::-;17881:15;;17839:59;;17809:7;;-1:-1:-1;;;;;17881:15:0;;;;17839:59;;;;;;17809:7;;17839:59;17945:15;;;-1:-1:-1;;;;;17945:15:0;;;17965:5;17909:53;;;:27;:53;;;;;;;;:61;;-1:-1:-1;;17909:61:0;;;18042:48;;-1:-1:-1;;;;;;18042:48:0;;;;;;;;;18144:25;;-1:-1:-1;;;18144:25:0;;;;17965:5;;18144:15;;;;:23;;:25;;;;;17909:53;18144:25;;;;;:15;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18144:25:0;18208:4;;18126:87;;;-1:-1:-1;;;18126:87:0;;18201:4;18126:87;;;;-1:-1:-1;;;;;18208:4:0;;;18126:87;;;;;;:66;;;;;;;:87;;;;;18144:25;;18126:87;;;;;;;:66;:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18126:87:0;;-1:-1:-1;;;;;;18228:30:0;;18224:174;;18310:15;;;;;;;;;-1:-1:-1;;;;;18310:15:0;-1:-1:-1;;;;;18310:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18310:25:0;18381:4;;18292:94;;;-1:-1:-1;;;18292:94:0;;18374:4;18292:94;;;;-1:-1:-1;;;;;18381:4:0;;;18292:94;;;;;;:73;;;;;;;:94;;;;;18310:25;;18292:94;;;;;;;18381:4;18292:73;:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18292:94:0;;-1:-1:-1;18224:174:0;-1:-1:-1;;;;;18408:39:0;;;;;;;:27;:39;;;;;;;;:46;;18450:4;-1:-1:-1;;18408:46:0;;;;;;;;18465:13;:30;;-1:-1:-1;;;;;;18465:30:0;;;;;;;;;;;18532:13;;18506:40;;:25;:40;;;;;:47;;;;;;;;;;18571:13;;;;;17721:871;-1:-1:-1;17721:871:0:o;22986:440::-;-1:-1:-1;;;;;23091:31:0;;;;;;:25;:31;;;;;;;;:40;;;;;;;23069:146;;;;-1:-1:-1;;;23069:146:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23226:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;23226:39:0;;;;;;;;;;;;23276:87;;23302:15;;:49;;;-1:-1:-1;;;23302:49:0;;-1:-1:-1;;;;;23302:49:0;;;;;;;:15;:49;;;;;;;;:15;;;:36;;:49;;;;;:15;;:49;;;;;;:15;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23276:87;23378:40;;;;;;-1:-1:-1;;;;;23378:40:0;;;;;;;;22986:440;;:::o;37367:3863::-;37502:13;;-1:-1:-1;;;37502:13:0;;;;:46;;;;-1:-1:-1;;;;;;37519:29:0;;;;;;:25;:29;;;;;;;;37502:46;37498:214;;;-1:-1:-1;;;;;37591:19:0;;;;;;:13;:19;;;;;;37622:15;37613:5;37591:27;;;:46;;37565:135;;;;;-1:-1:-1;;;37565:135:0;;;;;;;;;;;;-1:-1:-1;;;37565:135:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;37728:29:0;;;;;;:25;:29;;;;;;;;37724:326;;;-1:-1:-1;;;;;37778:19:0;;;;;;:13;:19;;;;;;37809:15;37800:5;37778:27;;;:46;37774:211;;-1:-1:-1;;;;;37845:32:0;;;;;;:26;:32;;;;;:42;;;;;;37774:211;;;-1:-1:-1;;;;;37928:32:0;;;;;;:26;:32;;;;;:41;;;37774:211;-1:-1:-1;;;;;38001:19:0;;;;;;:13;:19;;;;;38023:15;38001:37;;37724:326;38066:18;;-1:-1:-1;;;38066:18:0;;;;38062:206;;;38163:24;;-1:-1:-1;;;;;38127:32:0;;;;;;:26;:32;;;;;;:60;;38101:155;;;;-1:-1:-1;;;38101:155:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38284:12;;;;;;;38280:161;;;-1:-1:-1;;;;;38317:21:0;;38333:4;38317:21;38313:117;;38377:11;;38367:6;:21;;38359:55;;;;;-1:-1:-1;;;38359:55:0;;;;;;;;;;;;-1:-1:-1;;;38359:55:0;;;;;;;;;;;;;;;38457:8;;-1:-1:-1;;;38457:8:0;;;;38453:708;;;-1:-1:-1;;;;;38486:21:0;;38502:4;38486:21;;;;:44;;-1:-1:-1;;;;;;38511:19:0;;38525:4;38511:19;;38486:44;38482:668;;;-1:-1:-1;;;;;38556:29:0;;;;;;:25;:29;;;;;;;;38551:280;;-1:-1:-1;;;;;38664:11:0;;;;;;:7;:11;;;;;;38678:10;38664:24;38644:15;:45;;38610:149;;;;;-1:-1:-1;;;38610:149:0;;;;;;;;;;;;-1:-1:-1;;;38610:149:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;38782:11:0;;;;;;:7;:11;;;;;38796:15;38782:29;;38551:280;-1:-1:-1;;;;;38854:31:0;;;;;;:25;:31;;;;;;;;38849:286;;-1:-1:-1;;;;;38964:13:0;;;;;;:7;:13;;;;;;38980:10;38964:26;38944:15;:47;;38910:151;;;;;-1:-1:-1;;;38910:151:0;;;;;;;;;;;;-1:-1:-1;;;38910:151:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;39084:13:0;;;;;;:7;:13;;;;;39100:15;39084:31;;38849:286;39177:12;;-1:-1:-1;;;39177:12:0;;;;39173:1263;;;-1:-1:-1;;;;;39228:31:0;;;;;;:25;:31;;;;;;;;:84;;;;-1:-1:-1;;;;;;39281:31:0;;;;;;:27;:31;;;;;;;;39280:32;39228:84;:124;;;;-1:-1:-1;;;;;;39333:19:0;;39347:4;39333:19;;39228:124;:166;;;;-1:-1:-1;;;;;;39373:21:0;;39389:4;39373:21;;39228:166;39206:263;;;39437:9;-1:-1:-1;;;;;39437:15:0;;;39429:24;;;;;;39503:20;;39526:1;39503:24;39487:12;:40;39483:942;;39562:9;39548:24;;;;:13;:24;;;;;:31;;-1:-1:-1;;39548:31:0;39575:4;39548:31;;;-1:-1:-1;;;;;39602:17:0;;;;;;:36;;-1:-1:-1;39623:9:0;-1:-1:-1;;;;;39623:15:0;;;;39602:36;39598:138;;;39663:15;;:53;;;-1:-1:-1;;;39663:53:0;;39700:9;39663:53;;;;:15;:53;;;;;;-1:-1:-1;;;;;39663:15:0;;;;:36;;:53;;;;;:15;;:53;;;;;;;;:15;;:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39598:138;-1:-1:-1;;;;;39781:31:0;;;;;;:25;:31;;;;;;;;39780:32;:91;;;;-1:-1:-1;;;;;;39838:33:0;;;;;;:27;:33;;;;;;;;39837:34;39780:91;:137;;;;-1:-1:-1;;;;;;39896:21:0;;39912:4;39896:21;;39780:137;39754:323;;;-1:-1:-1;;;;;39960:19:0;;;;;;;:13;:19;;;;;;:26;;-1:-1:-1;;39960:26:0;39982:4;39960:26;;;;;;40009:15;;:48;;-1:-1:-1;;;40009:48:0;;;;;;;;;;;;;;;;;;:15;;;:36;;:48;;;;;39960:19;40009:48;;;;;;39960:19;40009:15;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39754:323;-1:-1:-1;;;;;40124:29:0;;;;;;:25;:29;;;;;;;;40123:30;:87;;;;-1:-1:-1;;;;;;40179:31:0;;;;;;:27;:31;;;;;;;;40178:32;40123:87;:131;;;;-1:-1:-1;;;;;;40235:19:0;;40249:4;40235:19;;40123:131;40097:313;;;-1:-1:-1;;;;;40297:17:0;;;;;;;:13;:17;;;;;;:24;;-1:-1:-1;;40297:24:0;40317:4;40297:24;;;;;;40344:15;;:46;;-1:-1:-1;;;40344:46:0;;;;;;;;;;;;;;;;;;:15;;;:36;;:46;;;;;40297:17;40344:46;;;;;;40297:17;40344:15;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40097:313;40452:18;;-1:-1:-1;;;40452:18:0;;;;40448:338;;;-1:-1:-1;;;;;40509:31:0;;;;;;:25;:31;;;;;;;;:82;;;;-1:-1:-1;40575:15:0;;-1:-1:-1;;;;;40561:30:0;;;40575:15;;40561:30;;40509:82;:122;;;;-1:-1:-1;;;;;;40612:19:0;;40626:4;40612:19;;40509:122;40487:288;;;40666:15;40684:13;40694:2;40684:9;:13::i;:::-;40747:11;;40666:31;;-1:-1:-1;40724:19:0;40666:31;40736:6;40724:11;:19::i;:::-;:34;;40716:43;;;;;;40487:288;;40802:11;;-1:-1:-1;;;40802:11:0;;;;40798:425;;;-1:-1:-1;;;;;40834:21:0;;40850:4;40834:21;;;;:44;;-1:-1:-1;;;;;;40859:19:0;;40873:4;40859:19;;40834:44;40830:382;;;-1:-1:-1;;;;;40929:31:0;;;;;;:25;:31;;;;;;;;;:89;;-1:-1:-1;;;;;;40989:29:0;;;;;;:25;:29;;;;;;;;40929:89;:151;;;-1:-1:-1;;;;;;41047:33:0;;;;;;:27;:33;;;;;;;;40929:151;:211;;;-1:-1:-1;;;;;;41109:31:0;;;;;;:27;:31;;;;;;;;40929:211;40899:297;;;;;-1:-1:-1;;;40899:297:0;;;;;;;;;;;;-1:-1:-1;;;40899:297:0;;;;;;;;;;;;;;1415:136;1473:7;1500:43;1504:1;1507;1500:43;;;;;;;;;;;;;;;;;:3;:43::i;29625:1897::-;-1:-1:-1;;;;;29781:20:0;;29736:23;29781:20;;;:13;:20;;;;;;;;29777:1738;;;-1:-1:-1;;;;;29839:18:0;;29818;29839;;;:11;:18;;;;;;29889:8;29876:21;;29872:1632;;;29936:1;29918:19;;29872:1632;;;29976:7;29963:10;:20;29959:1545;;;30022:25;30044:2;30022:17;:10;30037:1;30022:14;:17::i;:25::-;30004:43;;29959:1545;;;30086:7;30073:10;:20;30069:1435;;;30132:27;30155:3;30132:18;:10;30147:2;30132:14;:18::i;30069:1435::-;30198:8;30185:10;:21;30181:1323;;;30245:27;30268:3;30245:18;:10;30260:2;30245:14;:18::i;30181:1323::-;30311:8;30298:10;:21;30294:1210;;;30358:27;30381:3;30358:18;:10;30373:2;30358:14;:18::i;30294:1210::-;30424:8;30411:10;:21;30407:1097;;;30471:27;30494:3;30471:18;:10;30486:2;30471:14;:18::i;30407:1097::-;30537:8;30524:10;:21;30520:984;;;30584:27;30607:3;30584:18;:10;30599:2;30584:14;:18::i;30520:984::-;30650:8;30637:10;:21;30633:871;;;30697:17;:10;30712:1;30697:14;:17::i;30633:871::-;30753:8;30740:10;:21;30736:768;;;30800:27;30823:3;30800:18;:10;30815:2;30800:14;:18::i;30736:768::-;30866:8;30853:10;:21;30849:655;;;30913:27;30936:3;30913:18;:10;30928:2;30913:14;:18::i;30849:655::-;30979:8;30966:10;:21;30962:542;;;31026:27;31049:3;31026:18;:10;31041:2;31026:14;:18::i;30962:542::-;31092:8;31079:10;:21;31075:429;;;31139:27;31162:3;31139:18;:10;31154:2;31139:14;:18::i;31075:429::-;31205:8;31192:10;:21;31188:316;;;31252:27;31275:3;31252:18;:10;31267:2;31252:14;:18::i;31188:316::-;31318:8;31305:10;:21;31301:203;;;31365:27;31388:3;31365:18;:10;31380:2;31365:14;:18::i;31301:203::-;31431:8;31418:10;:21;31414:90;;;31478:10;31460:28;;31414:90;29777:1738;29625:1897;;;;:::o;7448:548::-;-1:-1:-1;;;;;7588:20:0;;7580:70;;;;-1:-1:-1;;;7580:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7669:23:0;;7661:71;;;;-1:-1:-1;;;7661:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7763:108;7799:6;7763:108;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7763:17:0;;:9;:17;;;;;;;;;;;;:108;:21;:108::i;:::-;-1:-1:-1;;;;;7743:17:0;;;:9;:17;;;;;;;;;;;:128;;;;7905:20;;;;;;;:32;;7930:6;7905:24;:32::i;:::-;-1:-1:-1;;;;;7882:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;7953:35;;;;;;;7882:20;;7953:35;;;;-1:-1:-1;;;;;;;;;;;7953:35:0;;;;;;;;7448:548;;;:::o;36140:1219::-;36202:20;36300:26;;36263:21;;36225:22;;:59;:101;36202:124;;36337:18;36429:24;;36394:19;;36358:20;;:55;:95;36337:116;;36464:17;36553:23;;36519:18;;36484:19;;:53;:92;36464:112;;36589:18;36610:39;36639:9;36610:24;36621:12;36610:6;:10;;:24;;;;:::i;:39::-;36589:60;-1:-1:-1;36660:20:0;36683:17;36589:60;36698:1;36683:14;:17::i;:::-;36660:40;-1:-1:-1;36711:20:0;36734:24;:6;36660:40;36734:10;:24::i;:::-;36711:47;-1:-1:-1;36790:21:0;36822:30;36711:47;36822:16;:30::i;:::-;36863:19;36885:37;:21;36911:10;36885:25;:37::i;:::-;36863:59;-1:-1:-1;36933:17:0;36968:51;37017:1;36968:44;37002:9;36968:44;36863:59;36984:12;36968:15;:29::i;:51::-;36933:97;-1:-1:-1;37041:21:0;37066:42;37098:9;37066:27;:11;37082:10;37066:15;:27::i;:42::-;37120:14;;:38;;37041:68;;-1:-1:-1;;;;;;37120:14:0;;:38;;;;;37041:68;;37120:14;:38;:14;:38;37041:68;37120:14;:38;;;;;;;;;;;;;;;;;;;;;37169:37;37182:12;37196:9;37169:12;:37::i;:::-;37276:20;;37240:21;;37276:20;;;;;37272:80;;;37313:27;37327:12;37313:13;:27::i;:::-;36140:1219;;;;;;;;;;;;:::o;2045:132::-;2103:7;2130:39;2134:1;2137;2130:39;;;;;;;;;;;;;-1:-1:-1;;;2130:39:0;;;:3;:39::i;41832:453::-;41922:16;;;41936:1;41922:16;;;;;;;;41898:21;;41922:16;;;;;;;;;;-1:-1:-1;41922:16:0;41898:40;;41967:4;41949;41954:1;41949:7;;;;;;;;-1:-1:-1;;;;;41949:23:0;;;:7;;;;;;;;;:23;41993:4;;41983:7;;41993:4;;;41983;;41993;;41983:7;;;;;;-1:-1:-1;;;;;41983:14:0;;;:7;;;;;;;;;:14;42040:15;;42008:62;;42025:4;;42040:15;42058:11;42008:8;:62::i;:::-;42081:15;;:196;;-1:-1:-1;;;42081:196:0;;;;;;;;:15;:196;;;;;;42231:4;42081:196;;;;;;42251:15;42081:196;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;42081:15:0;;;;:66;;42162:11;;42204:4;;42231;42251:15;42081:196;;;;;;;;;;;;;;;;:15;:196;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41464:360;41577:15;;41545:62;;41562:4;;-1:-1:-1;;;;;41577:15:0;41595:11;41545:8;:62::i;:::-;41618:15;;-1:-1:-1;;;;;41618:15:0;:31;41657:9;41690:4;41710:11;41618:15;;41768:7;:5;:7::i;:::-;41790:15;41618:198;;;;;;;;;;;;;-1:-1:-1;;;;;41618:198:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;41618:198:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;41464:360:0:o;41238:218::-;41326:15;;41318:51;;41300:12;;-1:-1:-1;;;;;41326:15:0;;41355:9;;41300:12;41318:51;41300:12;41318:51;41355:9;41326:15;41318:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41299:70;;;41384:7;41380:69;;;41413:24;;;;;;;;;;;;;;;;;41238:218;;:::o;2185:223::-;2305:7;2340:12;2333:5;2325:28;;;;-1:-1:-1;;;2325:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2364:9;2380:1;2376;:5;;;;;;;2185:223;-1:-1:-1;;;;;2185:223:0:o

Swarm Source

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