ETH Price: $2,453.18 (+1.19%)

Token

fOrG (fOrG)
 

Overview

Max Total Supply

100,000,000 fOrG

Holders

53

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
798,118.1071945979453125 fOrG

Value
$0.00
0x5793c281e50266d1cc25ffe051440c4ccd01a8a9
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:
f0rG

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-28
*/

/**
Get cozy little tadpole, we iz going to swim in big pond.

https://www.forgcoin.io/
*/

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}

pragma solidity ^0.8.19;

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

    function WETH() external pure returns (address);

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

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address UNISWAP_V2_PAIR);
}

contract f0rG is IERC20, Ownable {

    event Reflect(uint256 amountReflected, uint256 newTotalProportion);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    uint256 constant MAX_FEE = 10;

    IUniswapV2Router02 public constant UNISWAP_V2_ROUTER =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable UNISWAP_V2_PAIR;
    mapping(address => bool) public automatedMarketMakerPairs;

    struct Fee {
        uint8 reflection;
        uint8 marketing;
        uint8 lp;
        uint8 buyback;
        uint8 burn;
        uint128 total;
    }

    string _name = "fOrG";
    string _symbol = "fOrG";

    uint256 _totalSupply = 100_000_000 ether;
    uint256 public _maxTxAmount = _totalSupply * 10 / 1000;
    uint256 public _maxWalletAmount = _totalSupply * 20 / 1000;

    /* rOwned = ratio of tokens owned relative to circulating supply (NOT total supply, since circulating <= total) */
    mapping(address => uint256) public _rOwned;
    uint256 public _totalProportion = _totalSupply;

    mapping(address => mapping(address => uint256)) _allowances;

    bool public tradingActive = false;
    bool public transferDelayEnabled = false;
    bool public limitsEnabled = true;
    mapping(address => bool) isFeeExempt;
    mapping(address => bool) isLimitExempt;

    Fee public buyFee = Fee({reflection: 0, marketing: 10, lp: 5, buyback: 0, burn: 0, total: 15});
    Fee public sellFee = Fee({reflection: 0, marketing: 10, lp: 5, buyback: 10, burn: 0, total: 25});

    address private marketingFeeReceiver;
    address private lpFeeReceiver;
    address private buybackFeeReceiver;

    bool public claimingFees = false;
    uint256 public swapThreshold = (_totalSupply * 3) / 1000;
    bool inSwap;
    mapping(address => bool) public blacklists;
    mapping(address => uint256) private _holderLastTransferTimestamp;

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        // create uniswap pair
        address _uniswapPair =
            IUniswapV2Factory(UNISWAP_V2_ROUTER.factory()).createPair(address(this), UNISWAP_V2_ROUTER.WETH());
        UNISWAP_V2_PAIR = _uniswapPair;
        _setAutomatedMarketMakerPair(address(_uniswapPair), true);

        _allowances[address(this)][address(UNISWAP_V2_ROUTER)] = type(uint256).max;
        _allowances[address(this)][owner()] = type(uint256).max;

        isLimitExempt[address(this)] = true;
        isLimitExempt[DEAD] = true;
        isLimitExempt[owner()] = true;
        isLimitExempt[UNISWAP_V2_PAIR] = true;
        
        isFeeExempt[address(this)] = true;
        isFeeExempt[DEAD] = true;
        isFeeExempt[owner()] = true;

        marketingFeeReceiver = 0xEB3b5D6C8732eA15527CA271E3Ac70816aC2FFb3;
        lpFeeReceiver = 0xEB3b5D6C8732eA15527CA271E3Ac70816aC2FFb3;
        buybackFeeReceiver = 0xEB3b5D6C8732eA15527CA271E3Ac70816aC2FFb3;

        _rOwned[tx.origin] = _totalSupply;
        emit Transfer(address(0), tx.origin, _totalSupply);
    }

    receive() external payable {}

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            require(_allowances[sender][msg.sender] >= amount, "ERC20: insufficient allowance");
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }

        return _transferFrom(sender, recipient, amount);
    }

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

    function decimals() external pure returns (uint8) {
        return 18;
    }

    function name() external view returns (string memory) {
        return _name;
    }

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

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

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

    function tokensToProportion(uint256 tokens) public view returns (uint256) {
        return tokens * _totalProportion / _totalSupply;
    }

    function tokenFromReflection(uint256 proportion) public view returns (uint256) {
        return proportion * _totalSupply / _totalProportion;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - balanceOf(DEAD) - balanceOf(ZERO);
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

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

    function clearStuckBalance() external onlyOwner {
        (bool success,) = payable(msg.sender).call{value: address(this).balance}("");
        require(success);
    }

    function clearStuckToken() external onlyOwner {
        _transferFrom(address(this), msg.sender, balanceOf(address(this)));
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        claimingFees = _enabled;
        swapThreshold = _amount;
    }

    function changeFees(
        uint8 reflectionFeeBuy,
        uint8 marketingFeeBuy,
        uint8 lpFeeBuy,
        uint8 buybackFeeBuy,
        uint8 burnFeeBuy,
        uint8 reflectionFeeSell,
        uint8 marketingFeeSell,
        uint8 lpFeeSell,
        uint8 buybackFeeSell,
        uint8 burnFeeSell
    ) external onlyOwner {
        uint128 __totalBuyFee = reflectionFeeBuy + marketingFeeBuy + lpFeeBuy + buybackFeeBuy + burnFeeBuy;
        uint128 __totalSellFee = reflectionFeeSell + marketingFeeSell + lpFeeSell + buybackFeeSell + burnFeeSell;

        buyFee = Fee({
            reflection: reflectionFeeBuy,
            marketing: marketingFeeBuy,
            lp: lpFeeBuy,
            buyback: buybackFeeBuy,
            burn: burnFeeBuy,
            total: __totalBuyFee
        });

        sellFee = Fee({
            reflection: reflectionFeeSell,
            marketing: marketingFeeSell,
            lp: lpFeeSell,
            buyback: buybackFeeSell,
            burn: burnFeeSell,
            total: __totalSellFee
        });
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setisLimitExempt(address holder, bool exempt) external onlyOwner {
        isLimitExempt[holder] = exempt;
    }

    function setFeeReceivers(address m_, address lp_, address b_) external onlyOwner {
        marketingFeeReceiver = m_;
        lpFeeReceiver = lp_;
        buybackFeeReceiver = b_;
    }

    function setLimitsEnabled(bool e_) external onlyOwner {
        limitsEnabled = e_;
    }

    // Set Transfer delay
    function disableTransferDelay(bool e_) external onlyOwner returns (bool) {
        transferDelayEnabled = e_;
        return true;
    }

    function blacklist(address _address, bool _isBlacklisting) external onlyOwner {
        blacklists[_address] = _isBlacklisting;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(!blacklists[recipient] && !blacklists[sender], "Blacklisted");

        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        if (limitsEnabled) {
            if (!tradingActive) 
            {
                require(
                    isFeeExempt[sender] || isFeeExempt[recipient],
                    "Trading is not active."
                );
            }

            //when buy
            if (automatedMarketMakerPairs[sender] && !isLimitExempt[recipient]) 
            {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
                require(amount + balanceOf(recipient) <= _maxWalletAmount, "Max wallet exceeded");
            }
            //when sell
            else if (automatedMarketMakerPairs[recipient] && !isLimitExempt[sender])
            {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }
            else if (!isLimitExempt[recipient]) 
            {
                require(amount + balanceOf(recipient) <= _maxWalletAmount, "Max wallet exceeded");
            }
            
            // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.
            if (transferDelayEnabled) {
                if (
                    recipient != owner() &&
                    recipient != address(UNISWAP_V2_ROUTER) &&
                    recipient != UNISWAP_V2_PAIR
                ) {
                    require(
                        _holderLastTransferTimestamp[tx.origin] + 1 <
                            block.number,
                        "_transfer:: Transfer Delay enabled.  Only one purchase per two blocks allowed."
                    );
                    _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }
        }

        if (_shouldSwapBack()) {
            _swapBack();
        }

        uint256 proportionAmount = tokensToProportion(amount);
        require(_rOwned[sender] >= proportionAmount, "Insufficient Balance");
        _rOwned[sender] = _rOwned[sender] - proportionAmount;

        uint256 proportionReceived = _shouldTakeFee(sender, recipient)
            ? _takeFeeInProportions(sender == UNISWAP_V2_PAIR ? true : false, sender, proportionAmount)
            : proportionAmount;
        _rOwned[recipient] = _rOwned[recipient] + proportionReceived;

        emit Transfer(sender, recipient, tokenFromReflection(proportionReceived));
        return true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 proportionAmount = tokensToProportion(amount);
        require(_rOwned[sender] >= proportionAmount, "Insufficient Balance");
        _rOwned[sender] = _rOwned[sender] - proportionAmount;
        _rOwned[recipient] = _rOwned[recipient] + proportionAmount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _takeFeeInProportions(bool buying, address sender, uint256 proportionAmount) internal returns (uint256) {
        Fee memory __buyFee = buyFee;
        Fee memory __sellFee = sellFee;

        uint256 proportionFeeAmount =
            buying == true ? proportionAmount * __buyFee.total / 100 : proportionAmount * __sellFee.total / 100;

        // reflect
        uint256 proportionReflected = buying == true
            ? proportionFeeAmount * __buyFee.reflection / __buyFee.total
            : proportionFeeAmount * __sellFee.reflection / __sellFee.total;

        _totalProportion = _totalProportion - proportionReflected;

        // take fees
        uint256 _proportionToContract = proportionFeeAmount - proportionReflected;
        if (_proportionToContract > 0) {
            _rOwned[address(this)] = _rOwned[address(this)] + _proportionToContract;

            emit Transfer(sender, address(this), tokenFromReflection(_proportionToContract));
        }
        emit Reflect(proportionReflected, _totalProportion);
        return proportionAmount - proportionFeeAmount;
    }

    function _shouldSwapBack() internal view returns (bool) {
        return msg.sender != UNISWAP_V2_PAIR && !inSwap && claimingFees && balanceOf(address(this)) >= swapThreshold;
    }

    function _swapBack() internal swapping {
        Fee memory __sellFee = sellFee;

        uint256 __swapThreshold = swapThreshold;
        uint256 amountToBurn = __swapThreshold * __sellFee.burn / __sellFee.total;
        uint256 amountToSwap = __swapThreshold - amountToBurn;
        approve(address(UNISWAP_V2_ROUTER), amountToSwap);

        if(amountToBurn > 0)
        {
            // burn
            _transferFrom(address(this), DEAD, amountToBurn);
        }

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

        UNISWAP_V2_ROUTER.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap, 0, path, address(this), block.timestamp
        );

        uint256 amountETH = address(this).balance;

        uint256 totalSwapFee = __sellFee.total - __sellFee.reflection - __sellFee.burn;
        uint256 amountETHMarketing = amountETH * __sellFee.marketing / totalSwapFee;
        uint256 amountETHLP = amountETH * __sellFee.lp / totalSwapFee;
        uint256 amountETHBuyback = amountETH * __sellFee.buyback / totalSwapFee;

        // send
        (bool tmpSuccess,) = payable(lpFeeReceiver).call{value: amountETHLP}("");
        (tmpSuccess,) = payable(buybackFeeReceiver).call{value: amountETHBuyback}("");
        (tmpSuccess,) = address(marketingFeeReceiver).call{value: address(this).balance}("");
    }

    function _shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }
}

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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountReflected","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalProportion","type":"uint256"}],"name":"Reflect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"UNISWAP_V2_PAIR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNISWAP_V2_ROUTER","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rOwned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isBlacklisting","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"reflection","type":"uint8"},{"internalType":"uint8","name":"marketing","type":"uint8"},{"internalType":"uint8","name":"lp","type":"uint8"},{"internalType":"uint8","name":"buyback","type":"uint8"},{"internalType":"uint8","name":"burn","type":"uint8"},{"internalType":"uint128","name":"total","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"reflectionFeeBuy","type":"uint8"},{"internalType":"uint8","name":"marketingFeeBuy","type":"uint8"},{"internalType":"uint8","name":"lpFeeBuy","type":"uint8"},{"internalType":"uint8","name":"buybackFeeBuy","type":"uint8"},{"internalType":"uint8","name":"burnFeeBuy","type":"uint8"},{"internalType":"uint8","name":"reflectionFeeSell","type":"uint8"},{"internalType":"uint8","name":"marketingFeeSell","type":"uint8"},{"internalType":"uint8","name":"lpFeeSell","type":"uint8"},{"internalType":"uint8","name":"buybackFeeSell","type":"uint8"},{"internalType":"uint8","name":"burnFeeSell","type":"uint8"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimingFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"e_","type":"bool"}],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"reflection","type":"uint8"},{"internalType":"uint8","name":"marketing","type":"uint8"},{"internalType":"uint8","name":"lp","type":"uint8"},{"internalType":"uint8","name":"buyback","type":"uint8"},{"internalType":"uint8","name":"burn","type":"uint8"},{"internalType":"uint128","name":"total","type":"uint128"}],"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":"m_","type":"address"},{"internalType":"address","name":"lp_","type":"address"},{"internalType":"address","name":"b_","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"e_","type":"bool"}],"name":"setLimitsEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setisLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proportion","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"tokensToProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600481526020017f664f724700000000000000000000000000000000000000000000000000000000815250600290816200004a919062000fb1565b506040518060400160405280600481526020017f664f7247000000000000000000000000000000000000000000000000000000008152506003908162000091919062000fb1565b506a52b7d2dcc80cd2e40000006004556103e8600a600454620000b59190620010c7565b620000c1919062001141565b6005556103e86014600454620000d89190620010c7565b620000e4919062001141565b6006556004546008556000600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff0219169083151502179055506001600a60026101000a81548160ff0219169083151502179055506040518060c00160405280600060ff168152602001600a60ff168152602001600560ff168152602001600060ff168152602001600060ff168152602001600f6fffffffffffffffffffffffffffffffff16815250600d60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050506040518060c00160405280600060ff168152602001600a60ff168152602001600560ff168152602001600a60ff168152602001600060ff16815260200160196fffffffffffffffffffffffffffffffff16815250600e60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050506000601160146101000a81548160ff0219169083151502179055506103e86003600454620003e59190620010c7565b620003f1919062001141565b6012553480156200040157600080fd5b50620004226200041662000ba160201b60201c565b62000ba960201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000484573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004aa9190620011e3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000526573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200054c9190620011e3565b6040518363ffffffff1660e01b81526004016200056b92919062001226565b6020604051808303816000875af11580156200058b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005b19190620011e3565b90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050620005fa81600162000c6d60201b60201c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006200072162000d0e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60006200082762000d0e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60006200099a62000d0e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555073eb3b5d6c8732ea15527ca271e3ac70816ac2ffb3600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073eb3b5d6c8732ea15527ca271e3ac70816ac2ffb3601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073eb3b5d6c8732ea15527ca271e3ac70816ac2ffb3601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600454600760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405162000b92919062001264565b60405180910390a35062001281565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000db957607f821691505b60208210810362000dcf5762000dce62000d71565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000e397fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000dfa565b62000e45868362000dfa565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000e9262000e8c62000e868462000e5d565b62000e67565b62000e5d565b9050919050565b6000819050919050565b62000eae8362000e71565b62000ec662000ebd8262000e99565b84845462000e07565b825550505050565b600090565b62000edd62000ece565b62000eea81848462000ea3565b505050565b5b8181101562000f125762000f0660008262000ed3565b60018101905062000ef0565b5050565b601f82111562000f615762000f2b8162000dd5565b62000f368462000dea565b8101602085101562000f46578190505b62000f5e62000f558562000dea565b83018262000eef565b50505b505050565b600082821c905092915050565b600062000f866000198460080262000f66565b1980831691505092915050565b600062000fa1838362000f73565b9150826002028217905092915050565b62000fbc8262000d37565b67ffffffffffffffff81111562000fd85762000fd762000d42565b5b62000fe4825462000da0565b62000ff182828562000f16565b600060209050601f83116001811462001029576000841562001014578287015190505b62001020858262000f93565b86555062001090565b601f198416620010398662000dd5565b60005b8281101562001063578489015182556001820191506020850194506020810190506200103c565b868310156200108357848901516200107f601f89168262000f73565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620010d48262000e5d565b9150620010e18362000e5d565b9250828202620010f18162000e5d565b915082820484148315176200110b576200110a62001098565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200114e8262000e5d565b91506200115b8362000e5d565b9250826200116e576200116d62001112565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620011ab826200117e565b9050919050565b620011bd816200119e565b8114620011c957600080fd5b50565b600081519050620011dd81620011b2565b92915050565b600060208284031215620011fc57620011fb62001179565b5b60006200120c84828501620011cc565b91505092915050565b62001220816200119e565b82525050565b60006040820190506200123d600083018562001215565b6200124c602083018462001215565b9392505050565b6200125e8162000e5d565b82525050565b60006020820190506200127b600083018462001253565b92915050565b608051614602620012b9600039600081816114c001528181611b89015281816121c80152818161243e015261293a01526146026000f3fe6080604052600436106102765760003560e01c8063658d4b7f1161014f578063b0f7ec38116100c1578063d7c010321161007a578063d7c0103214610993578063d85a2828146109bc578063dd62ed3e146109d3578063df20fd4914610a10578063f2fde38b14610a39578063f40acc3d14610a625761027d565b8063b0f7ec3814610883578063b62496f5146108ae578063bbc0c742146108eb578063c18bc19514610916578063c38a31de1461093f578063c876d0b9146109685761027d565b80638a8c523c116101135780638a8c523c146107855780638da5cb5b1461079c57806395d89b41146107c75780639a7a23d6146107f2578063a82ed9ec1461081b578063a9059cbb146108465761027d565b8063658d4b7f146106b25780636c0a24eb146106db57806370a0823114610706578063715018a6146107435780637d1db4a51461075a5761027d565b80632b14ca56116101e8578063364333f4116101ac578063364333f41461059f578063404e5129146105b657806341aea9de146105df57806345ce5365146106085780634706240214610645578063571ac8b0146106755761027d565b80632b14ca561461049f5780632d838119146104cf578063313ce5671461050c57806334b86560146105375780633582ad23146105745761027d565b8063178002871161023a578063178002871461038f57806318160ddd146103ba578063203e727e146103e557806323b872dd1461040e57806324c390231461044b5780632b112e49146104745761027d565b80630445b6671461028257806306fdde03146102ad578063095ea7b3146102d85780630cfc15f91461031557806316c02129146103525761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610a8d565b6040516102a491906134e1565b60405180910390f35b3480156102b957600080fd5b506102c2610a93565b6040516102cf919061358c565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa919061363d565b610b25565b60405161030c9190613698565b60405180910390f35b34801561032157600080fd5b5061033c600480360381019061033791906136b3565b610c17565b60405161034991906134e1565b60405180910390f35b34801561035e57600080fd5b50610379600480360381019061037491906136b3565b610c2f565b6040516103869190613698565b60405180910390f35b34801561039b57600080fd5b506103a4610c4f565b6040516103b191906134e1565b60405180910390f35b3480156103c657600080fd5b506103cf610c55565b6040516103dc91906134e1565b60405180910390f35b3480156103f157600080fd5b5061040c600480360381019061040791906136e0565b610c5f565b005b34801561041a57600080fd5b506104356004803603810190610430919061370d565b610cf5565b6040516104429190613698565b60405180910390f35b34801561045757600080fd5b50610472600480360381019061046d919061378c565b610f76565b005b34801561048057600080fd5b50610489610fd9565b60405161049691906134e1565b60405180910390f35b3480156104ab57600080fd5b506104b461100c565b6040516104c696959493929190613813565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f191906136e0565b611093565b60405161050391906134e1565b60405180910390f35b34801561051857600080fd5b506105216110b7565b60405161052e9190613874565b60405180910390f35b34801561054357600080fd5b5061055e6004803603810190610559919061388f565b6110c0565b60405161056b9190613698565b60405180910390f35b34801561058057600080fd5b506105896110ed565b6040516105969190613698565b60405180910390f35b3480156105ab57600080fd5b506105b4611100565b005b3480156105c257600080fd5b506105dd60048036038101906105d8919061378c565b611181565b005b3480156105eb57600080fd5b506106066004803603810190610601919061388f565b6111e4565b005b34801561061457600080fd5b5061062f600480360381019061062a91906136e0565b611209565b60405161063c91906134e1565b60405180910390f35b34801561065157600080fd5b5061065a61122d565b60405161066c96959493929190613813565b60405180910390f35b34801561068157600080fd5b5061069c600480360381019061069791906136b3565b6112b4565b6040516106a99190613698565b60405180910390f35b3480156106be57600080fd5b506106d960048036038101906106d4919061378c565b6112e7565b005b3480156106e757600080fd5b506106f061134a565b6040516106fd91906134e1565b60405180910390f35b34801561071257600080fd5b5061072d600480360381019061072891906136b3565b611350565b60405161073a91906134e1565b60405180910390f35b34801561074f57600080fd5b506107586113a1565b005b34801561076657600080fd5b5061076f6113b5565b60405161077c91906134e1565b60405180910390f35b34801561079157600080fd5b5061079a6113bb565b005b3480156107a857600080fd5b506107b16113fb565b6040516107be91906138cb565b60405180910390f35b3480156107d357600080fd5b506107dc611424565b6040516107e9919061358c565b60405180910390f35b3480156107fe57600080fd5b506108196004803603810190610814919061378c565b6114b6565b005b34801561082757600080fd5b5061083061155a565b60405161083d9190613945565b60405180910390f35b34801561085257600080fd5b5061086d6004803603810190610868919061363d565b611572565b60405161087a9190613698565b60405180910390f35b34801561088f57600080fd5b50610898611587565b6040516108a59190613698565b60405180910390f35b3480156108ba57600080fd5b506108d560048036038101906108d091906136b3565b61159a565b6040516108e29190613698565b60405180910390f35b3480156108f757600080fd5b506109006115ba565b60405161090d9190613698565b60405180910390f35b34801561092257600080fd5b5061093d600480360381019061093891906136e0565b6115cd565b005b34801561094b57600080fd5b506109666004803603810190610961919061398c565b611663565b005b34801561097457600080fd5b5061097d61194f565b60405161098a9190613698565b60405180910390f35b34801561099f57600080fd5b506109ba60048036038101906109b59190613a6b565b611962565b005b3480156109c857600080fd5b506109d1611a32565b005b3480156109df57600080fd5b506109fa60048036038101906109f59190613abe565b611a50565b604051610a0791906134e1565b60405180910390f35b348015610a1c57600080fd5b50610a376004803603810190610a329190613afe565b611ad7565b005b348015610a4557600080fd5b50610a606004803603810190610a5b91906136b3565b611b04565b005b348015610a6e57600080fd5b50610a77611b87565b604051610a8491906138cb565b60405180910390f35b60125481565b606060028054610aa290613b6d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ace90613b6d565b8015610b1b5780601f10610af057610100808354040283529160200191610b1b565b820191906000526020600020905b815481529060010190602001808311610afe57829003601f168201915b5050505050905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c0591906134e1565b60405180910390a36001905092915050565b60076020528060005260406000206000915090505481565b60146020528060005260406000206000915054906101000a900460ff1681565b60085481565b6000600454905090565b610c67611bab565b670de0b6b3a76400006103e86001600454610c829190613bcd565b610c8c9190613c3e565b610c969190613c3e565b811015610cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccf90613ce1565b60405180910390fd5b670de0b6b3a764000081610cec9190613bcd565b60058190555050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f625781600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5090613d4d565b60405180910390fd5b81600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ee19190613d6d565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610f6d848484611c29565b90509392505050565b610f7e611bab565b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000610fe56000611350565b610ff061dead611350565b600454610ffd9190613d6d565b6110079190613d6d565b905090565b600e8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a900460ff16908060000160039054906101000a900460ff16908060000160049054906101000a900460ff16908060000160059054906101000a90046fffffffffffffffffffffffffffffffff16905086565b6000600854600454836110a69190613bcd565b6110b09190613c3e565b9050919050565b60006012905090565b60006110ca611bab565b81600a60016101000a81548160ff02191690831515021790555060019050919050565b600a60029054906101000a900460ff1681565b611108611bab565b60003373ffffffffffffffffffffffffffffffffffffffff164760405161112e90613dd2565b60006040518083038185875af1925050503d806000811461116b576040519150601f19603f3d011682016040523d82523d6000602084013e611170565b606091505b505090508061117e57600080fd5b50565b611189611bab565b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6111ec611bab565b80600a60026101000a81548160ff02191690831515021790555050565b60006004546008548361121c9190613bcd565b6112269190613c3e565b9050919050565b600d8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a900460ff16908060000160039054906101000a900460ff16908060000160049054906101000a900460ff16908060000160059054906101000a90046fffffffffffffffffffffffffffffffff16905086565b60006112e0827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b25565b9050919050565b6112ef611bab565b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60065481565b600061139a600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611093565b9050919050565b6113a9611bab565b6113b360006125ac565b565b60055481565b6113c3611bab565b6001600a60006101000a81548160ff0219169083151502179055506001601160146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606003805461143390613b6d565b80601f016020809104026020016040519081016040528092919081815260200182805461145f90613b6d565b80156114ac5780601f10611481576101008083540402835291602001916114ac565b820191906000526020600020905b81548152906001019060200180831161148f57829003601f168201915b5050505050905090565b6114be611bab565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361154c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154390613e59565b60405180910390fd5b6115568282612670565b5050565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b600061157f338484611c29565b905092915050565b601160149054906101000a900460ff1681565b60016020528060005260406000206000915054906101000a900460ff1681565b600a60009054906101000a900460ff1681565b6115d5611bab565b670de0b6b3a76400006103e860056004546115f09190613bcd565b6115fa9190613c3e565b6116049190613c3e565b811015611646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163d90613eeb565b60405180910390fd5b670de0b6b3a76400008161165a9190613bcd565b60068190555050565b61166b611bab565b600086888a8c8e61167c9190613f0b565b6116869190613f0b565b6116909190613f0b565b61169a9190613f0b565b60ff1690506000828486888a6116b09190613f0b565b6116ba9190613f0b565b6116c49190613f0b565b6116ce9190613f0b565b60ff1690506040518060c001604052808d60ff1681526020018c60ff1681526020018b60ff1681526020018a60ff1681526020018960ff168152602001836fffffffffffffffffffffffffffffffff16815250600d60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050506040518060c001604052808860ff1681526020018760ff1681526020018660ff1681526020018560ff1681526020018460ff168152602001826fffffffffffffffffffffffffffffffff16815250600e60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905050505050505050505050505050565b600a60019054906101000a900460ff1681565b61196a611bab565b82600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b611a3a611bab565b611a4d3033611a4830611350565b611c29565b50565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611adf611bab565b81601160146101000a81548160ff021916908315150217905550806012819055505050565b611b0c611bab565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7290613fb2565b60405180910390fd5b611b84816125ac565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b611bb3612711565b73ffffffffffffffffffffffffffffffffffffffff16611bd16113fb565b73ffffffffffffffffffffffffffffffffffffffff1614611c27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1e9061401e565b60405180910390fd5b565b6000601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ccf5750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d059061408a565b60405180910390fd5b601360009054906101000a900460ff1615611d3557611d2e848484612719565b90506125a5565b600a60029054906101000a900460ff16156122f057600a60009054906101000a900460ff16611e3f57600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dff5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e35906140f6565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ee25750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f8957600554821115611f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2390614188565b60405180910390fd5b600654611f3884611350565b83611f4391906141a8565b1115611f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7b90614228565b60405180910390fd5b612127565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561202c5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561207b57600554821115612076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206d90614188565b60405180910390fd5b612126565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612125576006546120d884611350565b836120e391906141a8565b1115612124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211b90614228565b60405180910390fd5b5b5b5b600a60019054906101000a900460ff16156122ef576121446113fb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121bf5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561221757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156122ee57436001601560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461226991906141a8565b106122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a0906142e0565b60405180910390fd5b43601560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b6122f8612936565b15612306576123056129d4565b5b600061231183611209565b905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238c9061434c565b60405180910390fd5b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e09190613d6d565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061242f8686612fd3565b61243957816124a1565b6124a07f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614612496576000612499565b60015b8784613081565b5b905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124ee91906141a8565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61258984611093565b60405161259691906134e1565b60405180910390a36001925050505b9392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600033905090565b60008061272583611209565b905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156127a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a09061434c565b60405180910390fd5b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127f49190613d6d565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461288291906141a8565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161292291906134e1565b60405180910390a360019150509392505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156129a15750601360009054906101000a900460ff16155b80156129b95750601160149054906101000a900460ff165b80156129cf57506012546129cc30611350565b10155b905090565b6001601360006101000a81548160ff0219169083151502179055506000600e6040518060c00160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a900460ff1660ff1660ff1681526020016000820160039054906101000a900460ff1660ff1660ff1681526020016000820160049054906101000a900460ff1660ff1660ff1681526020016000820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506000601254905060008260a001516fffffffffffffffffffffffffffffffff16836080015160ff1683612b0e9190613bcd565b612b189190613c3e565b905060008183612b289190613d6d565b9050612b48737a250d5630b4cf539739df2c5dacb4c659f2488d82610b25565b506000821115612b6157612b5f3061dead84611c29565b505b6000600267ffffffffffffffff811115612b7e57612b7d61436c565b5b604051908082528060200260200182016040528015612bac5781602001602082028036833780820191505090505b5090503081600081518110612bc457612bc361439b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8191906143df565b81600181518110612c9557612c9461439b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d25959493929190614505565b600060405180830381600087803b158015612d3f57600080fd5b505af1158015612d53573d6000803e3d6000fd5b5050505060004790506000866080015160ff16876000015160ff168860a00151612d7d919061455f565b612d87919061455f565b6fffffffffffffffffffffffffffffffff169050600081886020015160ff1684612db19190613bcd565b612dbb9190613c3e565b9050600082896040015160ff1685612dd39190613bcd565b612ddd9190613c3e565b90506000838a6060015160ff1686612df59190613bcd565b612dff9190613c3e565b90506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612e4990613dd2565b60006040518083038185875af1925050503d8060008114612e86576040519150601f19603f3d011682016040523d82523d6000602084013e612e8b565b606091505b50509050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612ed590613dd2565b60006040518083038185875af1925050503d8060008114612f12576040519150601f19603f3d011682016040523d82523d6000602084013e612f17565b606091505b505080915050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612f6390613dd2565b60006040518083038185875af1925050503d8060008114612fa0576040519150601f19603f3d011682016040523d82523d6000602084013e612fa5565b606091505b50508091505050505050505050505050506000601360006101000a81548160ff021916908315150217905550565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130795750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080600d6040518060c00160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a900460ff1660ff1660ff1681526020016000820160039054906101000a900460ff1660ff1660ff1681526020016000820160049054906101000a900460ff1660ff1660ff1681526020016000820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506000600e6040518060c00160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a900460ff1660ff1660ff1681526020016000820160039054906101000a900460ff1660ff1660ff1681526020016000820160049054906101000a900460ff1660ff1660ff1681526020016000820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506000600115158715151461329b5760648260a001516fffffffffffffffffffffffffffffffff168661328c9190613bcd565b6132969190613c3e565b6132ca565b60648360a001516fffffffffffffffffffffffffffffffff16866132bf9190613bcd565b6132c99190613c3e565b5b905060006001151588151514613313578260a001516fffffffffffffffffffffffffffffffff16836000015160ff16836133049190613bcd565b61330e9190613c3e565b613348565b8360a001516fffffffffffffffffffffffffffffffff16846000015160ff168361333d9190613bcd565b6133479190613c3e565b5b9050806008546133589190613d6d565b6008819055506000818361336c9190613d6d565b905060008111156134735780600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133c291906141a8565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61345d84611093565b60405161346a91906134e1565b60405180910390a35b7fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac826008546040516134a69291906145a3565b60405180910390a182876134ba9190613d6d565b955050505050509392505050565b6000819050919050565b6134db816134c8565b82525050565b60006020820190506134f660008301846134d2565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561353657808201518184015260208101905061351b565b60008484015250505050565b6000601f19601f8301169050919050565b600061355e826134fc565b6135688185613507565b9350613578818560208601613518565b61358181613542565b840191505092915050565b600060208201905081810360008301526135a68184613553565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006135de826135b3565b9050919050565b6135ee816135d3565b81146135f957600080fd5b50565b60008135905061360b816135e5565b92915050565b61361a816134c8565b811461362557600080fd5b50565b60008135905061363781613611565b92915050565b60008060408385031215613654576136536135ae565b5b6000613662858286016135fc565b925050602061367385828601613628565b9150509250929050565b60008115159050919050565b6136928161367d565b82525050565b60006020820190506136ad6000830184613689565b92915050565b6000602082840312156136c9576136c86135ae565b5b60006136d7848285016135fc565b91505092915050565b6000602082840312156136f6576136f56135ae565b5b600061370484828501613628565b91505092915050565b600080600060608486031215613726576137256135ae565b5b6000613734868287016135fc565b9350506020613745868287016135fc565b925050604061375686828701613628565b9150509250925092565b6137698161367d565b811461377457600080fd5b50565b60008135905061378681613760565b92915050565b600080604083850312156137a3576137a26135ae565b5b60006137b1858286016135fc565b92505060206137c285828601613777565b9150509250929050565b600060ff82169050919050565b6137e2816137cc565b82525050565b60006fffffffffffffffffffffffffffffffff82169050919050565b61380d816137e8565b82525050565b600060c08201905061382860008301896137d9565b61383560208301886137d9565b61384260408301876137d9565b61384f60608301866137d9565b61385c60808301856137d9565b61386960a0830184613804565b979650505050505050565b600060208201905061388960008301846137d9565b92915050565b6000602082840312156138a5576138a46135ae565b5b60006138b384828501613777565b91505092915050565b6138c5816135d3565b82525050565b60006020820190506138e060008301846138bc565b92915050565b6000819050919050565b600061390b613906613901846135b3565b6138e6565b6135b3565b9050919050565b600061391d826138f0565b9050919050565b600061392f82613912565b9050919050565b61393f81613924565b82525050565b600060208201905061395a6000830184613936565b92915050565b613969816137cc565b811461397457600080fd5b50565b60008135905061398681613960565b92915050565b6000806000806000806000806000806101408b8d0312156139b0576139af6135ae565b5b60006139be8d828e01613977565b9a505060206139cf8d828e01613977565b99505060406139e08d828e01613977565b98505060606139f18d828e01613977565b9750506080613a028d828e01613977565b96505060a0613a138d828e01613977565b95505060c0613a248d828e01613977565b94505060e0613a358d828e01613977565b935050610100613a478d828e01613977565b925050610120613a598d828e01613977565b9150509295989b9194979a5092959850565b600080600060608486031215613a8457613a836135ae565b5b6000613a92868287016135fc565b9350506020613aa3868287016135fc565b9250506040613ab4868287016135fc565b9150509250925092565b60008060408385031215613ad557613ad46135ae565b5b6000613ae3858286016135fc565b9250506020613af4858286016135fc565b9150509250929050565b60008060408385031215613b1557613b146135ae565b5b6000613b2385828601613777565b9250506020613b3485828601613628565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613b8557607f821691505b602082108103613b9857613b97613b3e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bd8826134c8565b9150613be3836134c8565b9250828202613bf1816134c8565b91508282048414831517613c0857613c07613b9e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c49826134c8565b9150613c54836134c8565b925082613c6457613c63613c0f565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000613ccb602f83613507565b9150613cd682613c6f565b604082019050919050565b60006020820190508181036000830152613cfa81613cbe565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613d37601d83613507565b9150613d4282613d01565b602082019050919050565b60006020820190508181036000830152613d6681613d2a565b9050919050565b6000613d78826134c8565b9150613d83836134c8565b9250828203905081811115613d9b57613d9a613b9e565b5b92915050565b600081905092915050565b50565b6000613dbc600083613da1565b9150613dc782613dac565b600082019050919050565b6000613ddd82613daf565b9150819050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613e43603983613507565b9150613e4e82613de7565b604082019050919050565b60006020820190508181036000830152613e7281613e36565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613ed5602483613507565b9150613ee082613e79565b604082019050919050565b60006020820190508181036000830152613f0481613ec8565b9050919050565b6000613f16826137cc565b9150613f21836137cc565b9250828201905060ff811115613f3a57613f39613b9e565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613f9c602683613507565b9150613fa782613f40565b604082019050919050565b60006020820190508181036000830152613fcb81613f8f565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614008602083613507565b915061401382613fd2565b602082019050919050565b6000602082019050818103600083015261403781613ffb565b9050919050565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6000614074600b83613507565b915061407f8261403e565b602082019050919050565b600060208201905081810360008301526140a381614067565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006140e0601683613507565b91506140eb826140aa565b602082019050919050565b6000602082019050818103600083015261410f816140d3565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000614172602883613507565b915061417d82614116565b604082019050919050565b600060208201905081810360008301526141a181614165565b9050919050565b60006141b3826134c8565b91506141be836134c8565b92508282019050808211156141d6576141d5613b9e565b5b92915050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614212601383613507565b915061421d826141dc565b602082019050919050565b6000602082019050818103600083015261424181614205565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e65207075726368617365207065722074776f206260208201527f6c6f636b7320616c6c6f7765642e000000000000000000000000000000000000604082015250565b60006142ca604e83613507565b91506142d582614248565b606082019050919050565b600060208201905081810360008301526142f9816142bd565b9050919050565b7f496e73756666696369656e742042616c616e6365000000000000000000000000600082015250565b6000614336601483613507565b915061434182614300565b602082019050919050565b6000602082019050818103600083015261436581614329565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506143d9816135e5565b92915050565b6000602082840312156143f5576143f46135ae565b5b6000614403848285016143ca565b91505092915050565b6000819050919050565b600061443161442c6144278461440c565b6138e6565b6134c8565b9050919050565b61444181614416565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61447c816135d3565b82525050565b600061448e8383614473565b60208301905092915050565b6000602082019050919050565b60006144b282614447565b6144bc8185614452565b93506144c783614463565b8060005b838110156144f85781516144df8882614482565b97506144ea8361449a565b9250506001810190506144cb565b5085935050505092915050565b600060a08201905061451a60008301886134d2565b6145276020830187614438565b818103604083015261453981866144a7565b905061454860608301856138bc565b61455560808301846134d2565b9695505050505050565b600061456a826137e8565b9150614575836137e8565b925082820390506fffffffffffffffffffffffffffffffff81111561459d5761459c613b9e565b5b92915050565b60006040820190506145b860008301856134d2565b6145c560208301846134d2565b939250505056fea264697066735822122014e32cc7d61edde285902aa1ee3a256ce5c1cf8f3f6ac6f0debac81107897e4064736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102765760003560e01c8063658d4b7f1161014f578063b0f7ec38116100c1578063d7c010321161007a578063d7c0103214610993578063d85a2828146109bc578063dd62ed3e146109d3578063df20fd4914610a10578063f2fde38b14610a39578063f40acc3d14610a625761027d565b8063b0f7ec3814610883578063b62496f5146108ae578063bbc0c742146108eb578063c18bc19514610916578063c38a31de1461093f578063c876d0b9146109685761027d565b80638a8c523c116101135780638a8c523c146107855780638da5cb5b1461079c57806395d89b41146107c75780639a7a23d6146107f2578063a82ed9ec1461081b578063a9059cbb146108465761027d565b8063658d4b7f146106b25780636c0a24eb146106db57806370a0823114610706578063715018a6146107435780637d1db4a51461075a5761027d565b80632b14ca56116101e8578063364333f4116101ac578063364333f41461059f578063404e5129146105b657806341aea9de146105df57806345ce5365146106085780634706240214610645578063571ac8b0146106755761027d565b80632b14ca561461049f5780632d838119146104cf578063313ce5671461050c57806334b86560146105375780633582ad23146105745761027d565b8063178002871161023a578063178002871461038f57806318160ddd146103ba578063203e727e146103e557806323b872dd1461040e57806324c390231461044b5780632b112e49146104745761027d565b80630445b6671461028257806306fdde03146102ad578063095ea7b3146102d85780630cfc15f91461031557806316c02129146103525761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610a8d565b6040516102a491906134e1565b60405180910390f35b3480156102b957600080fd5b506102c2610a93565b6040516102cf919061358c565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa919061363d565b610b25565b60405161030c9190613698565b60405180910390f35b34801561032157600080fd5b5061033c600480360381019061033791906136b3565b610c17565b60405161034991906134e1565b60405180910390f35b34801561035e57600080fd5b50610379600480360381019061037491906136b3565b610c2f565b6040516103869190613698565b60405180910390f35b34801561039b57600080fd5b506103a4610c4f565b6040516103b191906134e1565b60405180910390f35b3480156103c657600080fd5b506103cf610c55565b6040516103dc91906134e1565b60405180910390f35b3480156103f157600080fd5b5061040c600480360381019061040791906136e0565b610c5f565b005b34801561041a57600080fd5b506104356004803603810190610430919061370d565b610cf5565b6040516104429190613698565b60405180910390f35b34801561045757600080fd5b50610472600480360381019061046d919061378c565b610f76565b005b34801561048057600080fd5b50610489610fd9565b60405161049691906134e1565b60405180910390f35b3480156104ab57600080fd5b506104b461100c565b6040516104c696959493929190613813565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f191906136e0565b611093565b60405161050391906134e1565b60405180910390f35b34801561051857600080fd5b506105216110b7565b60405161052e9190613874565b60405180910390f35b34801561054357600080fd5b5061055e6004803603810190610559919061388f565b6110c0565b60405161056b9190613698565b60405180910390f35b34801561058057600080fd5b506105896110ed565b6040516105969190613698565b60405180910390f35b3480156105ab57600080fd5b506105b4611100565b005b3480156105c257600080fd5b506105dd60048036038101906105d8919061378c565b611181565b005b3480156105eb57600080fd5b506106066004803603810190610601919061388f565b6111e4565b005b34801561061457600080fd5b5061062f600480360381019061062a91906136e0565b611209565b60405161063c91906134e1565b60405180910390f35b34801561065157600080fd5b5061065a61122d565b60405161066c96959493929190613813565b60405180910390f35b34801561068157600080fd5b5061069c600480360381019061069791906136b3565b6112b4565b6040516106a99190613698565b60405180910390f35b3480156106be57600080fd5b506106d960048036038101906106d4919061378c565b6112e7565b005b3480156106e757600080fd5b506106f061134a565b6040516106fd91906134e1565b60405180910390f35b34801561071257600080fd5b5061072d600480360381019061072891906136b3565b611350565b60405161073a91906134e1565b60405180910390f35b34801561074f57600080fd5b506107586113a1565b005b34801561076657600080fd5b5061076f6113b5565b60405161077c91906134e1565b60405180910390f35b34801561079157600080fd5b5061079a6113bb565b005b3480156107a857600080fd5b506107b16113fb565b6040516107be91906138cb565b60405180910390f35b3480156107d357600080fd5b506107dc611424565b6040516107e9919061358c565b60405180910390f35b3480156107fe57600080fd5b506108196004803603810190610814919061378c565b6114b6565b005b34801561082757600080fd5b5061083061155a565b60405161083d9190613945565b60405180910390f35b34801561085257600080fd5b5061086d6004803603810190610868919061363d565b611572565b60405161087a9190613698565b60405180910390f35b34801561088f57600080fd5b50610898611587565b6040516108a59190613698565b60405180910390f35b3480156108ba57600080fd5b506108d560048036038101906108d091906136b3565b61159a565b6040516108e29190613698565b60405180910390f35b3480156108f757600080fd5b506109006115ba565b60405161090d9190613698565b60405180910390f35b34801561092257600080fd5b5061093d600480360381019061093891906136e0565b6115cd565b005b34801561094b57600080fd5b506109666004803603810190610961919061398c565b611663565b005b34801561097457600080fd5b5061097d61194f565b60405161098a9190613698565b60405180910390f35b34801561099f57600080fd5b506109ba60048036038101906109b59190613a6b565b611962565b005b3480156109c857600080fd5b506109d1611a32565b005b3480156109df57600080fd5b506109fa60048036038101906109f59190613abe565b611a50565b604051610a0791906134e1565b60405180910390f35b348015610a1c57600080fd5b50610a376004803603810190610a329190613afe565b611ad7565b005b348015610a4557600080fd5b50610a606004803603810190610a5b91906136b3565b611b04565b005b348015610a6e57600080fd5b50610a77611b87565b604051610a8491906138cb565b60405180910390f35b60125481565b606060028054610aa290613b6d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ace90613b6d565b8015610b1b5780601f10610af057610100808354040283529160200191610b1b565b820191906000526020600020905b815481529060010190602001808311610afe57829003601f168201915b5050505050905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c0591906134e1565b60405180910390a36001905092915050565b60076020528060005260406000206000915090505481565b60146020528060005260406000206000915054906101000a900460ff1681565b60085481565b6000600454905090565b610c67611bab565b670de0b6b3a76400006103e86001600454610c829190613bcd565b610c8c9190613c3e565b610c969190613c3e565b811015610cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccf90613ce1565b60405180910390fd5b670de0b6b3a764000081610cec9190613bcd565b60058190555050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f625781600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5090613d4d565b60405180910390fd5b81600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ee19190613d6d565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610f6d848484611c29565b90509392505050565b610f7e611bab565b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000610fe56000611350565b610ff061dead611350565b600454610ffd9190613d6d565b6110079190613d6d565b905090565b600e8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a900460ff16908060000160039054906101000a900460ff16908060000160049054906101000a900460ff16908060000160059054906101000a90046fffffffffffffffffffffffffffffffff16905086565b6000600854600454836110a69190613bcd565b6110b09190613c3e565b9050919050565b60006012905090565b60006110ca611bab565b81600a60016101000a81548160ff02191690831515021790555060019050919050565b600a60029054906101000a900460ff1681565b611108611bab565b60003373ffffffffffffffffffffffffffffffffffffffff164760405161112e90613dd2565b60006040518083038185875af1925050503d806000811461116b576040519150601f19603f3d011682016040523d82523d6000602084013e611170565b606091505b505090508061117e57600080fd5b50565b611189611bab565b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6111ec611bab565b80600a60026101000a81548160ff02191690831515021790555050565b60006004546008548361121c9190613bcd565b6112269190613c3e565b9050919050565b600d8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a900460ff16908060000160039054906101000a900460ff16908060000160049054906101000a900460ff16908060000160059054906101000a90046fffffffffffffffffffffffffffffffff16905086565b60006112e0827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b25565b9050919050565b6112ef611bab565b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60065481565b600061139a600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611093565b9050919050565b6113a9611bab565b6113b360006125ac565b565b60055481565b6113c3611bab565b6001600a60006101000a81548160ff0219169083151502179055506001601160146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606003805461143390613b6d565b80601f016020809104026020016040519081016040528092919081815260200182805461145f90613b6d565b80156114ac5780601f10611481576101008083540402835291602001916114ac565b820191906000526020600020905b81548152906001019060200180831161148f57829003601f168201915b5050505050905090565b6114be611bab565b7f000000000000000000000000a11c848ced9dba584bba1a1cfcb9401c7c68492073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361154c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154390613e59565b60405180910390fd5b6115568282612670565b5050565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b600061157f338484611c29565b905092915050565b601160149054906101000a900460ff1681565b60016020528060005260406000206000915054906101000a900460ff1681565b600a60009054906101000a900460ff1681565b6115d5611bab565b670de0b6b3a76400006103e860056004546115f09190613bcd565b6115fa9190613c3e565b6116049190613c3e565b811015611646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163d90613eeb565b60405180910390fd5b670de0b6b3a76400008161165a9190613bcd565b60068190555050565b61166b611bab565b600086888a8c8e61167c9190613f0b565b6116869190613f0b565b6116909190613f0b565b61169a9190613f0b565b60ff1690506000828486888a6116b09190613f0b565b6116ba9190613f0b565b6116c49190613f0b565b6116ce9190613f0b565b60ff1690506040518060c001604052808d60ff1681526020018c60ff1681526020018b60ff1681526020018a60ff1681526020018960ff168152602001836fffffffffffffffffffffffffffffffff16815250600d60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050506040518060c001604052808860ff1681526020018760ff1681526020018660ff1681526020018560ff1681526020018460ff168152602001826fffffffffffffffffffffffffffffffff16815250600e60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905050505050505050505050505050565b600a60019054906101000a900460ff1681565b61196a611bab565b82600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b611a3a611bab565b611a4d3033611a4830611350565b611c29565b50565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611adf611bab565b81601160146101000a81548160ff021916908315150217905550806012819055505050565b611b0c611bab565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7290613fb2565b60405180910390fd5b611b84816125ac565b50565b7f000000000000000000000000a11c848ced9dba584bba1a1cfcb9401c7c68492081565b611bb3612711565b73ffffffffffffffffffffffffffffffffffffffff16611bd16113fb565b73ffffffffffffffffffffffffffffffffffffffff1614611c27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1e9061401e565b60405180910390fd5b565b6000601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ccf5750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d059061408a565b60405180910390fd5b601360009054906101000a900460ff1615611d3557611d2e848484612719565b90506125a5565b600a60029054906101000a900460ff16156122f057600a60009054906101000a900460ff16611e3f57600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dff5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e35906140f6565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ee25750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f8957600554821115611f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2390614188565b60405180910390fd5b600654611f3884611350565b83611f4391906141a8565b1115611f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7b90614228565b60405180910390fd5b612127565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561202c5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561207b57600554821115612076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206d90614188565b60405180910390fd5b612126565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612125576006546120d884611350565b836120e391906141a8565b1115612124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211b90614228565b60405180910390fd5b5b5b5b600a60019054906101000a900460ff16156122ef576121446113fb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121bf5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561221757507f000000000000000000000000a11c848ced9dba584bba1a1cfcb9401c7c68492073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156122ee57436001601560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461226991906141a8565b106122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a0906142e0565b60405180910390fd5b43601560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b6122f8612936565b15612306576123056129d4565b5b600061231183611209565b905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238c9061434c565b60405180910390fd5b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123e09190613d6d565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061242f8686612fd3565b61243957816124a1565b6124a07f000000000000000000000000a11c848ced9dba584bba1a1cfcb9401c7c68492073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614612496576000612499565b60015b8784613081565b5b905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124ee91906141a8565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61258984611093565b60405161259691906134e1565b60405180910390a36001925050505b9392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600033905090565b60008061272583611209565b905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156127a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a09061434c565b60405180910390fd5b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127f49190613d6d565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461288291906141a8565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161292291906134e1565b60405180910390a360019150509392505050565b60007f000000000000000000000000a11c848ced9dba584bba1a1cfcb9401c7c68492073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156129a15750601360009054906101000a900460ff16155b80156129b95750601160149054906101000a900460ff165b80156129cf57506012546129cc30611350565b10155b905090565b6001601360006101000a81548160ff0219169083151502179055506000600e6040518060c00160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a900460ff1660ff1660ff1681526020016000820160039054906101000a900460ff1660ff1660ff1681526020016000820160049054906101000a900460ff1660ff1660ff1681526020016000820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506000601254905060008260a001516fffffffffffffffffffffffffffffffff16836080015160ff1683612b0e9190613bcd565b612b189190613c3e565b905060008183612b289190613d6d565b9050612b48737a250d5630b4cf539739df2c5dacb4c659f2488d82610b25565b506000821115612b6157612b5f3061dead84611c29565b505b6000600267ffffffffffffffff811115612b7e57612b7d61436c565b5b604051908082528060200260200182016040528015612bac5781602001602082028036833780820191505090505b5090503081600081518110612bc457612bc361439b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8191906143df565b81600181518110612c9557612c9461439b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d25959493929190614505565b600060405180830381600087803b158015612d3f57600080fd5b505af1158015612d53573d6000803e3d6000fd5b5050505060004790506000866080015160ff16876000015160ff168860a00151612d7d919061455f565b612d87919061455f565b6fffffffffffffffffffffffffffffffff169050600081886020015160ff1684612db19190613bcd565b612dbb9190613c3e565b9050600082896040015160ff1685612dd39190613bcd565b612ddd9190613c3e565b90506000838a6060015160ff1686612df59190613bcd565b612dff9190613c3e565b90506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612e4990613dd2565b60006040518083038185875af1925050503d8060008114612e86576040519150601f19603f3d011682016040523d82523d6000602084013e612e8b565b606091505b50509050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612ed590613dd2565b60006040518083038185875af1925050503d8060008114612f12576040519150601f19603f3d011682016040523d82523d6000602084013e612f17565b606091505b505080915050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612f6390613dd2565b60006040518083038185875af1925050503d8060008114612fa0576040519150601f19603f3d011682016040523d82523d6000602084013e612fa5565b606091505b50508091505050505050505050505050506000601360006101000a81548160ff021916908315150217905550565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156130795750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080600d6040518060c00160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a900460ff1660ff1660ff1681526020016000820160039054906101000a900460ff1660ff1660ff1681526020016000820160049054906101000a900460ff1660ff1660ff1681526020016000820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506000600e6040518060c00160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a900460ff1660ff1660ff1681526020016000820160039054906101000a900460ff1660ff1660ff1681526020016000820160049054906101000a900460ff1660ff1660ff1681526020016000820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506000600115158715151461329b5760648260a001516fffffffffffffffffffffffffffffffff168661328c9190613bcd565b6132969190613c3e565b6132ca565b60648360a001516fffffffffffffffffffffffffffffffff16866132bf9190613bcd565b6132c99190613c3e565b5b905060006001151588151514613313578260a001516fffffffffffffffffffffffffffffffff16836000015160ff16836133049190613bcd565b61330e9190613c3e565b613348565b8360a001516fffffffffffffffffffffffffffffffff16846000015160ff168361333d9190613bcd565b6133479190613c3e565b5b9050806008546133589190613d6d565b6008819055506000818361336c9190613d6d565b905060008111156134735780600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133c291906141a8565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61345d84611093565b60405161346a91906134e1565b60405180910390a35b7fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac826008546040516134a69291906145a3565b60405180910390a182876134ba9190613d6d565b955050505050509392505050565b6000819050919050565b6134db816134c8565b82525050565b60006020820190506134f660008301846134d2565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561353657808201518184015260208101905061351b565b60008484015250505050565b6000601f19601f8301169050919050565b600061355e826134fc565b6135688185613507565b9350613578818560208601613518565b61358181613542565b840191505092915050565b600060208201905081810360008301526135a68184613553565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006135de826135b3565b9050919050565b6135ee816135d3565b81146135f957600080fd5b50565b60008135905061360b816135e5565b92915050565b61361a816134c8565b811461362557600080fd5b50565b60008135905061363781613611565b92915050565b60008060408385031215613654576136536135ae565b5b6000613662858286016135fc565b925050602061367385828601613628565b9150509250929050565b60008115159050919050565b6136928161367d565b82525050565b60006020820190506136ad6000830184613689565b92915050565b6000602082840312156136c9576136c86135ae565b5b60006136d7848285016135fc565b91505092915050565b6000602082840312156136f6576136f56135ae565b5b600061370484828501613628565b91505092915050565b600080600060608486031215613726576137256135ae565b5b6000613734868287016135fc565b9350506020613745868287016135fc565b925050604061375686828701613628565b9150509250925092565b6137698161367d565b811461377457600080fd5b50565b60008135905061378681613760565b92915050565b600080604083850312156137a3576137a26135ae565b5b60006137b1858286016135fc565b92505060206137c285828601613777565b9150509250929050565b600060ff82169050919050565b6137e2816137cc565b82525050565b60006fffffffffffffffffffffffffffffffff82169050919050565b61380d816137e8565b82525050565b600060c08201905061382860008301896137d9565b61383560208301886137d9565b61384260408301876137d9565b61384f60608301866137d9565b61385c60808301856137d9565b61386960a0830184613804565b979650505050505050565b600060208201905061388960008301846137d9565b92915050565b6000602082840312156138a5576138a46135ae565b5b60006138b384828501613777565b91505092915050565b6138c5816135d3565b82525050565b60006020820190506138e060008301846138bc565b92915050565b6000819050919050565b600061390b613906613901846135b3565b6138e6565b6135b3565b9050919050565b600061391d826138f0565b9050919050565b600061392f82613912565b9050919050565b61393f81613924565b82525050565b600060208201905061395a6000830184613936565b92915050565b613969816137cc565b811461397457600080fd5b50565b60008135905061398681613960565b92915050565b6000806000806000806000806000806101408b8d0312156139b0576139af6135ae565b5b60006139be8d828e01613977565b9a505060206139cf8d828e01613977565b99505060406139e08d828e01613977565b98505060606139f18d828e01613977565b9750506080613a028d828e01613977565b96505060a0613a138d828e01613977565b95505060c0613a248d828e01613977565b94505060e0613a358d828e01613977565b935050610100613a478d828e01613977565b925050610120613a598d828e01613977565b9150509295989b9194979a5092959850565b600080600060608486031215613a8457613a836135ae565b5b6000613a92868287016135fc565b9350506020613aa3868287016135fc565b9250506040613ab4868287016135fc565b9150509250925092565b60008060408385031215613ad557613ad46135ae565b5b6000613ae3858286016135fc565b9250506020613af4858286016135fc565b9150509250929050565b60008060408385031215613b1557613b146135ae565b5b6000613b2385828601613777565b9250506020613b3485828601613628565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613b8557607f821691505b602082108103613b9857613b97613b3e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613bd8826134c8565b9150613be3836134c8565b9250828202613bf1816134c8565b91508282048414831517613c0857613c07613b9e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c49826134c8565b9150613c54836134c8565b925082613c6457613c63613c0f565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000613ccb602f83613507565b9150613cd682613c6f565b604082019050919050565b60006020820190508181036000830152613cfa81613cbe565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613d37601d83613507565b9150613d4282613d01565b602082019050919050565b60006020820190508181036000830152613d6681613d2a565b9050919050565b6000613d78826134c8565b9150613d83836134c8565b9250828203905081811115613d9b57613d9a613b9e565b5b92915050565b600081905092915050565b50565b6000613dbc600083613da1565b9150613dc782613dac565b600082019050919050565b6000613ddd82613daf565b9150819050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613e43603983613507565b9150613e4e82613de7565b604082019050919050565b60006020820190508181036000830152613e7281613e36565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613ed5602483613507565b9150613ee082613e79565b604082019050919050565b60006020820190508181036000830152613f0481613ec8565b9050919050565b6000613f16826137cc565b9150613f21836137cc565b9250828201905060ff811115613f3a57613f39613b9e565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613f9c602683613507565b9150613fa782613f40565b604082019050919050565b60006020820190508181036000830152613fcb81613f8f565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614008602083613507565b915061401382613fd2565b602082019050919050565b6000602082019050818103600083015261403781613ffb565b9050919050565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6000614074600b83613507565b915061407f8261403e565b602082019050919050565b600060208201905081810360008301526140a381614067565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006140e0601683613507565b91506140eb826140aa565b602082019050919050565b6000602082019050818103600083015261410f816140d3565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000614172602883613507565b915061417d82614116565b604082019050919050565b600060208201905081810360008301526141a181614165565b9050919050565b60006141b3826134c8565b91506141be836134c8565b92508282019050808211156141d6576141d5613b9e565b5b92915050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614212601383613507565b915061421d826141dc565b602082019050919050565b6000602082019050818103600083015261424181614205565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e65207075726368617365207065722074776f206260208201527f6c6f636b7320616c6c6f7765642e000000000000000000000000000000000000604082015250565b60006142ca604e83613507565b91506142d582614248565b606082019050919050565b600060208201905081810360008301526142f9816142bd565b9050919050565b7f496e73756666696369656e742042616c616e6365000000000000000000000000600082015250565b6000614336601483613507565b915061434182614300565b602082019050919050565b6000602082019050818103600083015261436581614329565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506143d9816135e5565b92915050565b6000602082840312156143f5576143f46135ae565b5b6000614403848285016143ca565b91505092915050565b6000819050919050565b600061443161442c6144278461440c565b6138e6565b6134c8565b9050919050565b61444181614416565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61447c816135d3565b82525050565b600061448e8383614473565b60208301905092915050565b6000602082019050919050565b60006144b282614447565b6144bc8185614452565b93506144c783614463565b8060005b838110156144f85781516144df8882614482565b97506144ea8361449a565b9250506001810190506144cb565b5085935050505092915050565b600060a08201905061451a60008301886134d2565b6145276020830187614438565b818103604083015261453981866144a7565b905061454860608301856138bc565b61455560808301846134d2565b9695505050505050565b600061456a826137e8565b9150614575836137e8565b925082820390506fffffffffffffffffffffffffffffffff81111561459d5761459c613b9e565b5b92915050565b60006040820190506145b860008301856134d2565b6145c560208301846134d2565b939250505056fea264697066735822122014e32cc7d61edde285902aa1ee3a256ce5c1cf8f3f6ac6f0debac81107897e4064736f6c63430008130033

Deployed Bytecode Sourcemap

6966:15232:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8875:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11472:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10309:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8120:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8956;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8169:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11276:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13043:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10827:441;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15291:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12268:136;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8609:96;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;12111:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11386:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15745:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8379:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13587:170;;;;;;;;;;;;;:::i;:::-;;15892:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15619:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11963:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8508:94;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;10533:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15164:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7933:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11662:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2792:103;;;;;;;;;;;;;:::i;:::-;;7872:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12412:113;;;;;;;;;;;;;:::i;:::-;;2144:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11565:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12533:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7351:126;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10663:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8836:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7531:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8292:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13317:262;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14068:1088;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8332:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15422:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13765:131;;;;;;;;;;;;;:::i;:::-;;11808:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13904:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3050:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7484:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8875:56;;;;:::o;11472:85::-;11511:13;11544:5;11537:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11472:85;:::o;10309:216::-;10384:4;10436:6;10401:11;:23;10413:10;10401:23;;;;;;;;;;;;;;;:32;10425:7;10401:32;;;;;;;;;;;;;;;:41;;;;10479:7;10458:37;;10467:10;10458:37;;;10488:6;10458:37;;;;;;:::i;:::-;;;;;;;;10513:4;10506:11;;10309:216;;;;:::o;8120:42::-;;;;;;;;;;;;;;;;;:::o;8956:::-;;;;;;;;;;;;;;;;;;;;;;:::o;8169:46::-;;;;:::o;11276:102::-;11331:7;11358:12;;11351:19;;11276:102;:::o;13043:266::-;2030:13;:11;:13::i;:::-;13179:4:::1;13171;13166:1;13151:12;;:16;;;;:::i;:::-;13150:25;;;;:::i;:::-;13149:34;;;;:::i;:::-;13139:6;:44;;13117:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;13294:6;13284;:17;;;;:::i;:::-;13269:12;:32;;;;13043:266:::0;:::o;10827:441::-;10927:4;10983:17;10948:11;:19;10960:6;10948:19;;;;;;;;;;;;;;;:31;10968:10;10948:31;;;;;;;;;;;;;;;;:52;10944:257;;11060:6;11025:11;:19;11037:6;11025:19;;;;;;;;;;;;;;;:31;11045:10;11025:31;;;;;;;;;;;;;;;;:41;;11017:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;11183:6;11149:11;:19;11161:6;11149:19;;;;;;;;;;;;;;;:31;11169:10;11149:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;11115:11;:19;11127:6;11115:19;;;;;;;;;;;;;;;:31;11135:10;11115:31;;;;;;;;;;;;;;;:74;;;;10944:257;11220:40;11234:6;11242:9;11253:6;11220:13;:40::i;:::-;11213:47;;10827:441;;;;;:::o;15291:123::-;2030:13;:11;:13::i;:::-;15400:6:::1;15376:13;:21;15390:6;15376:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;15291:123:::0;;:::o;12268:136::-;12321:7;12381:15;7262:42;12381:9;:15::i;:::-;12363;7189:42;12363:9;:15::i;:::-;12348:12;;:30;;;;:::i;:::-;:48;;;;:::i;:::-;12341:55;;12268:136;:::o;8609:96::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12111:149::-;12181:7;12236:16;;12221:12;;12208:10;:25;;;;:::i;:::-;:44;;;;:::i;:::-;12201:51;;12111:149;;;:::o;11386:78::-;11429:5;11454:2;11447:9;;11386:78;:::o;15745:139::-;15812:4;2030:13;:11;:13::i;:::-;15852:2:::1;15829:20;;:25;;;;;;;;;;;;;;;;;;15872:4;15865:11;;15745:139:::0;;;:::o;8379:32::-;;;;;;;;;;;;;:::o;13587:170::-;2030:13;:11;:13::i;:::-;13647:12:::1;13672:10;13664:24;;13696:21;13664:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13646:76;;;13741:7;13733:16;;;::::0;::::1;;13635:122;13587:170::o:0;15892:135::-;2030:13;:11;:13::i;:::-;16004:15:::1;15981:10;:20;15992:8;15981:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;15892:135:::0;;:::o;15619:91::-;2030:13;:11;:13::i;:::-;15700:2:::1;15684:13;;:18;;;;;;;;;;;;;;;;;;15619:91:::0;:::o;11963:140::-;12028:7;12083:12;;12064:16;;12055:6;:25;;;;:::i;:::-;:40;;;;:::i;:::-;12048:47;;11963:140;;;:::o;8508:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10533:122::-;10588:4;10612:35;10620:7;10629:17;10612:7;:35::i;:::-;10605:42;;10533:122;;;:::o;15164:119::-;2030:13;:11;:13::i;:::-;15269:6:::1;15247:11;:19;15259:6;15247:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;15164:119:::0;;:::o;7933:58::-;;;;:::o;11662:138::-;11728:7;11755:37;11775:7;:16;11783:7;11775:16;;;;;;;;;;;;;;;;11755:19;:37::i;:::-;11748:44;;11662:138;;;:::o;2792:103::-;2030:13;:11;:13::i;:::-;2857:30:::1;2884:1;2857:18;:30::i;:::-;2792:103::o:0;7872:54::-;;;;:::o;12412:113::-;2030:13;:11;:13::i;:::-;12483:4:::1;12467:13;;:20;;;;;;;;;;;;;;;;;;12513:4;12498:12;;:19;;;;;;;;;;;;;;;;;;12412:113::o:0;2144:87::-;2190:7;2217:6;;;;;;;;;;;2210:13;;2144:87;:::o;11565:89::-;11606:13;11639:7;11632:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11565:89;:::o;12533:306::-;2030:13;:11;:13::i;:::-;12677:15:::1;12669:23;;:4;:23;;::::0;12647:130:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12790:41;12819:4;12825:5;12790:28;:41::i;:::-;12533:306:::0;;:::o;7351:126::-;7434:42;7351:126;:::o;10663:156::-;10743:4;10767:44;10781:10;10793:9;10804:6;10767:13;:44::i;:::-;10760:51;;10663:156;;;;:::o;8836:32::-;;;;;;;;;;;;;:::o;7531:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;8292:33::-;;;;;;;;;;;;;:::o;13317:262::-;2030:13;:11;:13::i;:::-;13456:4:::1;13448;13443:1;13428:12;;:16;;;;:::i;:::-;13427:25;;;;:::i;:::-;13426:34;;;;:::i;:::-;13416:6;:44;;13394:130;;;;;;;;;;;;:::i;:::-;;;;;;;;;13564:6;13554;:17;;;;:::i;:::-;13535:16;:36;;;;13317:262:::0;:::o;14068:1088::-;2030:13;:11;:13::i;:::-;14424:21:::1;14512:10;14496:13;14485:8;14467:15;14448:16;:34;;;;:::i;:::-;:45;;;;:::i;:::-;:61;;;;:::i;:::-;:74;;;;:::i;:::-;14424:98;;;;14533:22;14626:11;14609:14;14597:9;14578:16;14558:17;:36;;;;:::i;:::-;:48;;;;:::i;:::-;:65;;;;:::i;:::-;:79;;;;:::i;:::-;14533:104;;;;14659:230;;;;;;;;14690:16;14659:230;;;;;;14732:15;14659:230;;;;;;14766:8;14659:230;;;;;;14798:13;14659:230;;;;;;14832:10;14659:230;;;;;;14864:13;14659:230;;;;::::0;14650:6:::1;:239;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14912:236;;;;;;;;14943:17;14912:236;;;;;;14986:16;14912:236;;;;;;15021:9;14912:236;;;;;;15054:14;14912:236;;;;;;15089:11;14912:236;;;;;;15122:14;14912:236;;;;::::0;14902:7:::1;:246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14413:743;;14068:1088:::0;;;;;;;;;;:::o;8332:40::-;;;;;;;;;;;;;:::o;15422:189::-;2030:13;:11;:13::i;:::-;15537:2:::1;15514:20;;:25;;;;;;;;;;;;;;;;;;15566:3;15550:13;;:19;;;;;;;;;;;;;;;;;;15601:2;15580:18;;:23;;;;;;;;;;;;;;;;;;15422:189:::0;;;:::o;13765:131::-;2030:13;:11;:13::i;:::-;13822:66:::1;13844:4;13851:10;13863:24;13881:4;13863:9;:24::i;:::-;13822:13;:66::i;:::-;;13765:131::o:0;11808:147::-;11892:7;11919:11;:19;11931:6;11919:19;;;;;;;;;;;;;;;:28;11939:7;11919:28;;;;;;;;;;;;;;;;11912:35;;11808:147;;;;:::o;13904:156::-;2030:13;:11;:13::i;:::-;14010:8:::1;13995:12;;:23;;;;;;;;;;;;;;;;;;14045:7;14029:13;:23;;;;13904:156:::0;;:::o;3050:201::-;2030:13;:11;:13::i;:::-;3159:1:::1;3139:22;;:8;:22;;::::0;3131:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3215:28;3234:8;3215:18;:28::i;:::-;3050:201:::0;:::o;7484:40::-;;;:::o;2309:132::-;2384:12;:10;:12::i;:::-;2373:23;;:7;:5;:7::i;:::-;:23;;;2365:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2309:132::o;16035:2741::-;16127:4;16153:10;:21;16164:9;16153:21;;;;;;;;;;;;;;;;;;;;;;;;;16152:22;:45;;;;;16179:10;:18;16190:6;16179:18;;;;;;;;;;;;;;;;;;;;;;;;;16178:19;16152:45;16144:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;16230:6;;;;;;;;;;;16226:87;;;16260:41;16275:6;16283:9;16294:6;16260:14;:41::i;:::-;16253:48;;;;16226:87;16329:13;;;;;;;;;;;16325:1772;;;16364:13;;;;;;;;;;;16359:210;;16442:11;:19;16454:6;16442:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;16465:11;:22;16477:9;16465:22;;;;;;;;;;;;;;;;;;;;;;;;;16442:45;16412:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;16359:210;16613:25;:33;16639:6;16613:33;;;;;;;;;;;;;;;;;;;;;;;;;:62;;;;;16651:13;:24;16665:9;16651:24;;;;;;;;;;;;;;;;;;;;;;;;;16650:25;16613:62;16609:707;;;16728:12;;16718:6;:22;;16710:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;16845:16;;16821:20;16831:9;16821;:20::i;:::-;16812:6;:29;;;;:::i;:::-;:49;;16804:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;16609:707;;;16949:25;:36;16975:9;16949:36;;;;;;;;;;;;;;;;;;;;;;;;;:62;;;;;16990:13;:21;17004:6;16990:21;;;;;;;;;;;;;;;;;;;;;;;;;16989:22;16949:62;16945:371;;;17063:12;;17053:6;:22;;17045:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;16945:371;;;17160:13;:24;17174:9;17160:24;;;;;;;;;;;;;;;;;;;;;;;;;17155:161;;17260:16;;17236:20;17246:9;17236;:20::i;:::-;17227:6;:29;;;;:::i;:::-;:49;;17219:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;17155:161;16945:371;16609:707;17476:20;;;;;;;;;;;17472:614;;;17556:7;:5;:7::i;:::-;17543:20;;:9;:20;;;;:84;;;;;7434:42;17588:39;;:9;:39;;;;17543:84;:137;;;;;17665:15;17652:28;;:9;:28;;;;17543:137;17517:554;;;17832:12;17799:1;17757:28;:39;17786:9;17757:39;;;;;;;;;;;;;;;;:43;;;;:::i;:::-;:87;17723:251;;;;;;;;;;;;:::i;:::-;;;;;;;;;18039:12;17997:28;:39;18026:9;17997:39;;;;;;;;;;;;;;;:54;;;;17517:554;17472:614;16325:1772;18113:17;:15;:17::i;:::-;18109:61;;;18147:11;:9;:11::i;:::-;18109:61;18182:24;18209:26;18228:6;18209:18;:26::i;:::-;18182:53;;18273:16;18254:7;:15;18262:6;18254:15;;;;;;;;;;;;;;;;:35;;18246:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18361:16;18343:7;:15;18351:6;18343:15;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;18325:7;:15;18333:6;18325:15;;;;;;;;;;;;;;;:52;;;;18390:26;18419:33;18434:6;18442:9;18419:14;:33::i;:::-;:170;;18573:16;18419:170;;;18468:89;18500:15;18490:25;;:6;:25;;;:40;;18525:5;18490:40;;;18518:4;18490:40;18532:6;18540:16;18468:21;:89::i;:::-;18419:170;18390:199;;18642:18;18621:7;:18;18629:9;18621:18;;;;;;;;;;;;;;;;:39;;;;:::i;:::-;18600:7;:18;18608:9;18600:18;;;;;;;;;;;;;;;:60;;;;18695:9;18678:68;;18687:6;18678:68;;;18706:39;18726:18;18706:19;:39::i;:::-;18678:68;;;;;;:::i;:::-;;;;;;;;18764:4;18757:11;;;;16035:2741;;;;;;:::o;3411:191::-;3485:16;3504:6;;;;;;;;;;;3485:25;;3530:8;3521:6;;:17;;;;;;;;;;;;;;;;;;3585:8;3554:40;;3575:8;3554:40;;;;;;;;;;;;3474:128;3411:191;:::o;12847:188::-;12964:5;12930:25;:31;12956:4;12930:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;13021:5;12987:40;;13015:4;12987:40;;;;;;;;;;;;12847:188;;:::o;754:98::-;807:7;834:10;827:17;;754:98;:::o;18784:455::-;18877:4;18894:24;18921:26;18940:6;18921:18;:26::i;:::-;18894:53;;18985:16;18966:7;:15;18974:6;18966:15;;;;;;;;;;;;;;;;:35;;18958:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19073:16;19055:7;:15;19063:6;19055:15;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;19037:7;:15;19045:6;19037:15;;;;;;;;;;;;;;;:52;;;;19142:16;19121:7;:18;19129:9;19121:18;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;19100:7;:18;19108:9;19100:18;;;;;;;;;;;;;;;:58;;;;19191:9;19174:35;;19183:6;19174:35;;;19202:6;19174:35;;;;;;:::i;:::-;;;;;;;;19227:4;19220:11;;;18784:455;;;;;:::o;20370:183::-;20420:4;20458:15;20444:29;;:10;:29;;;;:40;;;;;20478:6;;;;;;;;;;;20477:7;20444:40;:56;;;;;20488:12;;;;;;;;;;;20444:56;:101;;;;;20532:13;;20504:24;20522:4;20504:9;:24::i;:::-;:41;;20444:101;20437:108;;20370:183;:::o;20561:1465::-;9118:4;9109:6;;:13;;;;;;;;;;;;;;;;;;20611:20:::1;20634:7;20611:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;20654:23;20680:13;;20654:39;;20704:20;20762:9;:15;;;20727:50;;20745:9;:14;;;20727:32;;:15;:32;;;;:::i;:::-;:50;;;;:::i;:::-;20704:73;;20788:20;20829:12;20811:15;:30;;;;:::i;:::-;20788:53;;20852:49;7434:42;20888:12;20852:7;:49::i;:::-;;20932:1;20917:12;:16;20914:126;;;20980:48;21002:4;7189:42;21015:12;20980:13;:48::i;:::-;;20914:126;21069:21;21107:1;21093:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21069:40;;21138:4;21120;21125:1;21120:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;7434:42;21164:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21154:4;21159:1;21154:7;;;;;;;;:::i;:::-;;;;;;;:34;;;;;;;;;::::0;::::1;7434:42;21201:68;;;21284:12;21298:1;21301:4;21315;21322:15;21201:147;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21361:17;21381:21;21361:41;;21415:20;21479:9;:14;;;21438:55;;21456:9;:20;;;21438:38;;:9;:15;;;:38;;;;:::i;:::-;:55;;;;:::i;:::-;21415:78;;;;21504:26;21567:12;21545:9;:19;;;21533:31;;:9;:31;;;;:::i;:::-;:46;;;;:::i;:::-;21504:75;;21590:19;21639:12;21624:9;:12;;;21612:24;;:9;:24;;;;:::i;:::-;:39;;;;:::i;:::-;21590:61;;21662:24;21721:12;21701:9;:17;;;21689:29;;:9;:29;;;;:::i;:::-;:44;;;;:::i;:::-;21662:71;;21764:15;21792:13;;;;;;;;;;;21784:27;;21819:11;21784:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21763:72;;;21870:18;;;;;;;;;;;21862:32;;21902:16;21862:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21846:77;;;;;21958:20;;;;;;;;;;;21950:34;;21992:21;21950:68;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21934:84;;;;;20600:1426;;;;;;;;;;;9154:5:::0;9145:6;;:14;;;;;;;;;;;;;;;;;;20561:1465::o;22034:161::-;22116:4;22141:11;:19;22153:6;22141:19;;;;;;;;;;;;;;;;;;;;;;;;;22140:20;:47;;;;;22165:11;:22;22177:9;22165:22;;;;;;;;;;;;;;;;;;;;;;;;;22164:23;22140:47;22133:54;;22034:161;;;;:::o;19247:1115::-;19351:7;19371:19;19393:6;19371:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19410:20;19433:7;19410:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19453:27;19506:4;19496:14;;:6;:14;;;:99;;19592:3;19574:9;:15;;;19555:34;;:16;:34;;;;:::i;:::-;:40;;;;:::i;:::-;19496:99;;;19549:3;19532:8;:14;;;19513:33;;:16;:33;;;;:::i;:::-;:39;;;;:::i;:::-;19496:99;19453:142;;19628:27;19668:4;19658:14;;:6;:14;;;:164;;19807:9;:15;;;19762:60;;19784:9;:20;;;19762:42;;:19;:42;;;;:::i;:::-;:60;;;;:::i;:::-;19658:164;;;19732:8;:14;;;19688:58;;19710:8;:19;;;19688:41;;:19;:41;;;;:::i;:::-;:58;;;;:::i;:::-;19658:164;19628:194;;19873:19;19854:16;;:38;;;;:::i;:::-;19835:16;:57;;;;19927:29;19981:19;19959;:41;;;;:::i;:::-;19927:73;;20039:1;20015:21;:25;20011:226;;;20107:21;20082:7;:22;20098:4;20082:22;;;;;;;;;;;;;;;;:46;;;;:::i;:::-;20057:7;:22;20073:4;20057:22;;;;;;;;;;;;;;;:71;;;;20175:4;20150:75;;20159:6;20150:75;;;20182:42;20202:21;20182:19;:42::i;:::-;20150:75;;;;;;:::i;:::-;;;;;;;;20011:226;20252:46;20260:19;20281:16;;20252:46;;;;;;;:::i;:::-;;;;;;;;20335:19;20316:16;:38;;;;:::i;:::-;20309:45;;;;;;;19247:1115;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:::-;4192:6;4241:2;4229:9;4220:7;4216:23;4212:32;4209:119;;;4247:79;;:::i;:::-;4209:119;4367:1;4392:53;4437:7;4428:6;4417:9;4413:22;4392:53;:::i;:::-;4382:63;;4338:117;4133:329;;;;:::o;4468:619::-;4545:6;4553;4561;4610:2;4598:9;4589:7;4585:23;4581:32;4578:119;;;4616:79;;:::i;:::-;4578:119;4736:1;4761:53;4806:7;4797:6;4786:9;4782:22;4761:53;:::i;:::-;4751:63;;4707:117;4863:2;4889:53;4934:7;4925:6;4914:9;4910:22;4889:53;:::i;:::-;4879:63;;4834:118;4991:2;5017:53;5062:7;5053:6;5042:9;5038:22;5017:53;:::i;:::-;5007:63;;4962:118;4468:619;;;;;:::o;5093:116::-;5163:21;5178:5;5163:21;:::i;:::-;5156:5;5153:32;5143:60;;5199:1;5196;5189:12;5143:60;5093:116;:::o;5215:133::-;5258:5;5296:6;5283:20;5274:29;;5312:30;5336:5;5312:30;:::i;:::-;5215:133;;;;:::o;5354:468::-;5419:6;5427;5476:2;5464:9;5455:7;5451:23;5447:32;5444:119;;;5482:79;;:::i;:::-;5444:119;5602:1;5627:53;5672:7;5663:6;5652:9;5648:22;5627:53;:::i;:::-;5617:63;;5573:117;5729:2;5755:50;5797:7;5788:6;5777:9;5773:22;5755:50;:::i;:::-;5745:60;;5700:115;5354:468;;;;;:::o;5828:86::-;5863:7;5903:4;5896:5;5892:16;5881:27;;5828:86;;;:::o;5920:112::-;6003:22;6019:5;6003:22;:::i;:::-;5998:3;5991:35;5920:112;;:::o;6038:118::-;6075:7;6115:34;6108:5;6104:46;6093:57;;6038:118;;;:::o;6162:::-;6249:24;6267:5;6249:24;:::i;:::-;6244:3;6237:37;6162:118;;:::o;6286:735::-;6499:4;6537:3;6526:9;6522:19;6514:27;;6551:67;6615:1;6604:9;6600:17;6591:6;6551:67;:::i;:::-;6628:68;6692:2;6681:9;6677:18;6668:6;6628:68;:::i;:::-;6706;6770:2;6759:9;6755:18;6746:6;6706:68;:::i;:::-;6784;6848:2;6837:9;6833:18;6824:6;6784:68;:::i;:::-;6862:69;6926:3;6915:9;6911:19;6902:6;6862:69;:::i;:::-;6941:73;7009:3;6998:9;6994:19;6985:6;6941:73;:::i;:::-;6286:735;;;;;;;;;:::o;7027:214::-;7116:4;7154:2;7143:9;7139:18;7131:26;;7167:67;7231:1;7220:9;7216:17;7207:6;7167:67;:::i;:::-;7027:214;;;;:::o;7247:323::-;7303:6;7352:2;7340:9;7331:7;7327:23;7323:32;7320:119;;;7358:79;;:::i;:::-;7320:119;7478:1;7503:50;7545:7;7536:6;7525:9;7521:22;7503:50;:::i;:::-;7493:60;;7449:114;7247:323;;;;:::o;7576:118::-;7663:24;7681:5;7663:24;:::i;:::-;7658:3;7651:37;7576:118;;:::o;7700:222::-;7793:4;7831:2;7820:9;7816:18;7808:26;;7844:71;7912:1;7901:9;7897:17;7888:6;7844:71;:::i;:::-;7700:222;;;;:::o;7928:60::-;7956:3;7977:5;7970:12;;7928:60;;;:::o;7994:142::-;8044:9;8077:53;8095:34;8104:24;8122:5;8104:24;:::i;:::-;8095:34;:::i;:::-;8077:53;:::i;:::-;8064:66;;7994:142;;;:::o;8142:126::-;8192:9;8225:37;8256:5;8225:37;:::i;:::-;8212:50;;8142:126;;;:::o;8274:152::-;8350:9;8383:37;8414:5;8383:37;:::i;:::-;8370:50;;8274:152;;;:::o;8432:183::-;8545:63;8602:5;8545:63;:::i;:::-;8540:3;8533:76;8432:183;;:::o;8621:274::-;8740:4;8778:2;8767:9;8763:18;8755:26;;8791:97;8885:1;8874:9;8870:17;8861:6;8791:97;:::i;:::-;8621:274;;;;:::o;8901:118::-;8972:22;8988:5;8972:22;:::i;:::-;8965:5;8962:33;8952:61;;9009:1;9006;8999:12;8952:61;8901:118;:::o;9025:135::-;9069:5;9107:6;9094:20;9085:29;;9123:31;9148:5;9123:31;:::i;:::-;9025:135;;;;:::o;9166:1601::-;9286:6;9294;9302;9310;9318;9326;9334;9342;9350;9358;9407:3;9395:9;9386:7;9382:23;9378:33;9375:120;;;9414:79;;:::i;:::-;9375:120;9534:1;9559:51;9602:7;9593:6;9582:9;9578:22;9559:51;:::i;:::-;9549:61;;9505:115;9659:2;9685:51;9728:7;9719:6;9708:9;9704:22;9685:51;:::i;:::-;9675:61;;9630:116;9785:2;9811:51;9854:7;9845:6;9834:9;9830:22;9811:51;:::i;:::-;9801:61;;9756:116;9911:2;9937:51;9980:7;9971:6;9960:9;9956:22;9937:51;:::i;:::-;9927:61;;9882:116;10037:3;10064:51;10107:7;10098:6;10087:9;10083:22;10064:51;:::i;:::-;10054:61;;10008:117;10164:3;10191:51;10234:7;10225:6;10214:9;10210:22;10191:51;:::i;:::-;10181:61;;10135:117;10291:3;10318:51;10361:7;10352:6;10341:9;10337:22;10318:51;:::i;:::-;10308:61;;10262:117;10418:3;10445:51;10488:7;10479:6;10468:9;10464:22;10445:51;:::i;:::-;10435:61;;10389:117;10545:3;10572:51;10615:7;10606:6;10595:9;10591:22;10572:51;:::i;:::-;10562:61;;10516:117;10672:3;10699:51;10742:7;10733:6;10722:9;10718:22;10699:51;:::i;:::-;10689:61;;10643:117;9166:1601;;;;;;;;;;;;;:::o;10773:619::-;10850:6;10858;10866;10915:2;10903:9;10894:7;10890:23;10886:32;10883:119;;;10921:79;;:::i;:::-;10883:119;11041:1;11066:53;11111:7;11102:6;11091:9;11087:22;11066:53;:::i;:::-;11056:63;;11012:117;11168:2;11194:53;11239:7;11230:6;11219:9;11215:22;11194:53;:::i;:::-;11184:63;;11139:118;11296:2;11322:53;11367:7;11358:6;11347:9;11343:22;11322:53;:::i;:::-;11312:63;;11267:118;10773:619;;;;;:::o;11398:474::-;11466:6;11474;11523:2;11511:9;11502:7;11498:23;11494:32;11491:119;;;11529:79;;:::i;:::-;11491:119;11649:1;11674:53;11719:7;11710:6;11699:9;11695:22;11674:53;:::i;:::-;11664:63;;11620:117;11776:2;11802:53;11847:7;11838:6;11827:9;11823:22;11802:53;:::i;:::-;11792:63;;11747:118;11398:474;;;;;:::o;11878:468::-;11943:6;11951;12000:2;11988:9;11979:7;11975:23;11971:32;11968:119;;;12006:79;;:::i;:::-;11968:119;12126:1;12151:50;12193:7;12184:6;12173:9;12169:22;12151:50;:::i;:::-;12141:60;;12097:114;12250:2;12276:53;12321:7;12312:6;12301:9;12297:22;12276:53;:::i;:::-;12266:63;;12221:118;11878:468;;;;;:::o;12352:180::-;12400:77;12397:1;12390:88;12497:4;12494:1;12487:15;12521:4;12518:1;12511:15;12538:320;12582:6;12619:1;12613:4;12609:12;12599:22;;12666:1;12660:4;12656:12;12687:18;12677:81;;12743:4;12735:6;12731:17;12721:27;;12677:81;12805:2;12797:6;12794:14;12774:18;12771:38;12768:84;;12824:18;;:::i;:::-;12768:84;12589:269;12538:320;;;:::o;12864:180::-;12912:77;12909:1;12902:88;13009:4;13006:1;12999:15;13033:4;13030:1;13023:15;13050:410;13090:7;13113:20;13131:1;13113:20;:::i;:::-;13108:25;;13147:20;13165:1;13147:20;:::i;:::-;13142:25;;13202:1;13199;13195:9;13224:30;13242:11;13224:30;:::i;:::-;13213:41;;13403:1;13394:7;13390:15;13387:1;13384:22;13364:1;13357:9;13337:83;13314:139;;13433:18;;:::i;:::-;13314:139;13098:362;13050:410;;;;:::o;13466:180::-;13514:77;13511:1;13504:88;13611:4;13608:1;13601:15;13635:4;13632:1;13625:15;13652:185;13692:1;13709:20;13727:1;13709:20;:::i;:::-;13704:25;;13743:20;13761:1;13743:20;:::i;:::-;13738:25;;13782:1;13772:35;;13787:18;;:::i;:::-;13772:35;13829:1;13826;13822:9;13817:14;;13652:185;;;;:::o;13843:234::-;13983:34;13979:1;13971:6;13967:14;13960:58;14052:17;14047:2;14039:6;14035:15;14028:42;13843:234;:::o;14083:366::-;14225:3;14246:67;14310:2;14305:3;14246:67;:::i;:::-;14239:74;;14322:93;14411:3;14322:93;:::i;:::-;14440:2;14435:3;14431:12;14424:19;;14083:366;;;:::o;14455:419::-;14621:4;14659:2;14648:9;14644:18;14636:26;;14708:9;14702:4;14698:20;14694:1;14683:9;14679:17;14672:47;14736:131;14862:4;14736:131;:::i;:::-;14728:139;;14455:419;;;:::o;14880:179::-;15020:31;15016:1;15008:6;15004:14;14997:55;14880:179;:::o;15065:366::-;15207:3;15228:67;15292:2;15287:3;15228:67;:::i;:::-;15221:74;;15304:93;15393:3;15304:93;:::i;:::-;15422:2;15417:3;15413:12;15406:19;;15065:366;;;:::o;15437:419::-;15603:4;15641:2;15630:9;15626:18;15618:26;;15690:9;15684:4;15680:20;15676:1;15665:9;15661:17;15654:47;15718:131;15844:4;15718:131;:::i;:::-;15710:139;;15437:419;;;:::o;15862:194::-;15902:4;15922:20;15940:1;15922:20;:::i;:::-;15917:25;;15956:20;15974:1;15956:20;:::i;:::-;15951:25;;16000:1;15997;15993:9;15985:17;;16024:1;16018:4;16015:11;16012:37;;;16029:18;;:::i;:::-;16012:37;15862:194;;;;:::o;16062:147::-;16163:11;16200:3;16185:18;;16062:147;;;;:::o;16215:114::-;;:::o;16335:398::-;16494:3;16515:83;16596:1;16591:3;16515:83;:::i;:::-;16508:90;;16607:93;16696:3;16607:93;:::i;:::-;16725:1;16720:3;16716:11;16709:18;;16335:398;;;:::o;16739:379::-;16923:3;16945:147;17088:3;16945:147;:::i;:::-;16938:154;;17109:3;17102:10;;16739:379;;;:::o;17124:244::-;17264:34;17260:1;17252:6;17248:14;17241:58;17333:27;17328:2;17320:6;17316:15;17309:52;17124:244;:::o;17374:366::-;17516:3;17537:67;17601:2;17596:3;17537:67;:::i;:::-;17530:74;;17613:93;17702:3;17613:93;:::i;:::-;17731:2;17726:3;17722:12;17715:19;;17374:366;;;:::o;17746:419::-;17912:4;17950:2;17939:9;17935:18;17927:26;;17999:9;17993:4;17989:20;17985:1;17974:9;17970:17;17963:47;18027:131;18153:4;18027:131;:::i;:::-;18019:139;;17746:419;;;:::o;18171:223::-;18311:34;18307:1;18299:6;18295:14;18288:58;18380:6;18375:2;18367:6;18363:15;18356:31;18171:223;:::o;18400:366::-;18542:3;18563:67;18627:2;18622:3;18563:67;:::i;:::-;18556:74;;18639:93;18728:3;18639:93;:::i;:::-;18757:2;18752:3;18748:12;18741:19;;18400:366;;;:::o;18772:419::-;18938:4;18976:2;18965:9;18961:18;18953:26;;19025:9;19019:4;19015:20;19011:1;19000:9;18996:17;18989:47;19053:131;19179:4;19053:131;:::i;:::-;19045:139;;18772:419;;;:::o;19197:188::-;19235:3;19254:18;19270:1;19254:18;:::i;:::-;19249:23;;19286:18;19302:1;19286:18;:::i;:::-;19281:23;;19327:1;19324;19320:9;19313:16;;19350:4;19345:3;19342:13;19339:39;;;19358:18;;:::i;:::-;19339:39;19197:188;;;;:::o;19391:225::-;19531:34;19527:1;19519:6;19515:14;19508:58;19600:8;19595:2;19587:6;19583:15;19576:33;19391:225;:::o;19622:366::-;19764:3;19785:67;19849:2;19844:3;19785:67;:::i;:::-;19778:74;;19861:93;19950:3;19861:93;:::i;:::-;19979:2;19974:3;19970:12;19963:19;;19622:366;;;:::o;19994:419::-;20160:4;20198:2;20187:9;20183:18;20175:26;;20247:9;20241:4;20237:20;20233:1;20222:9;20218:17;20211:47;20275:131;20401:4;20275:131;:::i;:::-;20267:139;;19994:419;;;:::o;20419:182::-;20559:34;20555:1;20547:6;20543:14;20536:58;20419:182;:::o;20607:366::-;20749:3;20770:67;20834:2;20829:3;20770:67;:::i;:::-;20763:74;;20846:93;20935:3;20846:93;:::i;:::-;20964:2;20959:3;20955:12;20948:19;;20607:366;;;:::o;20979:419::-;21145:4;21183:2;21172:9;21168:18;21160:26;;21232:9;21226:4;21222:20;21218:1;21207:9;21203:17;21196:47;21260:131;21386:4;21260:131;:::i;:::-;21252:139;;20979:419;;;:::o;21404:161::-;21544:13;21540:1;21532:6;21528:14;21521:37;21404:161;:::o;21571:366::-;21713:3;21734:67;21798:2;21793:3;21734:67;:::i;:::-;21727:74;;21810:93;21899:3;21810:93;:::i;:::-;21928:2;21923:3;21919:12;21912:19;;21571:366;;;:::o;21943:419::-;22109:4;22147:2;22136:9;22132:18;22124:26;;22196:9;22190:4;22186:20;22182:1;22171:9;22167:17;22160:47;22224:131;22350:4;22224:131;:::i;:::-;22216:139;;21943:419;;;:::o;22368:172::-;22508:24;22504:1;22496:6;22492:14;22485:48;22368:172;:::o;22546:366::-;22688:3;22709:67;22773:2;22768:3;22709:67;:::i;:::-;22702:74;;22785:93;22874:3;22785:93;:::i;:::-;22903:2;22898:3;22894:12;22887:19;;22546:366;;;:::o;22918:419::-;23084:4;23122:2;23111:9;23107:18;23099:26;;23171:9;23165:4;23161:20;23157:1;23146:9;23142:17;23135:47;23199:131;23325:4;23199:131;:::i;:::-;23191:139;;22918:419;;;:::o;23343:227::-;23483:34;23479:1;23471:6;23467:14;23460:58;23552:10;23547:2;23539:6;23535:15;23528:35;23343:227;:::o;23576:366::-;23718:3;23739:67;23803:2;23798:3;23739:67;:::i;:::-;23732:74;;23815:93;23904:3;23815:93;:::i;:::-;23933:2;23928:3;23924:12;23917:19;;23576:366;;;:::o;23948:419::-;24114:4;24152:2;24141:9;24137:18;24129:26;;24201:9;24195:4;24191:20;24187:1;24176:9;24172:17;24165:47;24229:131;24355:4;24229:131;:::i;:::-;24221:139;;23948:419;;;:::o;24373:191::-;24413:3;24432:20;24450:1;24432:20;:::i;:::-;24427:25;;24466:20;24484:1;24466:20;:::i;:::-;24461:25;;24509:1;24506;24502:9;24495:16;;24530:3;24527:1;24524:10;24521:36;;;24537:18;;:::i;:::-;24521:36;24373:191;;;;:::o;24570:169::-;24710:21;24706:1;24698:6;24694:14;24687:45;24570:169;:::o;24745:366::-;24887:3;24908:67;24972:2;24967:3;24908:67;:::i;:::-;24901:74;;24984:93;25073:3;24984:93;:::i;:::-;25102:2;25097:3;25093:12;25086:19;;24745:366;;;:::o;25117:419::-;25283:4;25321:2;25310:9;25306:18;25298:26;;25370:9;25364:4;25360:20;25356:1;25345:9;25341:17;25334:47;25398:131;25524:4;25398:131;:::i;:::-;25390:139;;25117:419;;;:::o;25542:302::-;25682:34;25678:1;25670:6;25666:14;25659:58;25751:34;25746:2;25738:6;25734:15;25727:59;25820:16;25815:2;25807:6;25803:15;25796:41;25542:302;:::o;25850:366::-;25992:3;26013:67;26077:2;26072:3;26013:67;:::i;:::-;26006:74;;26089:93;26178:3;26089:93;:::i;:::-;26207:2;26202:3;26198:12;26191:19;;25850:366;;;:::o;26222:419::-;26388:4;26426:2;26415:9;26411:18;26403:26;;26475:9;26469:4;26465:20;26461:1;26450:9;26446:17;26439:47;26503:131;26629:4;26503:131;:::i;:::-;26495:139;;26222:419;;;:::o;26647:170::-;26787:22;26783:1;26775:6;26771:14;26764:46;26647:170;:::o;26823:366::-;26965:3;26986:67;27050:2;27045:3;26986:67;:::i;:::-;26979:74;;27062:93;27151:3;27062:93;:::i;:::-;27180:2;27175:3;27171:12;27164:19;;26823:366;;;:::o;27195:419::-;27361:4;27399:2;27388:9;27384:18;27376:26;;27448:9;27442:4;27438:20;27434:1;27423:9;27419:17;27412:47;27476:131;27602:4;27476:131;:::i;:::-;27468:139;;27195:419;;;:::o;27620:180::-;27668:77;27665:1;27658:88;27765:4;27762:1;27755:15;27789:4;27786:1;27779:15;27806:180;27854:77;27851:1;27844:88;27951:4;27948:1;27941:15;27975:4;27972:1;27965:15;27992:143;28049:5;28080:6;28074:13;28065:22;;28096:33;28123:5;28096:33;:::i;:::-;27992:143;;;;:::o;28141:351::-;28211:6;28260:2;28248:9;28239:7;28235:23;28231:32;28228:119;;;28266:79;;:::i;:::-;28228:119;28386:1;28411:64;28467:7;28458:6;28447:9;28443:22;28411:64;:::i;:::-;28401:74;;28357:128;28141:351;;;;:::o;28498:85::-;28543:7;28572:5;28561:16;;28498:85;;;:::o;28589:158::-;28647:9;28680:61;28698:42;28707:32;28733:5;28707:32;:::i;:::-;28698:42;:::i;:::-;28680:61;:::i;:::-;28667:74;;28589:158;;;:::o;28753:147::-;28848:45;28887:5;28848:45;:::i;:::-;28843:3;28836:58;28753:147;;:::o;28906:114::-;28973:6;29007:5;29001:12;28991:22;;28906:114;;;:::o;29026:184::-;29125:11;29159:6;29154:3;29147:19;29199:4;29194:3;29190:14;29175:29;;29026:184;;;;:::o;29216:132::-;29283:4;29306:3;29298:11;;29336:4;29331:3;29327:14;29319:22;;29216:132;;;:::o;29354:108::-;29431:24;29449:5;29431:24;:::i;:::-;29426:3;29419:37;29354:108;;:::o;29468:179::-;29537:10;29558:46;29600:3;29592:6;29558:46;:::i;:::-;29636:4;29631:3;29627:14;29613:28;;29468:179;;;;:::o;29653:113::-;29723:4;29755;29750:3;29746:14;29738:22;;29653:113;;;:::o;29802:732::-;29921:3;29950:54;29998:5;29950:54;:::i;:::-;30020:86;30099:6;30094:3;30020:86;:::i;:::-;30013:93;;30130:56;30180:5;30130:56;:::i;:::-;30209:7;30240:1;30225:284;30250:6;30247:1;30244:13;30225:284;;;30326:6;30320:13;30353:63;30412:3;30397:13;30353:63;:::i;:::-;30346:70;;30439:60;30492:6;30439:60;:::i;:::-;30429:70;;30285:224;30272:1;30269;30265:9;30260:14;;30225:284;;;30229:14;30525:3;30518:10;;29926:608;;;29802:732;;;;:::o;30540:831::-;30803:4;30841:3;30830:9;30826:19;30818:27;;30855:71;30923:1;30912:9;30908:17;30899:6;30855:71;:::i;:::-;30936:80;31012:2;31001:9;30997:18;30988:6;30936:80;:::i;:::-;31063:9;31057:4;31053:20;31048:2;31037:9;31033:18;31026:48;31091:108;31194:4;31185:6;31091:108;:::i;:::-;31083:116;;31209:72;31277:2;31266:9;31262:18;31253:6;31209:72;:::i;:::-;31291:73;31359:3;31348:9;31344:19;31335:6;31291:73;:::i;:::-;30540:831;;;;;;;;:::o;31377:227::-;31417:4;31437:20;31455:1;31437:20;:::i;:::-;31432:25;;31471:20;31489:1;31471:20;:::i;:::-;31466:25;;31515:1;31512;31508:9;31500:17;;31539:34;31533:4;31530:44;31527:70;;;31577:18;;:::i;:::-;31527:70;31377:227;;;;:::o;31610:332::-;31731:4;31769:2;31758:9;31754:18;31746:26;;31782:71;31850:1;31839:9;31835:17;31826:6;31782:71;:::i;:::-;31863:72;31931:2;31920:9;31916:18;31907:6;31863:72;:::i;:::-;31610:332;;;;;:::o

Swarm Source

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