ETH Price: $2,486.57 (-1.69%)
Gas: 0.6 Gwei

Token

PRISM (PRISM)
 

Overview

Max Total Supply

1,000,000,000 PRISM

Holders

153

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,220,778.144291824356411719 PRISM

Value
$0.00
0xf2aa05b1ac26283f76d58c683f20a5ca981729ec
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:
PRISM

Compiler Version
v0.8.0+commit.c7dfd78e

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-17
*/

// SPDX-License-Identifier: UNLICENSED



// 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);
}
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)


/**
 * @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;
    }
}

/**
 * @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);
    }
}

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 PRISM is IERC20, Ownable {
    /* -------------------------------------------------------------------------- */
    /*                                   events                                   */
    /* -------------------------------------------------------------------------- */
    event Reflect(uint256 amountReflected, uint256 newTotalProportion);

    /* -------------------------------------------------------------------------- */
    /*                                  constants                                 */
    /* -------------------------------------------------------------------------- */
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    uint256 constant MAX_FEE = 10;

    /* -------------------------------------------------------------------------- */
    /*                                   states                                   */
    /* -------------------------------------------------------------------------- */
    
    IUniswapV2Router02 public constant UNISWAP_V2_ROUTER =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable UNISWAP_V2_PAIR;

    

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

    string _name = "PRISM";
    string _symbol = "PRISM";

    uint256 _totalSupply = 1_000_000_000 ether;
    uint256 public _maxTxAmount = _totalSupply * 2 / 100;

    /* 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 limitsEnabled = true;
    mapping(address => bool) isFeeExempt;
    mapping(address => bool) isTxLimitExempt;

    Fee public buyFee = Fee({reflection: 1, marketing: 1, lp: 1, buyback: 1, burn: 1, total: 5});
    Fee public sellFee = Fee({reflection: 1, marketing: 1, lp: 1, buyback: 1, burn: 1, total: 5});

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


    bool public claimingFees = true;
    uint256 public swapThreshold = (_totalSupply * 2) / 1000;
    bool inSwap;
    mapping(address => bool) public blacklists;

    /* -------------------------------------------------------------------------- */
    /*                                  modifiers                                 */
    /* -------------------------------------------------------------------------- */
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

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

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

        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[address(UNISWAP_V2_ROUTER)] = true;
        isTxLimitExempt[_uniswapPair] = true;
        isTxLimitExempt[tx.origin] = true;
        isFeeExempt[tx.origin] = true;

       

        marketingFeeReceiver = 0xB05e158574813E8dEcC4bA31E51A921b48001C17;
        lpFeeReceiver = 0xDF7021DaE616d147956eA63A3f6F1E0A58FCcBBe;
        buybackFeeReceiver = 0x05DB22E969292b1CA9aF4d2B5EBbe0A7B1D55296;
        burnFeeReceiver = 0x05DB22E969292b1CA9aF4d2B5EBbe0A7B1D55296;

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

    receive() external payable {}

    /* -------------------------------------------------------------------------- */
    /*                                    ERC20                                   */
    /* -------------------------------------------------------------------------- */
    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);
    }

    /* -------------------------------------------------------------------------- */
    /*                                    views                                   */
    /* -------------------------------------------------------------------------- */
    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);
    }

    /* -------------------------------------------------------------------------- */
    /*                                   owners                                   */
    /* -------------------------------------------------------------------------- */
    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;

        require(__totalBuyFee <= MAX_FEE, "Buy fees too high");
        require(__totalSellFee <= MAX_FEE, "Sell fees too high");

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

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

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

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

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

    function setMaxTxBasisPoint(uint256 p_) external onlyOwner {
        _maxTxAmount = _totalSupply * p_ / 10000;
    }

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

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

    /* -------------------------------------------------------------------------- */
    /*                                   private                                  */
    /* -------------------------------------------------------------------------- */
    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 && !isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        }

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

        // burn
        _transferFrom(address(this), burnFeeReceiver, 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(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(lpFeeReceiver).call{value: amountETHLP}("");
        (tmpSuccess,) = payable(buybackFeeReceiver).call{value: amountETHBuyback}("");
    }

    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":"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":[{"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":"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":[],"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":"m_","type":"address"},{"internalType":"address","name":"lp_","type":"address"},{"internalType":"address","name":"b_","type":"address"},{"internalType":"address","name":"br_","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":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"e_","type":"bool"}],"name":"setLimitsEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"p_","type":"uint256"}],"name":"setMaxTxBasisPoint","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":[],"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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600581526020017f505249534d000000000000000000000000000000000000000000000000000000815250600190805190602001906200005192919062000bc8565b506040518060400160405280600581526020017f505249534d000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000bc8565b506b033b2e3c9fd0803ce800000060035560646002600354620000c3919062000d5f565b620000cf919062000d27565b6004556003546006556001600860006101000a81548160ff0219169083151502179055506040518060c00160405280600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff16815260200160056fffffffffffffffffffffffffffffffff16815250600b60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050506040518060c00160405280600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff16815260200160056fffffffffffffffffffffffffffffffff16815250600c60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050506001601060146101000a81548160ff0219169083151502179055506103e860026003546200039a919062000d5f565b620003a6919062000d27565b601155348015620003b657600080fd5b50620003d7620003cb62000afc60201b60201c565b62000b0460201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200043457600080fd5b505afa15801562000449573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200046f919062000c8f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004e657600080fd5b505afa158015620004fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000521919062000c8f565b6040518363ffffffff1660e01b81526004016200054092919062000cdd565b602060405180830381600087803b1580156200055b57600080fd5b505af115801562000570573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000596919062000c8f565b90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555073b05e158574813e8decc4ba31e51a921b48001c17600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073df7021dae616d147956ea63a3f6f1e0a58fccbbe600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507305db22e969292b1ca9af4d2b5ebbe0a7b1d55296600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507305db22e969292b1ca9af4d2b5ebbe0a7b1d55296601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600354600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405162000aed919062000d0a565b60405180910390a35062000edb565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b82805462000bd69062000dfe565b90600052602060002090601f01602090048101928262000bfa576000855562000c46565b82601f1062000c1557805160ff191683800117855562000c46565b8280016001018555821562000c46579182015b8281111562000c4557825182559160200191906001019062000c28565b5b50905062000c55919062000c59565b5090565b5b8082111562000c7457600081600090555060010162000c5a565b5090565b60008151905062000c898162000ec1565b92915050565b60006020828403121562000ca257600080fd5b600062000cb28482850162000c78565b91505092915050565b62000cc68162000dc0565b82525050565b62000cd78162000df4565b82525050565b600060408201905062000cf4600083018562000cbb565b62000d03602083018462000cbb565b9392505050565b600060208201905062000d21600083018462000ccc565b92915050565b600062000d348262000df4565b915062000d418362000df4565b92508262000d545762000d5362000e63565b5b828204905092915050565b600062000d6c8262000df4565b915062000d798362000df4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000db55762000db462000e34565b5b828202905092915050565b600062000dcd8262000dd4565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000600282049050600182168062000e1757607f821691505b6020821081141562000e2e5762000e2d62000e92565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b62000ecc8162000dc0565b811462000ed857600080fd5b50565b60805160601c613ab562000f08600039600081816117fc01528181611be201526120b30152613ab56000f3fe60806040526004361061021e5760003560e01c80634706240211610123578063a9059cbb116100ab578063df20fd491161006f578063df20fd4914610802578063e186ec741461082b578063f2fde38b14610854578063f40acc3d1461087d578063f84ba65d146108a857610225565b8063a9059cbb1461071d578063b0f7ec381461075a578063c38a31de14610785578063d85a2828146107ae578063dd62ed3e146107c557610225565b8063715018a6116100f2578063715018a61461065a5780637d1db4a5146106715780638da5cb5b1461069c57806395d89b41146106c7578063a82ed9ec146106f257610225565b80634706240214610587578063571ac8b0146105b7578063658d4b7f146105f457806370a082311461061d57610225565b80632b14ca56116101a6578063364333f411610175578063364333f4146104b85780633c8e556d146104cf578063404e5129146104f857806341aea9de1461052157806345ce53651461054a57610225565b80632b14ca56146103f55780632d83811914610425578063313ce567146104625780633582ad231461048d57610225565b806316c02129116101ed57806316c02129146102fa578063178002871461033757806318160ddd1461036257806323b872dd1461038d5780632b112e49146103ca57610225565b80630445b6671461022a57806306fdde0314610255578063095ea7b3146102805780630cfc15f9146102bd57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f6108d1565b60405161024c919061357f565b60405180910390f35b34801561026157600080fd5b5061026a6108d7565b604051610277919061345d565b60405180910390f35b34801561028c57600080fd5b506102a760048036038101906102a29190612ec5565b610969565b6040516102b49190613427565b60405180910390f35b3480156102c957600080fd5b506102e460048036038101906102df9190612d49565b610a5b565b6040516102f1919061357f565b60405180910390f35b34801561030657600080fd5b50610321600480360381019061031c9190612d49565b610a73565b60405161032e9190613427565b60405180910390f35b34801561034357600080fd5b5061034c610a93565b604051610359919061357f565b60405180910390f35b34801561036e57600080fd5b50610377610a99565b604051610384919061357f565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af9190612e3a565b610aa3565b6040516103c19190613427565b60405180910390f35b3480156103d657600080fd5b506103df610d24565b6040516103ec919061357f565b60405180910390f35b34801561040157600080fd5b5061040a610d57565b60405161041c96959493929190613638565b60405180910390f35b34801561043157600080fd5b5061044c60048036038101906104479190612f66565b610dde565b604051610459919061357f565b60405180910390f35b34801561046e57600080fd5b50610477610e02565b604051610484919061361d565b60405180910390f35b34801561049957600080fd5b506104a2610e0b565b6040516104af9190613427565b60405180910390f35b3480156104c457600080fd5b506104cd610e1e565b005b3480156104db57600080fd5b506104f660048036038101906104f19190612dd7565b610e9f565b005b34801561050457600080fd5b5061051f600480360381019061051a9190612e89565b610fb1565b005b34801561052d57600080fd5b5061054860048036038101906105439190612f01565b611014565b005b34801561055657600080fd5b50610571600480360381019061056c9190612f66565b611039565b60405161057e919061357f565b60405180910390f35b34801561059357600080fd5b5061059c61105d565b6040516105ae96959493929190613638565b60405180910390f35b3480156105c357600080fd5b506105de60048036038101906105d99190612d49565b6110e4565b6040516105eb9190613427565b60405180910390f35b34801561060057600080fd5b5061061b60048036038101906106169190612e89565b611117565b005b34801561062957600080fd5b50610644600480360381019061063f9190612d49565b61117a565b604051610651919061357f565b60405180910390f35b34801561066657600080fd5b5061066f6111cb565b005b34801561067d57600080fd5b506106866111df565b604051610693919061357f565b60405180910390f35b3480156106a857600080fd5b506106b16111e5565b6040516106be919061340c565b60405180910390f35b3480156106d357600080fd5b506106dc61120e565b6040516106e9919061345d565b60405180910390f35b3480156106fe57600080fd5b506107076112a0565b6040516107149190613442565b60405180910390f35b34801561072957600080fd5b50610744600480360381019061073f9190612ec5565b6112b8565b6040516107519190613427565b60405180910390f35b34801561076657600080fd5b5061076f6112cd565b60405161077c9190613427565b60405180910390f35b34801561079157600080fd5b506107ac60048036038101906107a79190612f8f565b6112e0565b005b3480156107ba57600080fd5b506107c3611678565b005b3480156107d157600080fd5b506107ec60048036038101906107e79190612d9b565b611696565b6040516107f9919061357f565b60405180910390f35b34801561080e57600080fd5b5061082960048036038101906108249190612f2a565b61171d565b005b34801561083757600080fd5b50610852600480360381019061084d9190612f66565b61174a565b005b34801561086057600080fd5b5061087b60048036038101906108769190612d49565b611776565b005b34801561088957600080fd5b506108926117fa565b60405161089f919061340c565b60405180910390f35b3480156108b457600080fd5b506108cf60048036038101906108ca9190612e89565b61181e565b005b60115481565b6060600180546108e690613953565b80601f016020809104026020016040519081016040528092919081815260200182805461091290613953565b801561095f5780601f106109345761010080835404028352916020019161095f565b820191906000526020600020905b81548152906001019060200180831161094257829003601f168201915b5050505050905090565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a49919061357f565b60405180910390a36001905092915050565b60056020528060005260406000206000915090505481565b60136020528060005260406000206000915054906101000a900460ff1681565b60065481565b6000600354905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d105781600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfe9061349f565b60405180910390fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c8f9190613845565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610d1b848484611881565b90509392505050565b6000610d30600061117a565b610d3b61dead61117a565b600354610d489190613845565b610d529190613845565b905090565b600c8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a900460ff16908060000160039054906101000a900460ff16908060000160049054906101000a900460ff16908060000160059054906101000a90046fffffffffffffffffffffffffffffffff16905086565b600060065460035483610df191906137b7565b610dfb9190613786565b9050919050565b60006012905090565b600860009054906101000a900460ff1681565b610e26611d50565b60003373ffffffffffffffffffffffffffffffffffffffff1647604051610e4c906133f7565b60006040518083038185875af1925050503d8060008114610e89576040519150601f19603f3d011682016040523d82523d6000602084013e610e8e565b606091505b5050905080610e9c57600080fd5b50565b610ea7611d50565b83600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b610fb9611d50565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61101c611d50565b80600860006101000a81548160ff02191690831515021790555050565b60006003546006548361104c91906137b7565b6110569190613786565b9050919050565b600b8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a900460ff16908060000160039054906101000a900460ff16908060000160049054906101000a900460ff16908060000160059054906101000a90046fffffffffffffffffffffffffffffffff16905086565b6000611110827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610969565b9050919050565b61111f611d50565b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006111c4600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dde565b9050919050565b6111d3611d50565b6111dd6000611dce565b565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461121d90613953565b80601f016020809104026020016040519081016040528092919081815260200182805461124990613953565b80156112965780601f1061126b57610100808354040283529160200191611296565b820191906000526020600020905b81548152906001019060200180831161127957829003601f168201915b5050505050905090565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60006112c5338484611881565b905092915050565b601060149054906101000a900460ff1681565b6112e8611d50565b600086888a8c8e6112f9919061374f565b611303919061374f565b61130d919061374f565b611317919061374f565b60ff1690506000828486888a61132d919061374f565b611337919061374f565b611341919061374f565b61134b919061374f565b60ff169050600a826fffffffffffffffffffffffffffffffff1611156113a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139d906134df565b60405180910390fd5b600a816fffffffffffffffffffffffffffffffff1611156113fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f39061353f565b60405180910390fd5b6040518060c001604052808d60ff1681526020018d60ff1681526020018d60ff1681526020018d60ff1681526020018960ff168152602001836fffffffffffffffffffffffffffffffff16815250600b60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050506040518060c001604052808860ff1681526020018860ff1681526020018860ff1681526020018860ff1681526020018460ff168152602001826fffffffffffffffffffffffffffffffff16815250600c60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905050505050505050505050505050565b611680611d50565b611693303361168e3061117a565b611881565b50565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611725611d50565b81601060146101000a81548160ff021916908315150217905550806011819055505050565b611752611d50565b6127108160035461176391906137b7565b61176d9190613786565b60048190555050565b61177e611d50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e59061347f565b60405180910390fd5b6117f781611dce565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b611826611d50565b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119275750601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195d9061355f565b60405180910390fd5b601260009054906101000a900460ff161561198d57611986848484611e92565b9050611d49565b600860009054906101000a900460ff1680156119f35750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a495750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a9457600454821115611a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8a906134bf565b60405180910390fd5b5b611a9c6120af565b15611aaa57611aa961214d565b5b6000611ab583611039565b905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b309061351f565b60405180910390fd5b80600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b849190613845565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611bd386866127e3565b611bdd5781611c45565b611c447f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614611c3a576000611c3d565b60015b8784612891565b5b905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c9291906136f9565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611d2d84610dde565b604051611d3a919061357f565b60405180910390a36001925050505b9392505050565b611d58612cd8565b73ffffffffffffffffffffffffffffffffffffffff16611d766111e5565b73ffffffffffffffffffffffffffffffffffffffff1614611dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc3906134ff565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080611e9e83611039565b905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f199061351f565b60405180910390fd5b80600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f6d9190613845565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ffb91906136f9565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161209b919061357f565b60405180910390a360019150509392505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561211a5750601260009054906101000a900460ff16155b80156121325750601060149054906101000a900460ff165b801561214857506011546121453061117a565b10155b905090565b6001601260006101000a81548160ff0219169083151502179055506000600c6040518060c00160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a900460ff1660ff1660ff1681526020016000820160039054906101000a900460ff1660ff1660ff1681526020016000820160049054906101000a900460ff1660ff1660ff1681526020016000820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506000601154905060008260a001516fffffffffffffffffffffffffffffffff16836080015160ff168361228791906137b7565b6122919190613786565b9050600081836122a19190613845565b90506122c1737a250d5630b4cf539739df2c5dacb4c659f2488d82610969565b506122ef30601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611881565b506000600267ffffffffffffffff811115612333577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156123615781602001602082028036833780820191505090505b509050308160008151811061239f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561243357600080fd5b505afa158015612447573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246b9190612d72565b816001815181106124a5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161253595949392919061359a565b600060405180830381600087803b15801561254f57600080fd5b505af1158015612563573d6000803e3d6000fd5b5050505060004790506000866080015160ff16876000015160ff168860a0015161258d9190613811565b6125979190613811565b6fffffffffffffffffffffffffffffffff169050600081886020015160ff16846125c191906137b7565b6125cb9190613786565b9050600082896040015160ff16856125e391906137b7565b6125ed9190613786565b90506000838a6060015160ff168661260591906137b7565b61260f9190613786565b90506000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051612659906133f7565b60006040518083038185875af1925050503d8060008114612696576040519150601f19603f3d011682016040523d82523d6000602084013e61269b565b606091505b50509050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516126e5906133f7565b60006040518083038185875af1925050503d8060008114612722576040519150601f19603f3d011682016040523d82523d6000602084013e612727565b606091505b505080915050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612773906133f7565b60006040518083038185875af1925050503d80600081146127b0576040519150601f19603f3d011682016040523d82523d6000602084013e6127b5565b606091505b50508091505050505050505050505050506000601260006101000a81548160ff021916908315150217905550565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128895750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080600b6040518060c00160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a900460ff1660ff1660ff1681526020016000820160039054906101000a900460ff1660ff1660ff1681526020016000820160049054906101000a900460ff1660ff1660ff1681526020016000820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506000600c6040518060c00160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a900460ff1660ff1660ff1681526020016000820160039054906101000a900460ff1660ff1660ff1681526020016000820160049054906101000a900460ff1660ff1660ff1681526020016000820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681525050905060006001151587151514612aab5760648260a001516fffffffffffffffffffffffffffffffff1686612a9c91906137b7565b612aa69190613786565b612ada565b60648360a001516fffffffffffffffffffffffffffffffff1686612acf91906137b7565b612ad99190613786565b5b905060006001151588151514612b23578260a001516fffffffffffffffffffffffffffffffff16836000015160ff1683612b1491906137b7565b612b1e9190613786565b612b58565b8360a001516fffffffffffffffffffffffffffffffff16846000015160ff1683612b4d91906137b7565b612b579190613786565b5b905080600654612b689190613845565b60068190555060008183612b7c9190613845565b90506000811115612c835780600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bd291906136f9565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612c6d84610dde565b604051612c7a919061357f565b60405180910390a35b7fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac82600654604051612cb69291906135f4565b60405180910390a18287612cca9190613845565b955050505050509392505050565b600033905090565b600081359050612cef81613a23565b92915050565b600081519050612d0481613a23565b92915050565b600081359050612d1981613a3a565b92915050565b600081359050612d2e81613a51565b92915050565b600081359050612d4381613a68565b92915050565b600060208284031215612d5b57600080fd5b6000612d6984828501612ce0565b91505092915050565b600060208284031215612d8457600080fd5b6000612d9284828501612cf5565b91505092915050565b60008060408385031215612dae57600080fd5b6000612dbc85828601612ce0565b9250506020612dcd85828601612ce0565b9150509250929050565b60008060008060808587031215612ded57600080fd5b6000612dfb87828801612ce0565b9450506020612e0c87828801612ce0565b9350506040612e1d87828801612ce0565b9250506060612e2e87828801612ce0565b91505092959194509250565b600080600060608486031215612e4f57600080fd5b6000612e5d86828701612ce0565b9350506020612e6e86828701612ce0565b9250506040612e7f86828701612d1f565b9150509250925092565b60008060408385031215612e9c57600080fd5b6000612eaa85828601612ce0565b9250506020612ebb85828601612d0a565b9150509250929050565b60008060408385031215612ed857600080fd5b6000612ee685828601612ce0565b9250506020612ef785828601612d1f565b9150509250929050565b600060208284031215612f1357600080fd5b6000612f2184828501612d0a565b91505092915050565b60008060408385031215612f3d57600080fd5b6000612f4b85828601612d0a565b9250506020612f5c85828601612d1f565b9150509250929050565b600060208284031215612f7857600080fd5b6000612f8684828501612d1f565b91505092915050565b6000806000806000806000806000806101408b8d031215612faf57600080fd5b6000612fbd8d828e01612d34565b9a50506020612fce8d828e01612d34565b9950506040612fdf8d828e01612d34565b9850506060612ff08d828e01612d34565b97505060806130018d828e01612d34565b96505060a06130128d828e01612d34565b95505060c06130238d828e01612d34565b94505060e06130348d828e01612d34565b9350506101006130468d828e01612d34565b9250506101206130588d828e01612d34565b9150509295989b9194979a5092959850565b60006130768383613082565b60208301905092915050565b61308b81613879565b82525050565b61309a81613879565b82525050565b60006130ab826136a9565b6130b581856136cc565b93506130c083613699565b8060005b838110156130f15781516130d8888261306a565b97506130e3836136bf565b9250506001810190506130c4565b5085935050505092915050565b6131078161388b565b82525050565b613116816138ea565b82525050565b6131258161390e565b82525050565b6000613136826136b4565b61314081856136e8565b9350613150818560208601613920565b61315981613a12565b840191505092915050565b60006131716026836136e8565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006131d7601d836136e8565b91507f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006000830152602082019050919050565b60006132176028836136e8565b91507f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008301527f78416d6f756e742e0000000000000000000000000000000000000000000000006020830152604082019050919050565b600061327d6011836136e8565b91507f427579206665657320746f6f20686967680000000000000000000000000000006000830152602082019050919050565b60006132bd6020836136e8565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006132fd6014836136e8565b91507f496e73756666696369656e742042616c616e63650000000000000000000000006000830152602082019050919050565b600061333d6000836136dd565b9150600082019050919050565b60006133576012836136e8565b91507f53656c6c206665657320746f6f206869676800000000000000000000000000006000830152602082019050919050565b6000613397600b836136e8565b91507f426c61636b6c69737465640000000000000000000000000000000000000000006000830152602082019050919050565b6133d381613897565b82525050565b6133e2816138d3565b82525050565b6133f1816138dd565b82525050565b600061340282613330565b9150819050919050565b60006020820190506134216000830184613091565b92915050565b600060208201905061343c60008301846130fe565b92915050565b6000602082019050613457600083018461310d565b92915050565b60006020820190508181036000830152613477818461312b565b905092915050565b6000602082019050818103600083015261349881613164565b9050919050565b600060208201905081810360008301526134b8816131ca565b9050919050565b600060208201905081810360008301526134d88161320a565b9050919050565b600060208201905081810360008301526134f881613270565b9050919050565b60006020820190508181036000830152613518816132b0565b9050919050565b60006020820190508181036000830152613538816132f0565b9050919050565b600060208201905081810360008301526135588161334a565b9050919050565b600060208201905081810360008301526135788161338a565b9050919050565b600060208201905061359460008301846133d9565b92915050565b600060a0820190506135af60008301886133d9565b6135bc602083018761311c565b81810360408301526135ce81866130a0565b90506135dd6060830185613091565b6135ea60808301846133d9565b9695505050505050565b600060408201905061360960008301856133d9565b61361660208301846133d9565b9392505050565b600060208201905061363260008301846133e8565b92915050565b600060c08201905061364d60008301896133e8565b61365a60208301886133e8565b61366760408301876133e8565b61367460608301866133e8565b61368160808301856133e8565b61368e60a08301846133ca565b979650505050505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000613704826138d3565b915061370f836138d3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561374457613743613985565b5b828201905092915050565b600061375a826138dd565b9150613765836138dd565b92508260ff0382111561377b5761377a613985565b5b828201905092915050565b6000613791826138d3565b915061379c836138d3565b9250826137ac576137ab6139b4565b5b828204905092915050565b60006137c2826138d3565b91506137cd836138d3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561380657613805613985565b5b828202905092915050565b600061381c82613897565b915061382783613897565b92508282101561383a57613839613985565b5b828203905092915050565b6000613850826138d3565b915061385b836138d3565b92508282101561386e5761386d613985565b5b828203905092915050565b6000613884826138b3565b9050919050565b60008115159050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006138f5826138fc565b9050919050565b6000613907826138b3565b9050919050565b6000613919826138d3565b9050919050565b60005b8381101561393e578082015181840152602081019050613923565b8381111561394d576000848401525b50505050565b6000600282049050600182168061396b57607f821691505b6020821081141561397f5761397e6139e3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b613a2c81613879565b8114613a3757600080fd5b50565b613a438161388b565b8114613a4e57600080fd5b50565b613a5a816138d3565b8114613a6557600080fd5b50565b613a71816138dd565b8114613a7c57600080fd5b5056fea26469706673582212202417358bb551d61fb75b2644ea1b6c36ff390b91479454b0c077000b9ea8f77664736f6c63430008000033

Deployed Bytecode

0x60806040526004361061021e5760003560e01c80634706240211610123578063a9059cbb116100ab578063df20fd491161006f578063df20fd4914610802578063e186ec741461082b578063f2fde38b14610854578063f40acc3d1461087d578063f84ba65d146108a857610225565b8063a9059cbb1461071d578063b0f7ec381461075a578063c38a31de14610785578063d85a2828146107ae578063dd62ed3e146107c557610225565b8063715018a6116100f2578063715018a61461065a5780637d1db4a5146106715780638da5cb5b1461069c57806395d89b41146106c7578063a82ed9ec146106f257610225565b80634706240214610587578063571ac8b0146105b7578063658d4b7f146105f457806370a082311461061d57610225565b80632b14ca56116101a6578063364333f411610175578063364333f4146104b85780633c8e556d146104cf578063404e5129146104f857806341aea9de1461052157806345ce53651461054a57610225565b80632b14ca56146103f55780632d83811914610425578063313ce567146104625780633582ad231461048d57610225565b806316c02129116101ed57806316c02129146102fa578063178002871461033757806318160ddd1461036257806323b872dd1461038d5780632b112e49146103ca57610225565b80630445b6671461022a57806306fdde0314610255578063095ea7b3146102805780630cfc15f9146102bd57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f6108d1565b60405161024c919061357f565b60405180910390f35b34801561026157600080fd5b5061026a6108d7565b604051610277919061345d565b60405180910390f35b34801561028c57600080fd5b506102a760048036038101906102a29190612ec5565b610969565b6040516102b49190613427565b60405180910390f35b3480156102c957600080fd5b506102e460048036038101906102df9190612d49565b610a5b565b6040516102f1919061357f565b60405180910390f35b34801561030657600080fd5b50610321600480360381019061031c9190612d49565b610a73565b60405161032e9190613427565b60405180910390f35b34801561034357600080fd5b5061034c610a93565b604051610359919061357f565b60405180910390f35b34801561036e57600080fd5b50610377610a99565b604051610384919061357f565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af9190612e3a565b610aa3565b6040516103c19190613427565b60405180910390f35b3480156103d657600080fd5b506103df610d24565b6040516103ec919061357f565b60405180910390f35b34801561040157600080fd5b5061040a610d57565b60405161041c96959493929190613638565b60405180910390f35b34801561043157600080fd5b5061044c60048036038101906104479190612f66565b610dde565b604051610459919061357f565b60405180910390f35b34801561046e57600080fd5b50610477610e02565b604051610484919061361d565b60405180910390f35b34801561049957600080fd5b506104a2610e0b565b6040516104af9190613427565b60405180910390f35b3480156104c457600080fd5b506104cd610e1e565b005b3480156104db57600080fd5b506104f660048036038101906104f19190612dd7565b610e9f565b005b34801561050457600080fd5b5061051f600480360381019061051a9190612e89565b610fb1565b005b34801561052d57600080fd5b5061054860048036038101906105439190612f01565b611014565b005b34801561055657600080fd5b50610571600480360381019061056c9190612f66565b611039565b60405161057e919061357f565b60405180910390f35b34801561059357600080fd5b5061059c61105d565b6040516105ae96959493929190613638565b60405180910390f35b3480156105c357600080fd5b506105de60048036038101906105d99190612d49565b6110e4565b6040516105eb9190613427565b60405180910390f35b34801561060057600080fd5b5061061b60048036038101906106169190612e89565b611117565b005b34801561062957600080fd5b50610644600480360381019061063f9190612d49565b61117a565b604051610651919061357f565b60405180910390f35b34801561066657600080fd5b5061066f6111cb565b005b34801561067d57600080fd5b506106866111df565b604051610693919061357f565b60405180910390f35b3480156106a857600080fd5b506106b16111e5565b6040516106be919061340c565b60405180910390f35b3480156106d357600080fd5b506106dc61120e565b6040516106e9919061345d565b60405180910390f35b3480156106fe57600080fd5b506107076112a0565b6040516107149190613442565b60405180910390f35b34801561072957600080fd5b50610744600480360381019061073f9190612ec5565b6112b8565b6040516107519190613427565b60405180910390f35b34801561076657600080fd5b5061076f6112cd565b60405161077c9190613427565b60405180910390f35b34801561079157600080fd5b506107ac60048036038101906107a79190612f8f565b6112e0565b005b3480156107ba57600080fd5b506107c3611678565b005b3480156107d157600080fd5b506107ec60048036038101906107e79190612d9b565b611696565b6040516107f9919061357f565b60405180910390f35b34801561080e57600080fd5b5061082960048036038101906108249190612f2a565b61171d565b005b34801561083757600080fd5b50610852600480360381019061084d9190612f66565b61174a565b005b34801561086057600080fd5b5061087b60048036038101906108769190612d49565b611776565b005b34801561088957600080fd5b506108926117fa565b60405161089f919061340c565b60405180910390f35b3480156108b457600080fd5b506108cf60048036038101906108ca9190612e89565b61181e565b005b60115481565b6060600180546108e690613953565b80601f016020809104026020016040519081016040528092919081815260200182805461091290613953565b801561095f5780601f106109345761010080835404028352916020019161095f565b820191906000526020600020905b81548152906001019060200180831161094257829003601f168201915b5050505050905090565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a49919061357f565b60405180910390a36001905092915050565b60056020528060005260406000206000915090505481565b60136020528060005260406000206000915054906101000a900460ff1681565b60065481565b6000600354905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d105781600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfe9061349f565b60405180910390fd5b81600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c8f9190613845565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610d1b848484611881565b90509392505050565b6000610d30600061117a565b610d3b61dead61117a565b600354610d489190613845565b610d529190613845565b905090565b600c8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a900460ff16908060000160039054906101000a900460ff16908060000160049054906101000a900460ff16908060000160059054906101000a90046fffffffffffffffffffffffffffffffff16905086565b600060065460035483610df191906137b7565b610dfb9190613786565b9050919050565b60006012905090565b600860009054906101000a900460ff1681565b610e26611d50565b60003373ffffffffffffffffffffffffffffffffffffffff1647604051610e4c906133f7565b60006040518083038185875af1925050503d8060008114610e89576040519150601f19603f3d011682016040523d82523d6000602084013e610e8e565b606091505b5050905080610e9c57600080fd5b50565b610ea7611d50565b83600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b610fb9611d50565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61101c611d50565b80600860006101000a81548160ff02191690831515021790555050565b60006003546006548361104c91906137b7565b6110569190613786565b9050919050565b600b8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060000160029054906101000a900460ff16908060000160039054906101000a900460ff16908060000160049054906101000a900460ff16908060000160059054906101000a90046fffffffffffffffffffffffffffffffff16905086565b6000611110827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610969565b9050919050565b61111f611d50565b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006111c4600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dde565b9050919050565b6111d3611d50565b6111dd6000611dce565b565b60045481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461121d90613953565b80601f016020809104026020016040519081016040528092919081815260200182805461124990613953565b80156112965780601f1061126b57610100808354040283529160200191611296565b820191906000526020600020905b81548152906001019060200180831161127957829003601f168201915b5050505050905090565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60006112c5338484611881565b905092915050565b601060149054906101000a900460ff1681565b6112e8611d50565b600086888a8c8e6112f9919061374f565b611303919061374f565b61130d919061374f565b611317919061374f565b60ff1690506000828486888a61132d919061374f565b611337919061374f565b611341919061374f565b61134b919061374f565b60ff169050600a826fffffffffffffffffffffffffffffffff1611156113a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139d906134df565b60405180910390fd5b600a816fffffffffffffffffffffffffffffffff1611156113fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f39061353f565b60405180910390fd5b6040518060c001604052808d60ff1681526020018d60ff1681526020018d60ff1681526020018d60ff1681526020018960ff168152602001836fffffffffffffffffffffffffffffffff16815250600b60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050506040518060c001604052808860ff1681526020018860ff1681526020018860ff1681526020018860ff1681526020018460ff168152602001826fffffffffffffffffffffffffffffffff16815250600c60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905050505050505050505050505050565b611680611d50565b611693303361168e3061117a565b611881565b50565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611725611d50565b81601060146101000a81548160ff021916908315150217905550806011819055505050565b611752611d50565b6127108160035461176391906137b7565b61176d9190613786565b60048190555050565b61177e611d50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e59061347f565b60405180910390fd5b6117f781611dce565b50565b7f000000000000000000000000b03b7b3ccccad95ced6cca0bb0d59fcf7e19e9d781565b611826611d50565b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119275750601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195d9061355f565b60405180910390fd5b601260009054906101000a900460ff161561198d57611986848484611e92565b9050611d49565b600860009054906101000a900460ff1680156119f35750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a495750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a9457600454821115611a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8a906134bf565b60405180910390fd5b5b611a9c6120af565b15611aaa57611aa961214d565b5b6000611ab583611039565b905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b309061351f565b60405180910390fd5b80600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b849190613845565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611bd386866127e3565b611bdd5781611c45565b611c447f000000000000000000000000b03b7b3ccccad95ced6cca0bb0d59fcf7e19e9d773ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614611c3a576000611c3d565b60015b8784612891565b5b905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c9291906136f9565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611d2d84610dde565b604051611d3a919061357f565b60405180910390a36001925050505b9392505050565b611d58612cd8565b73ffffffffffffffffffffffffffffffffffffffff16611d766111e5565b73ffffffffffffffffffffffffffffffffffffffff1614611dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc3906134ff565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080611e9e83611039565b905080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f199061351f565b60405180910390fd5b80600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f6d9190613845565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ffb91906136f9565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161209b919061357f565b60405180910390a360019150509392505050565b60007f000000000000000000000000b03b7b3ccccad95ced6cca0bb0d59fcf7e19e9d773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561211a5750601260009054906101000a900460ff16155b80156121325750601060149054906101000a900460ff165b801561214857506011546121453061117a565b10155b905090565b6001601260006101000a81548160ff0219169083151502179055506000600c6040518060c00160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a900460ff1660ff1660ff1681526020016000820160039054906101000a900460ff1660ff1660ff1681526020016000820160049054906101000a900460ff1660ff1660ff1681526020016000820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506000601154905060008260a001516fffffffffffffffffffffffffffffffff16836080015160ff168361228791906137b7565b6122919190613786565b9050600081836122a19190613845565b90506122c1737a250d5630b4cf539739df2c5dacb4c659f2488d82610969565b506122ef30601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611881565b506000600267ffffffffffffffff811115612333577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156123615781602001602082028036833780820191505090505b509050308160008151811061239f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561243357600080fd5b505afa158015612447573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246b9190612d72565b816001815181106124a5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161253595949392919061359a565b600060405180830381600087803b15801561254f57600080fd5b505af1158015612563573d6000803e3d6000fd5b5050505060004790506000866080015160ff16876000015160ff168860a0015161258d9190613811565b6125979190613811565b6fffffffffffffffffffffffffffffffff169050600081886020015160ff16846125c191906137b7565b6125cb9190613786565b9050600082896040015160ff16856125e391906137b7565b6125ed9190613786565b90506000838a6060015160ff168661260591906137b7565b61260f9190613786565b90506000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051612659906133f7565b60006040518083038185875af1925050503d8060008114612696576040519150601f19603f3d011682016040523d82523d6000602084013e61269b565b606091505b50509050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516126e5906133f7565b60006040518083038185875af1925050503d8060008114612722576040519150601f19603f3d011682016040523d82523d6000602084013e612727565b606091505b505080915050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612773906133f7565b60006040518083038185875af1925050503d80600081146127b0576040519150601f19603f3d011682016040523d82523d6000602084013e6127b5565b606091505b50508091505050505050505050505050506000601260006101000a81548160ff021916908315150217905550565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128895750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080600b6040518060c00160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a900460ff1660ff1660ff1681526020016000820160039054906101000a900460ff1660ff1660ff1681526020016000820160049054906101000a900460ff1660ff1660ff1681526020016000820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506000600c6040518060c00160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff1681526020016000820160029054906101000a900460ff1660ff1660ff1681526020016000820160039054906101000a900460ff1660ff1660ff1681526020016000820160049054906101000a900460ff1660ff1660ff1681526020016000820160059054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681525050905060006001151587151514612aab5760648260a001516fffffffffffffffffffffffffffffffff1686612a9c91906137b7565b612aa69190613786565b612ada565b60648360a001516fffffffffffffffffffffffffffffffff1686612acf91906137b7565b612ad99190613786565b5b905060006001151588151514612b23578260a001516fffffffffffffffffffffffffffffffff16836000015160ff1683612b1491906137b7565b612b1e9190613786565b612b58565b8360a001516fffffffffffffffffffffffffffffffff16846000015160ff1683612b4d91906137b7565b612b579190613786565b5b905080600654612b689190613845565b60068190555060008183612b7c9190613845565b90506000811115612c835780600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bd291906136f9565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612c6d84610dde565b604051612c7a919061357f565b60405180910390a35b7fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac82600654604051612cb69291906135f4565b60405180910390a18287612cca9190613845565b955050505050509392505050565b600033905090565b600081359050612cef81613a23565b92915050565b600081519050612d0481613a23565b92915050565b600081359050612d1981613a3a565b92915050565b600081359050612d2e81613a51565b92915050565b600081359050612d4381613a68565b92915050565b600060208284031215612d5b57600080fd5b6000612d6984828501612ce0565b91505092915050565b600060208284031215612d8457600080fd5b6000612d9284828501612cf5565b91505092915050565b60008060408385031215612dae57600080fd5b6000612dbc85828601612ce0565b9250506020612dcd85828601612ce0565b9150509250929050565b60008060008060808587031215612ded57600080fd5b6000612dfb87828801612ce0565b9450506020612e0c87828801612ce0565b9350506040612e1d87828801612ce0565b9250506060612e2e87828801612ce0565b91505092959194509250565b600080600060608486031215612e4f57600080fd5b6000612e5d86828701612ce0565b9350506020612e6e86828701612ce0565b9250506040612e7f86828701612d1f565b9150509250925092565b60008060408385031215612e9c57600080fd5b6000612eaa85828601612ce0565b9250506020612ebb85828601612d0a565b9150509250929050565b60008060408385031215612ed857600080fd5b6000612ee685828601612ce0565b9250506020612ef785828601612d1f565b9150509250929050565b600060208284031215612f1357600080fd5b6000612f2184828501612d0a565b91505092915050565b60008060408385031215612f3d57600080fd5b6000612f4b85828601612d0a565b9250506020612f5c85828601612d1f565b9150509250929050565b600060208284031215612f7857600080fd5b6000612f8684828501612d1f565b91505092915050565b6000806000806000806000806000806101408b8d031215612faf57600080fd5b6000612fbd8d828e01612d34565b9a50506020612fce8d828e01612d34565b9950506040612fdf8d828e01612d34565b9850506060612ff08d828e01612d34565b97505060806130018d828e01612d34565b96505060a06130128d828e01612d34565b95505060c06130238d828e01612d34565b94505060e06130348d828e01612d34565b9350506101006130468d828e01612d34565b9250506101206130588d828e01612d34565b9150509295989b9194979a5092959850565b60006130768383613082565b60208301905092915050565b61308b81613879565b82525050565b61309a81613879565b82525050565b60006130ab826136a9565b6130b581856136cc565b93506130c083613699565b8060005b838110156130f15781516130d8888261306a565b97506130e3836136bf565b9250506001810190506130c4565b5085935050505092915050565b6131078161388b565b82525050565b613116816138ea565b82525050565b6131258161390e565b82525050565b6000613136826136b4565b61314081856136e8565b9350613150818560208601613920565b61315981613a12565b840191505092915050565b60006131716026836136e8565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006131d7601d836136e8565b91507f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006000830152602082019050919050565b60006132176028836136e8565b91507f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008301527f78416d6f756e742e0000000000000000000000000000000000000000000000006020830152604082019050919050565b600061327d6011836136e8565b91507f427579206665657320746f6f20686967680000000000000000000000000000006000830152602082019050919050565b60006132bd6020836136e8565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006132fd6014836136e8565b91507f496e73756666696369656e742042616c616e63650000000000000000000000006000830152602082019050919050565b600061333d6000836136dd565b9150600082019050919050565b60006133576012836136e8565b91507f53656c6c206665657320746f6f206869676800000000000000000000000000006000830152602082019050919050565b6000613397600b836136e8565b91507f426c61636b6c69737465640000000000000000000000000000000000000000006000830152602082019050919050565b6133d381613897565b82525050565b6133e2816138d3565b82525050565b6133f1816138dd565b82525050565b600061340282613330565b9150819050919050565b60006020820190506134216000830184613091565b92915050565b600060208201905061343c60008301846130fe565b92915050565b6000602082019050613457600083018461310d565b92915050565b60006020820190508181036000830152613477818461312b565b905092915050565b6000602082019050818103600083015261349881613164565b9050919050565b600060208201905081810360008301526134b8816131ca565b9050919050565b600060208201905081810360008301526134d88161320a565b9050919050565b600060208201905081810360008301526134f881613270565b9050919050565b60006020820190508181036000830152613518816132b0565b9050919050565b60006020820190508181036000830152613538816132f0565b9050919050565b600060208201905081810360008301526135588161334a565b9050919050565b600060208201905081810360008301526135788161338a565b9050919050565b600060208201905061359460008301846133d9565b92915050565b600060a0820190506135af60008301886133d9565b6135bc602083018761311c565b81810360408301526135ce81866130a0565b90506135dd6060830185613091565b6135ea60808301846133d9565b9695505050505050565b600060408201905061360960008301856133d9565b61361660208301846133d9565b9392505050565b600060208201905061363260008301846133e8565b92915050565b600060c08201905061364d60008301896133e8565b61365a60208301886133e8565b61366760408301876133e8565b61367460608301866133e8565b61368160808301856133e8565b61368e60a08301846133ca565b979650505050505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000613704826138d3565b915061370f836138d3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561374457613743613985565b5b828201905092915050565b600061375a826138dd565b9150613765836138dd565b92508260ff0382111561377b5761377a613985565b5b828201905092915050565b6000613791826138d3565b915061379c836138d3565b9250826137ac576137ab6139b4565b5b828204905092915050565b60006137c2826138d3565b91506137cd836138d3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561380657613805613985565b5b828202905092915050565b600061381c82613897565b915061382783613897565b92508282101561383a57613839613985565b5b828203905092915050565b6000613850826138d3565b915061385b836138d3565b92508282101561386e5761386d613985565b5b828203905092915050565b6000613884826138b3565b9050919050565b60008115159050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006138f5826138fc565b9050919050565b6000613907826138b3565b9050919050565b6000613919826138d3565b9050919050565b60005b8381101561393e578082015181840152602081019050613923565b8381111561394d576000848401525b50505050565b6000600282049050600182168061396b57607f821691505b6020821081141561397f5761397e6139e3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b613a2c81613879565b8114613a3757600080fd5b50565b613a438161388b565b8114613a4e57600080fd5b50565b613a5a816138d3565b8114613a6557600080fd5b50565b613a71816138dd565b8114613a7c57600080fd5b5056fea26469706673582212202417358bb551d61fb75b2644ea1b6c36ff390b91479454b0c077000b9ea8f77664736f6c63430008000033

Deployed Bytecode Sourcemap

6826:14534:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9262:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12778:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11357:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8558:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9343;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8607:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12582:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11875:441;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13574:136;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8960:93;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;13417:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12692:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8730:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13976:170;;;;;;;;;;;;;:::i;:::-;;15973:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16440:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16341:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13269:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8861:92;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;11581:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15711:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12968:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5498:103;;;;;;;;;;;;;:::i;:::-;;8377:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4850:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12871:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7908:126;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11711:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9224:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14457:1246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14154:131;;;;;;;;;;;;;:::i;:::-;;13114:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14293:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16215:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5756:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8041:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15838:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9262:56;;;;:::o;12778:85::-;12817:13;12850:5;12843:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12778:85;:::o;11357:216::-;11432:4;11484:6;11449:11;:23;11461:10;11449:23;;;;;;;;;;;;;;;:32;11473:7;11449:32;;;;;;;;;;;;;;;:41;;;;11527:7;11506:37;;11515:10;11506:37;;;11536:6;11506:37;;;;;;:::i;:::-;;;;;;;;11561:4;11554:11;;11357:216;;;;:::o;8558:42::-;;;;;;;;;;;;;;;;;:::o;9343:::-;;;;;;;;;;;;;;;;;;;;;;:::o;8607:46::-;;;;:::o;12582:102::-;12637:7;12664:12;;12657:19;;12582:102;:::o;11875:441::-;11975:4;12031:17;11996:11;:19;12008:6;11996:19;;;;;;;;;;;;;;;:31;12016:10;11996:31;;;;;;;;;;;;;;;;:52;11992:257;;12108:6;12073:11;:19;12085:6;12073:19;;;;;;;;;;;;;;;:31;12093:10;12073:31;;;;;;;;;;;;;;;;:41;;12065:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;12231:6;12197:11;:19;12209:6;12197:19;;;;;;;;;;;;;;;:31;12217:10;12197:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;12163:11;:19;12175:6;12163:19;;;;;;;;;;;;;;;:31;12183:10;12163:31;;;;;;;;;;;;;;;:74;;;;11992:257;12268:40;12282:6;12290:9;12301:6;12268:13;:40::i;:::-;12261:47;;11875:441;;;;;:::o;13574:136::-;13627:7;13687:15;7555:42;13687:9;:15::i;:::-;13669;7482:42;13669:9;:15::i;:::-;13654:12;;:30;;;;:::i;:::-;:48;;;;:::i;:::-;13647:55;;13574:136;:::o;8960:93::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13417:149::-;13487:7;13542:16;;13527:12;;13514:10;:25;;;;:::i;:::-;:44;;;;:::i;:::-;13507:51;;13417:149;;;:::o;12692:78::-;12735:5;12760:2;12753:9;;12692:78;:::o;8730:32::-;;;;;;;;;;;;;:::o;13976:170::-;4736:13;:11;:13::i;:::-;14036:12:::1;14061:10;14053:24;;14085:21;14053:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14035:76;;;14130:7;14122:16;;;::::0;::::1;;4760:1;13976:170::o:0;15973:234::-;4736:13;:11;:13::i;:::-;16101:2:::1;16078:20;;:25;;;;;;;;;;;;;;;;;;16130:3;16114:13;;:19;;;;;;;;;;;;;;;;;;16165:2;16144:18;;:23;;;;;;;;;;;;;;;;;;16196:3;16178:15;;:21;;;;;;;;;;;;;;;;;;15973:234:::0;;;;:::o;16440:135::-;4736:13;:11;:13::i;:::-;16552:15:::1;16529:10;:20;16540:8;16529:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;16440:135:::0;;:::o;16341:91::-;4736:13;:11;:13::i;:::-;16422:2:::1;16406:13;;:18;;;;;;;;;;;;;;;;;;16341:91:::0;:::o;13269:140::-;13334:7;13389:12;;13370:16;;13361:6;:25;;;;:::i;:::-;:40;;;;:::i;:::-;13354:47;;13269:140;;;:::o;8861:92::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11581:122::-;11636:4;11660:35;11668:7;11677:17;11660:7;:35::i;:::-;11653:42;;11581:122;;;:::o;15711:119::-;4736:13;:11;:13::i;:::-;15816:6:::1;15794:11;:19;15806:6;15794:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;15711:119:::0;;:::o;12968:138::-;13034:7;13061:37;13081:7;:16;13089:7;13081:16;;;;;;;;;;;;;;;;13061:19;:37::i;:::-;13054:44;;12968:138;;;:::o;5498:103::-;4736:13;:11;:13::i;:::-;5563:30:::1;5590:1;5563:18;:30::i;:::-;5498:103::o:0;8377:52::-;;;;:::o;4850:87::-;4896:7;4923:6;;;;;;;;;;;4916:13;;4850:87;:::o;12871:89::-;12912:13;12945:7;12938:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12871:89;:::o;7908:126::-;7991:42;7908:126;:::o;11711:156::-;11791:4;11815:44;11829:10;11841:9;11852:6;11815:13;:44::i;:::-;11808:51;;11711:156;;;;:::o;9224:31::-;;;;;;;;;;;;;:::o;14457:1246::-;4736:13;:11;:13::i;:::-;14813:21:::1;14901:10;14885:13;14874:8;14856:15;14837:16;:34;;;;:::i;:::-;:45;;;;:::i;:::-;:61;;;;:::i;:::-;:74;;;;:::i;:::-;14813:98;;;;14922:22;15015:11;14998:14;14986:9;14967:16;14947:17;:36;;;;:::i;:::-;:48;;;;:::i;:::-;:65;;;;:::i;:::-;:79;;;;:::i;:::-;14922:104;;;;7633:2;15047:13;:24;;;;15039:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;7633:2;15112:14;:25;;;;15104:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;15182:242;;;;;;;;15213:16;15182:242;;;;;;15255:16;15182:242;;;;;;15290:16;15182:242;;;;;;15330:16;15182:242;;;;;;15367:10;15182:242;;;;;;15399:13;15182:242;;;;::::0;15173:6:::1;:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15447:248;;;;;;;;15478:17;15447:248;;;;;;15521:17;15447:248;;;;;;15557:17;15447:248;;;;;;15598:17;15447:248;;;;;;15636:11;15447:248;;;;;;15669:14;15447:248;;;;::::0;15437:7:::1;:258;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4760:1;;14457:1246:::0;;;;;;;;;;:::o;14154:131::-;4736:13;:11;:13::i;:::-;14211:66:::1;14233:4;14240:10;14252:24;14270:4;14252:9;:24::i;:::-;14211:13;:66::i;:::-;;14154:131::o:0;13114:147::-;13198:7;13225:11;:19;13237:6;13225:19;;;;;;;;;;;;;;;:28;13245:7;13225:28;;;;;;;;;;;;;;;;13218:35;;13114:147;;;;:::o;14293:156::-;4736:13;:11;:13::i;:::-;14399:8:::1;14384:12;;:23;;;;;;;;;;;;;;;;;;14434:7;14418:13;:23;;;;14293:156:::0;;:::o;16215:118::-;4736:13;:11;:13::i;:::-;16320:5:::1;16315:2;16300:12;;:17;;;;:::i;:::-;:25;;;;:::i;:::-;16285:12;:40;;;;16215:118:::0;:::o;5756:201::-;4736:13;:11;:13::i;:::-;5865:1:::1;5845:22;;:8;:22;;;;5837:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5921:28;5940:8;5921:18;:28::i;:::-;5756:201:::0;:::o;8041:40::-;;;:::o;15838:127::-;4736:13;:11;:13::i;:::-;15951:6:::1;15925:15;:23;15941:6;15925:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;15838:127:::0;;:::o;16841:1149::-;16933:4;16959:10;:21;16970:9;16959:21;;;;;;;;;;;;;;;;;;;;;;;;;16958:22;:45;;;;;16985:10;:18;16996:6;16985:18;;;;;;;;;;;;;;;;;;;;;;;;;16984:19;16958:45;16950:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;17036:6;;;;;;;;;;;17032:87;;;17066:41;17081:6;17089:9;17100:6;17066:14;:41::i;:::-;17059:48;;;;17032:87;17135:13;;;;;;;;;;;:41;;;;;17153:15;:23;17169:6;17153:23;;;;;;;;;;;;;;;;;;;;;;;;;17152:24;17135:41;:72;;;;;17181:15;:26;17197:9;17181:26;;;;;;;;;;;;;;;;;;;;;;;;;17180:27;17135:72;17131:180;;;17242:12;;17232:6;:22;;17224:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;17131:180;17327:17;:15;:17::i;:::-;17323:61;;;17361:11;:9;:11::i;:::-;17323:61;17396:24;17423:26;17442:6;17423:18;:26::i;:::-;17396:53;;17487:16;17468:7;:15;17476:6;17468:15;;;;;;;;;;;;;;;;:35;;17460:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17575:16;17557:7;:15;17565:6;17557:15;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;17539:7;:15;17547:6;17539:15;;;;;;;;;;;;;;;:52;;;;17604:26;17633:33;17648:6;17656:9;17633:14;:33::i;:::-;:170;;17787:16;17633:170;;;17682:89;17714:15;17704:25;;:6;:25;;;:40;;17739:5;17704:40;;;17732:4;17704:40;17746:6;17754:16;17682:21;:89::i;:::-;17633:170;17604:199;;17856:18;17835:7;:18;17843:9;17835:18;;;;;;;;;;;;;;;;:39;;;;:::i;:::-;17814:7;:18;17822:9;17814:18;;;;;;;;;;;;;;;:60;;;;17909:9;17892:68;;17901:6;17892:68;;;17920:39;17940:18;17920:19;:39::i;:::-;17892:68;;;;;;:::i;:::-;;;;;;;;17978:4;17971:11;;;;16841:1149;;;;;;:::o;5015:132::-;5090:12;:10;:12::i;:::-;5079:23;;:7;:5;:7::i;:::-;:23;;;5071:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5015:132::o;6117:191::-;6191:16;6210:6;;;;;;;;;;;6191:25;;6236:8;6227:6;;:17;;;;;;;;;;;;;;;;;;6291:8;6260:40;;6281:8;6260:40;;;;;;;;;;;;6117:191;;:::o;17998:455::-;18091:4;18108:24;18135:26;18154:6;18135:18;:26::i;:::-;18108:53;;18199:16;18180:7;:15;18188:6;18180:15;;;;;;;;;;;;;;;;:35;;18172:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18287:16;18269:7;:15;18277:6;18269:15;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;18251:7;:15;18259:6;18251:15;;;;;;;;;;;;;;;:52;;;;18356:16;18335:7;:18;18343:9;18335:18;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;18314:7;:18;18322:9;18314:18;;;;;;;;;;;;;;;:58;;;;18405:9;18388:35;;18397:6;18388:35;;;18416:6;18388:35;;;;;;:::i;:::-;;;;;;;;18441:4;18434:11;;;17998:455;;;;;:::o;19584:183::-;19634:4;19672:15;19658:29;;:10;:29;;;;:40;;;;;19692:6;;;;;;;;;;;19691:7;19658:40;:56;;;;;19702:12;;;;;;;;;;;19658:56;:101;;;;;19746:13;;19718:24;19736:4;19718:9;:24::i;:::-;:41;;19658:101;19651:108;;19584:183;:::o;19775:1413::-;9692:4;9683:6;;:13;;;;;;;;;;;;;;;;;;19825:20:::1;19848:7;19825:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;19868:23;19894:13;;19868:39;;19918:20;19976:9;:15;;;19941:50;;19959:9;:14;;;19941:32;;:15;:32;;;;:::i;:::-;:50;;;;:::i;:::-;19918:73;;20002:20;20043:12;20025:15;:30;;;;:::i;:::-;20002:53;;20066:49;7991:42;20102:12;20066:7;:49::i;:::-;;20145:59;20167:4;20174:15;;;;;;;;;;;20191:12;20145:13;:59::i;:::-;;20234:21;20272:1;20258:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20234:40;;20303:4;20285;20290:1;20285:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;7991:42;20329:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20319:4;20324:1;20319:7;;;;;;;;;;;;;;;;;;;;;:34;;;;;;;;;::::0;::::1;7991:42;20366:68;;;20449:12;20463:1;20466:4;20480;20487:15;20366:147;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20526:17;20546:21;20526:41;;20580:20;20644:9;:14;;;20603:55;;20621:9;:20;;;20603:38;;:9;:15;;;:38;;;;:::i;:::-;:55;;;;:::i;:::-;20580:78;;;;20669:26;20732:12;20710:9;:19;;;20698:31;;:9;:31;;;;:::i;:::-;:46;;;;:::i;:::-;20669:75;;20755:19;20804:12;20789:9;:12;;;20777:24;;:9;:24;;;;:::i;:::-;:39;;;;:::i;:::-;20755:61;;20827:24;20886:12;20866:9;:17;;;20854:29;;:9;:29;;;;:::i;:::-;:44;;;;:::i;:::-;20827:71;;20929:15;20957:20;;;;;;;;;;;20949:34;;20991:18;20949:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20928:86;;;21049:13;;;;;;;;;;;21041:27;;21076:11;21041:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21025:67;;;;;21127:18;;;;;;;;;;;21119:32;;21159:16;21119:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21103:77;;;;;9707:1;;;;;;;;;;;9728:5:::0;9719:6;;:14;;;;;;;;;;;;;;;;;;19775:1413::o;21196:161::-;21278:4;21303:11;:19;21315:6;21303:19;;;;;;;;;;;;;;;;;;;;;;;;;21302:20;:47;;;;;21327:11;:22;21339:9;21327:22;;;;;;;;;;;;;;;;;;;;;;;;;21326:23;21302:47;21295:54;;21196:161;;;;:::o;18461:1115::-;18565:7;18585:19;18607:6;18585:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18624:20;18647:7;18624:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18667:27;18720:4;18710:14;;:6;:14;;;:99;;18806:3;18788:9;:15;;;18769:34;;:16;:34;;;;:::i;:::-;:40;;;;:::i;:::-;18710:99;;;18763:3;18746:8;:14;;;18727:33;;:16;:33;;;;:::i;:::-;:39;;;;:::i;:::-;18710:99;18667:142;;18842:27;18882:4;18872:14;;:6;:14;;;:164;;19021:9;:15;;;18976:60;;18998:9;:20;;;18976:42;;:19;:42;;;;:::i;:::-;:60;;;;:::i;:::-;18872:164;;;18946:8;:14;;;18902:58;;18924:8;:19;;;18902:41;;:19;:41;;;;:::i;:::-;:58;;;;:::i;:::-;18872:164;18842:194;;19087:19;19068:16;;:38;;;;:::i;:::-;19049:16;:57;;;;19141:29;19195:19;19173;:41;;;;:::i;:::-;19141:73;;19253:1;19229:21;:25;19225:226;;;19321:21;19296:7;:22;19312:4;19296:22;;;;;;;;;;;;;;;;:46;;;;:::i;:::-;19271:7;:22;19287:4;19271:22;;;;;;;;;;;;;;;:71;;;;19389:4;19364:75;;19373:6;19364:75;;;19396:42;19416:21;19396:19;:42::i;:::-;19364:75;;;;;;:::i;:::-;;;;;;;;19225:226;19466:46;19474:19;19495:16;;19466:46;;;;;;;:::i;:::-;;;;;;;;19549:19;19530:16;:38;;;;:::i;:::-;19523:45;;;;;;;18461:1115;;;;;:::o;3559:98::-;3612:7;3639:10;3632:17;;3559:98;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:139::-;;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;492:87;;;;:::o;585:135::-;;667:6;654:20;645:29;;683:31;708:5;683:31;:::i;:::-;635:85;;;;:::o;726:262::-;;834:2;822:9;813:7;809:23;805:32;802:2;;;850:1;847;840:12;802:2;893:1;918:53;963:7;954:6;943:9;939:22;918:53;:::i;:::-;908:63;;864:117;792:196;;;;:::o;994:284::-;;1113:2;1101:9;1092:7;1088:23;1084:32;1081:2;;;1129:1;1126;1119:12;1081:2;1172:1;1197:64;1253:7;1244:6;1233:9;1229:22;1197:64;:::i;:::-;1187:74;;1143:128;1071:207;;;;:::o;1284:407::-;;;1409:2;1397:9;1388:7;1384:23;1380:32;1377:2;;;1425:1;1422;1415:12;1377:2;1468:1;1493:53;1538:7;1529:6;1518:9;1514:22;1493:53;:::i;:::-;1483:63;;1439:117;1595:2;1621:53;1666:7;1657:6;1646:9;1642:22;1621:53;:::i;:::-;1611:63;;1566:118;1367:324;;;;;:::o;1697:698::-;;;;;1856:3;1844:9;1835:7;1831:23;1827:33;1824:2;;;1873:1;1870;1863:12;1824:2;1916:1;1941:53;1986:7;1977:6;1966:9;1962:22;1941:53;:::i;:::-;1931:63;;1887:117;2043:2;2069:53;2114:7;2105:6;2094:9;2090:22;2069:53;:::i;:::-;2059:63;;2014:118;2171:2;2197:53;2242:7;2233:6;2222:9;2218:22;2197:53;:::i;:::-;2187:63;;2142:118;2299:2;2325:53;2370:7;2361:6;2350:9;2346:22;2325:53;:::i;:::-;2315:63;;2270:118;1814:581;;;;;;;:::o;2401:552::-;;;;2543:2;2531:9;2522:7;2518:23;2514:32;2511:2;;;2559:1;2556;2549:12;2511:2;2602:1;2627:53;2672:7;2663:6;2652:9;2648:22;2627:53;:::i;:::-;2617:63;;2573:117;2729:2;2755:53;2800:7;2791:6;2780:9;2776:22;2755:53;:::i;:::-;2745:63;;2700:118;2857:2;2883:53;2928:7;2919:6;2908:9;2904:22;2883:53;:::i;:::-;2873:63;;2828:118;2501:452;;;;;:::o;2959:401::-;;;3081:2;3069:9;3060:7;3056:23;3052:32;3049:2;;;3097:1;3094;3087:12;3049:2;3140:1;3165:53;3210:7;3201:6;3190:9;3186:22;3165:53;:::i;:::-;3155:63;;3111:117;3267:2;3293:50;3335:7;3326:6;3315:9;3311:22;3293:50;:::i;:::-;3283:60;;3238:115;3039:321;;;;;:::o;3366:407::-;;;3491:2;3479:9;3470:7;3466:23;3462:32;3459:2;;;3507:1;3504;3497:12;3459:2;3550:1;3575:53;3620:7;3611:6;3600:9;3596:22;3575:53;:::i;:::-;3565:63;;3521:117;3677:2;3703:53;3748:7;3739:6;3728:9;3724:22;3703:53;:::i;:::-;3693:63;;3648:118;3449:324;;;;;:::o;3779:256::-;;3884:2;3872:9;3863:7;3859:23;3855:32;3852:2;;;3900:1;3897;3890:12;3852:2;3943:1;3968:50;4010:7;4001:6;3990:9;3986:22;3968:50;:::i;:::-;3958:60;;3914:114;3842:193;;;;:::o;4041:401::-;;;4163:2;4151:9;4142:7;4138:23;4134:32;4131:2;;;4179:1;4176;4169:12;4131:2;4222:1;4247:50;4289:7;4280:6;4269:9;4265:22;4247:50;:::i;:::-;4237:60;;4193:114;4346:2;4372:53;4417:7;4408:6;4397:9;4393:22;4372:53;:::i;:::-;4362:63;;4317:118;4121:321;;;;;:::o;4448:262::-;;4556:2;4544:9;4535:7;4531:23;4527:32;4524:2;;;4572:1;4569;4562:12;4524:2;4615:1;4640:53;4685:7;4676:6;4665:9;4661:22;4640:53;:::i;:::-;4630:63;;4586:117;4514:196;;;;:::o;4716:1534::-;;;;;;;;;;;4957:3;4945:9;4936:7;4932:23;4928:33;4925:2;;;4974:1;4971;4964:12;4925:2;5017:1;5042:51;5085:7;5076:6;5065:9;5061:22;5042:51;:::i;:::-;5032:61;;4988:115;5142:2;5168:51;5211:7;5202:6;5191:9;5187:22;5168:51;:::i;:::-;5158:61;;5113:116;5268:2;5294:51;5337:7;5328:6;5317:9;5313:22;5294:51;:::i;:::-;5284:61;;5239:116;5394:2;5420:51;5463:7;5454:6;5443:9;5439:22;5420:51;:::i;:::-;5410:61;;5365:116;5520:3;5547:51;5590:7;5581:6;5570:9;5566:22;5547:51;:::i;:::-;5537:61;;5491:117;5647:3;5674:51;5717:7;5708:6;5697:9;5693:22;5674:51;:::i;:::-;5664:61;;5618:117;5774:3;5801:51;5844:7;5835:6;5824:9;5820:22;5801:51;:::i;:::-;5791:61;;5745:117;5901:3;5928:51;5971:7;5962:6;5951:9;5947:22;5928:51;:::i;:::-;5918:61;;5872:117;6028:3;6055:51;6098:7;6089:6;6078:9;6074:22;6055:51;:::i;:::-;6045:61;;5999:117;6155:3;6182:51;6225:7;6216:6;6205:9;6201:22;6182:51;:::i;:::-;6172:61;;6126:117;4915:1335;;;;;;;;;;;;;:::o;6256:179::-;;6346:46;6388:3;6380:6;6346:46;:::i;:::-;6424:4;6419:3;6415:14;6401:28;;6336:99;;;;:::o;6441:108::-;6518:24;6536:5;6518:24;:::i;:::-;6513:3;6506:37;6496:53;;:::o;6555:118::-;6642:24;6660:5;6642:24;:::i;:::-;6637:3;6630:37;6620:53;;:::o;6709:732::-;;6857:54;6905:5;6857:54;:::i;:::-;6927:86;7006:6;7001:3;6927:86;:::i;:::-;6920:93;;7037:56;7087:5;7037:56;:::i;:::-;7116:7;7147:1;7132:284;7157:6;7154:1;7151:13;7132:284;;;7233:6;7227:13;7260:63;7319:3;7304:13;7260:63;:::i;:::-;7253:70;;7346:60;7399:6;7346:60;:::i;:::-;7336:70;;7192:224;7179:1;7176;7172:9;7167:14;;7132:284;;;7136:14;7432:3;7425:10;;6833:608;;;;;;;:::o;7447:109::-;7528:21;7543:5;7528:21;:::i;:::-;7523:3;7516:34;7506:50;;:::o;7562:183::-;7675:63;7732:5;7675:63;:::i;:::-;7670:3;7663:76;7653:92;;:::o;7751:147::-;7846:45;7885:5;7846:45;:::i;:::-;7841:3;7834:58;7824:74;;:::o;7904:364::-;;8020:39;8053:5;8020:39;:::i;:::-;8075:71;8139:6;8134:3;8075:71;:::i;:::-;8068:78;;8155:52;8200:6;8195:3;8188:4;8181:5;8177:16;8155:52;:::i;:::-;8232:29;8254:6;8232:29;:::i;:::-;8227:3;8223:39;8216:46;;7996:272;;;;;:::o;8274:370::-;;8437:67;8501:2;8496:3;8437:67;:::i;:::-;8430:74;;8534:34;8530:1;8525:3;8521:11;8514:55;8600:8;8595:2;8590:3;8586:12;8579:30;8635:2;8630:3;8626:12;8619:19;;8420:224;;;:::o;8650:327::-;;8813:67;8877:2;8872:3;8813:67;:::i;:::-;8806:74;;8910:31;8906:1;8901:3;8897:11;8890:52;8968:2;8963:3;8959:12;8952:19;;8796:181;;;:::o;8983:372::-;;9146:67;9210:2;9205:3;9146:67;:::i;:::-;9139:74;;9243:34;9239:1;9234:3;9230:11;9223:55;9309:10;9304:2;9299:3;9295:12;9288:32;9346:2;9341:3;9337:12;9330:19;;9129:226;;;:::o;9361:315::-;;9524:67;9588:2;9583:3;9524:67;:::i;:::-;9517:74;;9621:19;9617:1;9612:3;9608:11;9601:40;9667:2;9662:3;9658:12;9651:19;;9507:169;;;:::o;9682:330::-;;9845:67;9909:2;9904:3;9845:67;:::i;:::-;9838:74;;9942:34;9938:1;9933:3;9929:11;9922:55;10003:2;9998:3;9994:12;9987:19;;9828:184;;;:::o;10018:318::-;;10181:67;10245:2;10240:3;10181:67;:::i;:::-;10174:74;;10278:22;10274:1;10269:3;10265:11;10258:43;10327:2;10322:3;10318:12;10311:19;;10164:172;;;:::o;10342:297::-;;10522:83;10603:1;10598:3;10522:83;:::i;:::-;10515:90;;10631:1;10626:3;10622:11;10615:18;;10505:134;;;:::o;10645:316::-;;10808:67;10872:2;10867:3;10808:67;:::i;:::-;10801:74;;10905:20;10901:1;10896:3;10892:11;10885:41;10952:2;10947:3;10943:12;10936:19;;10791:170;;;:::o;10967:309::-;;11130:67;11194:2;11189:3;11130:67;:::i;:::-;11123:74;;11227:13;11223:1;11218:3;11214:11;11207:34;11267:2;11262:3;11258:12;11251:19;;11113:163;;;:::o;11282:118::-;11369:24;11387:5;11369:24;:::i;:::-;11364:3;11357:37;11347:53;;:::o;11406:118::-;11493:24;11511:5;11493:24;:::i;:::-;11488:3;11481:37;11471:53;;:::o;11530:112::-;11613:22;11629:5;11613:22;:::i;:::-;11608:3;11601:35;11591:51;;:::o;11648:379::-;;11854:147;11997:3;11854:147;:::i;:::-;11847:154;;12018:3;12011:10;;11836:191;;;:::o;12033:222::-;;12164:2;12153:9;12149:18;12141:26;;12177:71;12245:1;12234:9;12230:17;12221:6;12177:71;:::i;:::-;12131:124;;;;:::o;12261:210::-;;12386:2;12375:9;12371:18;12363:26;;12399:65;12461:1;12450:9;12446:17;12437:6;12399:65;:::i;:::-;12353:118;;;;:::o;12477:274::-;;12634:2;12623:9;12619:18;12611:26;;12647:97;12741:1;12730:9;12726:17;12717:6;12647:97;:::i;:::-;12601:150;;;;:::o;12757:313::-;;12908:2;12897:9;12893:18;12885:26;;12957:9;12951:4;12947:20;12943:1;12932:9;12928:17;12921:47;12985:78;13058:4;13049:6;12985:78;:::i;:::-;12977:86;;12875:195;;;;:::o;13076:419::-;;13280:2;13269:9;13265:18;13257:26;;13329:9;13323:4;13319:20;13315:1;13304:9;13300:17;13293:47;13357:131;13483:4;13357:131;:::i;:::-;13349:139;;13247:248;;;:::o;13501:419::-;;13705:2;13694:9;13690:18;13682:26;;13754:9;13748:4;13744:20;13740:1;13729:9;13725:17;13718:47;13782:131;13908:4;13782:131;:::i;:::-;13774:139;;13672:248;;;:::o;13926:419::-;;14130:2;14119:9;14115:18;14107:26;;14179:9;14173:4;14169:20;14165:1;14154:9;14150:17;14143:47;14207:131;14333:4;14207:131;:::i;:::-;14199:139;;14097:248;;;:::o;14351:419::-;;14555:2;14544:9;14540:18;14532:26;;14604:9;14598:4;14594:20;14590:1;14579:9;14575:17;14568:47;14632:131;14758:4;14632:131;:::i;:::-;14624:139;;14522:248;;;:::o;14776:419::-;;14980:2;14969:9;14965:18;14957:26;;15029:9;15023:4;15019:20;15015:1;15004:9;15000:17;14993:47;15057:131;15183:4;15057:131;:::i;:::-;15049:139;;14947:248;;;:::o;15201:419::-;;15405:2;15394:9;15390:18;15382:26;;15454:9;15448:4;15444:20;15440:1;15429:9;15425:17;15418:47;15482:131;15608:4;15482:131;:::i;:::-;15474:139;;15372:248;;;:::o;15626:419::-;;15830:2;15819:9;15815:18;15807:26;;15879:9;15873:4;15869:20;15865:1;15854:9;15850:17;15843:47;15907:131;16033:4;15907:131;:::i;:::-;15899:139;;15797:248;;;:::o;16051:419::-;;16255:2;16244:9;16240:18;16232:26;;16304:9;16298:4;16294:20;16290:1;16279:9;16275:17;16268:47;16332:131;16458:4;16332:131;:::i;:::-;16324:139;;16222:248;;;:::o;16476:222::-;;16607:2;16596:9;16592:18;16584:26;;16620:71;16688:1;16677:9;16673:17;16664:6;16620:71;:::i;:::-;16574:124;;;;:::o;16704:831::-;;17005:3;16994:9;16990:19;16982:27;;17019:71;17087:1;17076:9;17072:17;17063:6;17019:71;:::i;:::-;17100:80;17176:2;17165:9;17161:18;17152:6;17100:80;:::i;:::-;17227:9;17221:4;17217:20;17212:2;17201:9;17197:18;17190:48;17255:108;17358:4;17349:6;17255:108;:::i;:::-;17247:116;;17373:72;17441:2;17430:9;17426:18;17417:6;17373:72;:::i;:::-;17455:73;17523:3;17512:9;17508:19;17499:6;17455:73;:::i;:::-;16972:563;;;;;;;;:::o;17541:332::-;;17700:2;17689:9;17685:18;17677:26;;17713:71;17781:1;17770:9;17766:17;17757:6;17713:71;:::i;:::-;17794:72;17862:2;17851:9;17847:18;17838:6;17794:72;:::i;:::-;17667:206;;;;;:::o;17879:214::-;;18006:2;17995:9;17991:18;17983:26;;18019:67;18083:1;18072:9;18068:17;18059:6;18019:67;:::i;:::-;17973:120;;;;:::o;18099:735::-;;18350:3;18339:9;18335:19;18327:27;;18364:67;18428:1;18417:9;18413:17;18404:6;18364:67;:::i;:::-;18441:68;18505:2;18494:9;18490:18;18481:6;18441:68;:::i;:::-;18519;18583:2;18572:9;18568:18;18559:6;18519:68;:::i;:::-;18597;18661:2;18650:9;18646:18;18637:6;18597:68;:::i;:::-;18675:69;18739:3;18728:9;18724:19;18715:6;18675:69;:::i;:::-;18754:73;18822:3;18811:9;18807:19;18798:6;18754:73;:::i;:::-;18317:517;;;;;;;;;:::o;18840:132::-;;18930:3;18922:11;;18960:4;18955:3;18951:14;18943:22;;18912:60;;;:::o;18978:114::-;;19079:5;19073:12;19063:22;;19052:40;;;:::o;19098:99::-;;19184:5;19178:12;19168:22;;19157:40;;;:::o;19203:113::-;;19305:4;19300:3;19296:14;19288:22;;19278:38;;;:::o;19322:184::-;;19455:6;19450:3;19443:19;19495:4;19490:3;19486:14;19471:29;;19433:73;;;;:::o;19512:147::-;;19650:3;19635:18;;19625:34;;;;:::o;19665:169::-;;19783:6;19778:3;19771:19;19823:4;19818:3;19814:14;19799:29;;19761:73;;;;:::o;19840:305::-;;19899:20;19917:1;19899:20;:::i;:::-;19894:25;;19933:20;19951:1;19933:20;:::i;:::-;19928:25;;20087:1;20019:66;20015:74;20012:1;20009:81;20006:2;;;20093:18;;:::i;:::-;20006:2;20137:1;20134;20130:9;20123:16;;19884:261;;;;:::o;20151:237::-;;20208:18;20224:1;20208:18;:::i;:::-;20203:23;;20240:18;20256:1;20240:18;:::i;:::-;20235:23;;20330:1;20324:4;20320:12;20317:1;20314:19;20311:2;;;20336:18;;:::i;:::-;20311:2;20380:1;20377;20373:9;20366:16;;20193:195;;;;:::o;20394:185::-;;20451:20;20469:1;20451:20;:::i;:::-;20446:25;;20485:20;20503:1;20485:20;:::i;:::-;20480:25;;20524:1;20514:2;;20529:18;;:::i;:::-;20514:2;20571:1;20568;20564:9;20559:14;;20436:143;;;;:::o;20585:348::-;;20648:20;20666:1;20648:20;:::i;:::-;20643:25;;20682:20;20700:1;20682:20;:::i;:::-;20677:25;;20870:1;20802:66;20798:74;20795:1;20792:81;20787:1;20780:9;20773:17;20769:105;20766:2;;;20877:18;;:::i;:::-;20766:2;20925:1;20922;20918:9;20907:20;;20633:300;;;;:::o;20939:191::-;;20999:20;21017:1;20999:20;:::i;:::-;20994:25;;21033:20;21051:1;21033:20;:::i;:::-;21028:25;;21072:1;21069;21066:8;21063:2;;;21077:18;;:::i;:::-;21063:2;21122:1;21119;21115:9;21107:17;;20984:146;;;;:::o;21136:191::-;;21196:20;21214:1;21196:20;:::i;:::-;21191:25;;21230:20;21248:1;21230:20;:::i;:::-;21225:25;;21269:1;21266;21263:8;21260:2;;;21274:18;;:::i;:::-;21260:2;21319:1;21316;21312:9;21304:17;;21181:146;;;;:::o;21333:96::-;;21399:24;21417:5;21399:24;:::i;:::-;21388:35;;21378:51;;;:::o;21435:90::-;;21512:5;21505:13;21498:21;21487:32;;21477:48;;;:::o;21531:118::-;;21608:34;21601:5;21597:46;21586:57;;21576:73;;;:::o;21655:126::-;;21732:42;21725:5;21721:54;21710:65;;21700:81;;;:::o;21787:77::-;;21853:5;21842:16;;21832:32;;;:::o;21870:86::-;;21945:4;21938:5;21934:16;21923:27;;21913:43;;;:::o;21962:178::-;;22071:63;22128:5;22071:63;:::i;:::-;22058:76;;22048:92;;;:::o;22146:139::-;;22255:24;22273:5;22255:24;:::i;:::-;22242:37;;22232:53;;;:::o;22291:121::-;;22382:24;22400:5;22382:24;:::i;:::-;22369:37;;22359:53;;;:::o;22418:307::-;22486:1;22496:113;22510:6;22507:1;22504:13;22496:113;;;22595:1;22590:3;22586:11;22580:18;22576:1;22571:3;22567:11;22560:39;22532:2;22529:1;22525:10;22520:15;;22496:113;;;22627:6;22624:1;22621:13;22618:2;;;22707:1;22698:6;22693:3;22689:16;22682:27;22618:2;22467:258;;;;:::o;22731:320::-;;22812:1;22806:4;22802:12;22792:22;;22859:1;22853:4;22849:12;22880:18;22870:2;;22936:4;22928:6;22924:17;22914:27;;22870:2;22998;22990:6;22987:14;22967:18;22964:38;22961:2;;;23017:18;;:::i;:::-;22961:2;22782:269;;;;:::o;23057:180::-;23105:77;23102:1;23095:88;23202:4;23199:1;23192:15;23226:4;23223:1;23216:15;23243:180;23291:77;23288:1;23281:88;23388:4;23385:1;23378:15;23412:4;23409:1;23402:15;23429:180;23477:77;23474:1;23467:88;23574:4;23571:1;23564:15;23598:4;23595:1;23588:15;23615:102;;23707:2;23703:7;23698:2;23691:5;23687:14;23683:28;23673:38;;23663:54;;;:::o;23723:122::-;23796:24;23814:5;23796:24;:::i;:::-;23789:5;23786:35;23776:2;;23835:1;23832;23825:12;23776:2;23766:79;:::o;23851:116::-;23921:21;23936:5;23921:21;:::i;:::-;23914:5;23911:32;23901:2;;23957:1;23954;23947:12;23901:2;23891:76;:::o;23973:122::-;24046:24;24064:5;24046:24;:::i;:::-;24039:5;24036:35;24026:2;;24085:1;24082;24075:12;24026:2;24016:79;:::o;24101:118::-;24172:22;24188:5;24172:22;:::i;:::-;24165:5;24162:33;24152:2;;24209:1;24206;24199:12;24152:2;24142:77;:::o

Swarm Source

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