ETH Price: $2,515.62 (-5.94%)

Token

Vegan Rob Token (VRT)
 

Overview

Max Total Supply

967,494,781,042.57663102559670357 VRT

Holders

133

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
14,000,000,000 VRT

Value
$0.00
0x6566a36d5fE34986bc0f283A4e8C9BEf0F5a1793
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:
VRT

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-05
*/

// SPDX-License-Identifier: UNLICENSED

/*

██╗░░░██╗███████╗░██████╗░░█████╗░███╗░░██╗  ██████╗░░█████╗░██████╗░██╗░██████╗  ████████╗░█████╗░██╗░░██╗███████╗███╗░░██╗
██║░░░██║██╔════╝██╔════╝░██╔══██╗████╗░██║  ██╔══██╗██╔══██╗██╔══██╗╚█║██╔════╝  ╚══██╔══╝██╔══██╗██║░██╔╝██╔════╝████╗░██║
╚██╗░██╔╝█████╗░░██║░░██╗░███████║██╔██╗██║  ██████╔╝██║░░██║██████╦╝░╚╝╚█████╗░  ░░░██║░░░██║░░██║█████═╝░█████╗░░██╔██╗██║
░╚████╔╝░██╔══╝░░██║░░╚██╗██╔══██║██║╚████║  ██╔══██╗██║░░██║██╔══██╗░░░░╚═══██╗  ░░░██║░░░██║░░██║██╔═██╗░██╔══╝░░██║╚████║
░░╚██╔╝░░███████╗╚██████╔╝██║░░██║██║░╚███║  ██║░░██║╚█████╔╝██████╦╝░░░██████╔╝  ░░░██║░░░╚█████╔╝██║░╚██╗███████╗██║░╚███║
░░░╚═╝░░░╚══════╝░╚═════╝░╚═╝░░╚═╝╚═╝░░╚══╝  ╚═╝░░╚═╝░╚════╝░╚═════╝░░░░╚═════╝░  ░░░╚═╝░░░░╚════╝░╚═╝░░╚═╝╚══════╝╚═╝░░╚══╝


*/


pragma solidity ^0.8.7;

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

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

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor ()  {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

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

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

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

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

interface IERC20 {
    /**
     * @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 `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, 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 `sender` to `recipient` 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 sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {

    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * 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 value {ERC20} uses, unless this function is
     * 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:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, 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}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), 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}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is 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:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        _beforeTokenTransfer(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, 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 = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(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);

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(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 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 to 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 {}
}

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

    IUniswapV2Router02 public uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool    private swapping;

    uint256 public maxBuyTxAmount     =  10**10 * 10**18;
    uint256 public swapTokensAtAmount =  10**10 * 10**18;

    address public devWallet      = 0x32Cc0E6B14E6Ce74601d33d901439EbD29E69255;
    address public snackWallet    = 0x65b29476ad1604818bE1CE74d86B0C1aC501D467;

    uint8 public sell_liquidityFee = 30;
    uint8 public sell_devFee       = 30;
    uint8 public sell_protocolFee  = 30;
    uint8 public sell_burnFee      = 10;

    uint8 public buy_liquidityFee = 15;
    uint8 public buy_devFee       = 15;
    uint8 public buy_protocolFee  = 15;
    uint8 public buy_burnFee      = 5;

    mapping (address => bool) private _isExcluded;

    mapping (address => bool) public _isBlacklisted;

    bool private isTradingEnabled;

    uint256 private startTime;

    constructor()  ERC20("Vegan Rob Token", "VRT") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // pancakeswap address : 0x10ED43C718714eb63d5aA57B78B54704E256024E
        //  uniswap address    : 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;
        _isExcluded[owner()] = true;
        _isExcluded[address(this)] = true;
        _isExcluded[devWallet] = true;
        _isExcluded[snackWallet] = true;
        _isBlacklisted[address(0)] = true;
        _mint(owner(),  10**12 * 10**18);
    }

    receive() external payable {
    }


    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(!_isBlacklisted[from] && !_isBlacklisted[to], "To or From address is blacklisted.");

        if (!isTradingEnabled) {
            require(_isExcluded[to] || _isExcluded[from], "Trading is not yet enabled. Be patient!");
        } else if (block.timestamp - startTime < 600 && from == uniswapV2Pair) {
            require(amount <= maxBuyTxAmount, "Over the max buy amount.");
        }

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

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if(
            canSwap &&
            !swapping &&
            from != uniswapV2Pair &&
            from != owner() &&
            to != owner()
        ) {
            swapping = true;
            uint256 swapTokens = contractTokenBalance.mul(30).div(100);
            swapAndLiquify(swapTokens);
            uint256 burnTokens = balanceOf(address(this)).div(7);
            _burn(address(this), burnTokens);
            uint256 sellTokens = balanceOf(address(this));
            swapAndSendDividends(sellTokens);
            swapping = false;
        }

        bool takeFee = !swapping;

        if(_isExcluded[from] || _isExcluded[to]) {
            takeFee = false;
        }

        if (takeFee){

            uint8  liquidityFee = 0;
            uint8  devFee = 0;
            uint8  protocolFee = 0;
            uint8  burnFee = 0;
            
            if (from == uniswapV2Pair) {
                liquidityFee = buy_liquidityFee;
                devFee = buy_devFee;
                protocolFee = buy_protocolFee;
                burnFee = buy_burnFee;
            } else if (to == uniswapV2Pair){
                liquidityFee = sell_liquidityFee;
                devFee =sell_devFee;
                protocolFee = sell_protocolFee;
                burnFee = sell_burnFee;
            } 
            
        uint256 fees = amount.mul(liquidityFee + devFee + protocolFee + burnFee).div(1000);
        amount = amount.sub(fees);
        super._transfer(from, address(this), fees);
        }

        super._transfer(from, to, amount);
    }

    function swapAndLiquify(uint256 tokens) private {
        uint256 half = tokens.div(2);
        uint256 otherHalf = tokens.sub(half);
        uint256 initialBalance = address(this).balance;
        swapTokensForEth(half);
        uint256 newBalance = address(this).balance.sub(initialBalance);
        addLiquidity(otherHalf, newBalance);
    }

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

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

    function swapAndSendDividends(uint256 tokens) private {
        swapTokensForEth(tokens);
        uint256 ethBalance = address(this).balance;
        uint256 half       = ethBalance.div(2);
        uint256 otherHalf  = ethBalance.sub(half);
        payable(devWallet).transfer(half);
        payable(snackWallet).transfer(otherHalf);
    }

    function setBlacklist(address account, bool value) external onlyOwner {
        _isBlacklisted[account] = value;
    }

    function enableTrading() external onlyOwner {
        require(!isTradingEnabled, "already enabled");
        isTradingEnabled = true;
        startTime = block.timestamp;
    }

    function disableTrading () external onlyOwner {
        require(isTradingEnabled, "already disabled");
        isTradingEnabled = false;
    }

    function setSwapAtAmount(uint256 amount) external onlyOwner {
        swapTokensAtAmount = amount;
    }

    function setMaxTxAmount(uint256 amount) external onlyOwner {
        maxBuyTxAmount = amount;
    }


    function setDevWallet(address _address) external onlyOwner {
        _isExcluded[devWallet] = false;
        devWallet = _address;
        _isExcluded[devWallet] = true;
    }

    function changeOwner (address _address) external onlyOwner{
        _isExcluded[_address] = false;
        transferOwnership(_address);
        _isExcluded[_address] = true;
    }

    function setSnackWallet (address _address) external onlyOwner{
        _isExcluded[snackWallet] = false;
        snackWallet = _address;
        _isExcluded[snackWallet] = true;
    }

    function setExcludeWallet (address _address, bool _value) external onlyOwner{
        _isExcluded[_address] = _value;
    }
}

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":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","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":"buy_burnFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buy_devFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buy_liquidityFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buy_protocolFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"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":"maxBuyTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sell_burnFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sell_devFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sell_liquidityFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sell_protocolFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"setExcludeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setSnackWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snackWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526b204fce5e3e250261100000006007556b204fce5e3e250261100000006008557332cc0e6b14e6ce74601d33d901439ebd29e69255600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507365b29476ad1604818be1ce74d86b0c1ac501d467600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601e600a60146101000a81548160ff021916908360ff160217905550601e600a60156101000a81548160ff021916908360ff160217905550601e600a60166101000a81548160ff021916908360ff160217905550600a8060176101000a81548160ff021916908360ff160217905550600f600a60186101000a81548160ff021916908360ff160217905550600f600a60196101000a81548160ff021916908360ff160217905550600f600a601a6101000a81548160ff021916908360ff1602179055506005600a601b6101000a81548160ff021916908360ff160217905550348015620001ba57600080fd5b506040518060400160405280600f81526020017f566567616e20526f6220546f6b656e00000000000000000000000000000000008152506040518060400160405280600381526020017f565254000000000000000000000000000000000000000000000000000000000081525081600390805190602001906200023f929190620009c0565b50806004908051906020019062000258929190620009c0565b50505060006200026d6200077760201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200036e57600080fd5b505afa15801562000383573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a9919062000a87565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200040c57600080fd5b505afa15801562000421573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000447919062000a87565b6040518363ffffffff1660e01b81526004016200046692919062000b29565b602060405180830381600087803b1580156200048157600080fd5b505af115801562000496573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004bc919062000a87565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250506001600b60006200054c6200077f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200076f620007556200077f60201b60201c565b6c0c9f2c9cd04674edea40000000620007a960201b60201c565b505062000d68565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200081c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008139062000b78565b60405180910390fd5b62000830600083836200095860201b60201c565b6200084c816002546200095d60201b62001c3e1790919060201c565b600281905550620008aa816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200095d60201b62001c3e1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200094c919062000b9a565b60405180910390a35050565b505050565b60008082846200096e919062000bc8565b905083811015620009b6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009ad9062000b56565b60405180910390fd5b8091505092915050565b828054620009ce9062000c63565b90600052602060002090601f016020900481019282620009f2576000855562000a3e565b82601f1062000a0d57805160ff191683800117855562000a3e565b8280016001018555821562000a3e579182015b8281111562000a3d57825182559160200191906001019062000a20565b5b50905062000a4d919062000a51565b5090565b5b8082111562000a6c57600081600090555060010162000a52565b5090565b60008151905062000a818162000d4e565b92915050565b60006020828403121562000aa05762000a9f62000cf7565b5b600062000ab08482850162000a70565b91505092915050565b62000ac48162000c25565b82525050565b600062000ad9601b8362000bb7565b915062000ae68262000cfc565b602082019050919050565b600062000b00601f8362000bb7565b915062000b0d8262000d25565b602082019050919050565b62000b238162000c59565b82525050565b600060408201905062000b40600083018562000ab9565b62000b4f602083018462000ab9565b9392505050565b6000602082019050818103600083015262000b718162000aca565b9050919050565b6000602082019050818103600083015262000b938162000af1565b9050919050565b600060208201905062000bb1600083018462000b18565b92915050565b600082825260208201905092915050565b600062000bd58262000c59565b915062000be28362000c59565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000c1a5762000c1962000c99565b5b828201905092915050565b600062000c328262000c39565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000600282049050600182168062000c7c57607f821691505b6020821081141562000c935762000c9262000cc8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b62000d598162000c25565b811462000d6557600080fd5b50565b60805160601c61412262000da36000396000818161112b0152818161206601528181612154015281816123a2015261244301526141226000f3fe6080604052600436106102295760003560e01c80637462a96311610123578063a9059cbb116100ab578063dd62ed3e1161006f578063dd62ed3e146107f6578063e2f4560514610833578063ec28438a1461085e578063ee37b56214610887578063f2fde38b146108b257610230565b8063a9059cbb1461070f578063c546cf121461074c578063d62adfe414610777578063d9e2b9f6146107a2578063db8ee65f146107cb57610230565b806395d89b41116100f257806395d89b4114610628578063a457c2d714610653578063a6f9dae114610690578063a7da8e27146106b9578063a87e5da4146106e457610230565b80637462a963146105905780638a8c523c146105bb5780638da5cb5b146105d25780638ea5220f146105fd57610230565b806323b872dd116101b157806349bd5a5e1161017557806349bd5a5e146104bd5780636402511e146104e85780636b6113681461051157806370a082311461053c578063715018a61461057957610230565b806323b872dd146103c4578063255412d91461040157806327fc1d5f1461042c578063313ce56714610455578063395093511461048057610230565b80631694505e116101f85780631694505e146102f157806317700f011461031c57806318160ddd146103335780631cdd3be31461035e5780631f53ac021461039b57610230565b806304d8efbe1461023557806306fdde0314610260578063095ea7b31461028b578063153b0d1e146102c857610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a6108db565b60405161025791906138bf565b60405180910390f35b34801561026c57600080fd5b506102756108ee565b6040516102829190613668565b60405180910390f35b34801561029757600080fd5b506102b260048036038101906102ad91906131f4565b610980565b6040516102bf9190613632565b60405180910390f35b3480156102d457600080fd5b506102ef60048036038101906102ea91906131b4565b61099e565b005b3480156102fd57600080fd5b50610306610a90565b604051610313919061364d565b60405180910390f35b34801561032857600080fd5b50610331610ab6565b005b34801561033f57600080fd5b50610348610bb9565b604051610355919061384a565b60405180910390f35b34801561036a57600080fd5b50610385600480360381019061038091906130c7565b610bc3565b6040516103929190613632565b60405180910390f35b3480156103a757600080fd5b506103c260048036038101906103bd91906130c7565b610be3565b005b3480156103d057600080fd5b506103eb60048036038101906103e69190613161565b610db2565b6040516103f89190613632565b60405180910390f35b34801561040d57600080fd5b50610416610e8b565b60405161042391906138bf565b60405180910390f35b34801561043857600080fd5b50610453600480360381019061044e91906130c7565b610e9e565b005b34801561046157600080fd5b5061046a61106d565b60405161047791906138bf565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a291906131f4565b611076565b6040516104b49190613632565b60405180910390f35b3480156104c957600080fd5b506104d2611129565b6040516104df91906135b6565b60405180910390f35b3480156104f457600080fd5b5061050f600480360381019061050a9190613234565b61114d565b005b34801561051d57600080fd5b506105266111ee565b60405161053391906138bf565b60405180910390f35b34801561054857600080fd5b50610563600480360381019061055e91906130c7565b611201565b604051610570919061384a565b60405180910390f35b34801561058557600080fd5b5061058e611249565b005b34801561059c57600080fd5b506105a56113a1565b6040516105b291906138bf565b60405180910390f35b3480156105c757600080fd5b506105d06113b4565b005b3480156105de57600080fd5b506105e76114bf565b6040516105f491906135b6565b60405180910390f35b34801561060957600080fd5b506106126114e9565b60405161061f91906135b6565b60405180910390f35b34801561063457600080fd5b5061063d61150f565b60405161064a9190613668565b60405180910390f35b34801561065f57600080fd5b5061067a600480360381019061067591906131f4565b6115a1565b6040516106879190613632565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b291906130c7565b61166e565b005b3480156106c557600080fd5b506106ce6117c1565b6040516106db91906135b6565b60405180910390f35b3480156106f057600080fd5b506106f96117e7565b604051610706919061384a565b60405180910390f35b34801561071b57600080fd5b50610736600480360381019061073191906131f4565b6117ed565b6040516107439190613632565b60405180910390f35b34801561075857600080fd5b5061076161180b565b60405161076e91906138bf565b60405180910390f35b34801561078357600080fd5b5061078c61181e565b60405161079991906138bf565b60405180910390f35b3480156107ae57600080fd5b506107c960048036038101906107c491906131b4565b611831565b005b3480156107d757600080fd5b506107e0611923565b6040516107ed91906138bf565b60405180910390f35b34801561080257600080fd5b5061081d60048036038101906108189190613121565b611936565b60405161082a919061384a565b60405180910390f35b34801561083f57600080fd5b506108486119bd565b604051610855919061384a565b60405180910390f35b34801561086a57600080fd5b5061088560048036038101906108809190613234565b6119c3565b005b34801561089357600080fd5b5061089c611a64565b6040516108a991906138bf565b60405180910390f35b3480156108be57600080fd5b506108d960048036038101906108d491906130c7565b611a77565b005b600a60149054906101000a900460ff1681565b6060600380546108fd90613b4b565b80601f016020809104026020016040519081016040528092919081815260200182805461092990613b4b565b80156109765780601f1061094b57610100808354040283529160200191610976565b820191906000526020600020905b81548152906001019060200180831161095957829003601f168201915b5050505050905090565b600061099461098d611c9c565b8484611ca4565b6001905092915050565b6109a6611c9c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2c9061376a565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610abe611c9c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b449061376a565b60405180910390fd5b600d60009054906101000a900460ff16610b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b939061370a565b60405180910390fd5b6000600d60006101000a81548160ff021916908315150217905550565b6000600254905090565b600c6020528060005260406000206000915054906101000a900460ff1681565b610beb611c9c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c719061376a565b60405180910390fd5b6000600b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610dbf848484611e6f565b610e8084610dcb611c9c565b610e7b856040518060600160405280602881526020016140a060289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e31611c9c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125689092919063ffffffff16565b611ca4565b600190509392505050565b600a601b9054906101000a900460ff1681565b610ea6611c9c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2c9061376a565b60405180910390fd5b6000600b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006012905090565b600061111f611083611c9c565b8461111a8560016000611094611c9c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c3e90919063ffffffff16565b611ca4565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b611155611c9c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111db9061376a565b60405180910390fd5b8060088190555050565b600a60179054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611251611c9c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d79061376a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600a60159054906101000a900460ff1681565b6113bc611c9c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461144b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114429061376a565b60405180910390fd5b600d60009054906101000a900460ff161561149b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114929061378a565b60405180910390fd5b6001600d60006101000a81548160ff02191690831515021790555042600e81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461151e90613b4b565b80601f016020809104026020016040519081016040528092919081815260200182805461154a90613b4b565b80156115975780601f1061156c57610100808354040283529160200191611597565b820191906000526020600020905b81548152906001019060200180831161157a57829003601f168201915b5050505050905090565b60006116646115ae611c9c565b8461165f856040518060600160405280602581526020016140c860259139600160006115d8611c9c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125689092919063ffffffff16565b611ca4565b6001905092915050565b611676611c9c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fc9061376a565b60405180910390fd5b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061176681611a77565b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b60006118016117fa611c9c565b8484611e6f565b6001905092915050565b600a601a9054906101000a900460ff1681565b600a60199054906101000a900460ff1681565b611839611c9c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bf9061376a565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a60169054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b6119cb611c9c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a519061376a565b60405180910390fd5b8060078190555050565b600a60189054906101000a900460ff1681565b611a7f611c9c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b059061376a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b75906136aa565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808284611c4d919061392f565b905083811015611c92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c89906136ea565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0b9061380a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7b906136ca565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e62919061384a565b60405180910390a3505050565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f135750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f499061382a565b60405180910390fd5b600d60009054906101000a900460ff1661204b57600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120075750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203d906137ca565b60405180910390fd5b612100565b610258600e544261205c9190613a47565b1080156120b457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156120ff576007548111156120fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f59061372a565b60405180910390fd5b5b5b600081141561211a57612115838360006125cc565b612563565b600061212530611201565b90506000600854821015905080801561214b5750600660149054906101000a900460ff16155b80156121a357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156121e257506121b26114bf565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561222157506121f16114bf565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156122d4576001600660146101000a81548160ff021916908315150217905550600061226a606461225c601e8661286190919063ffffffff16565b6128dc90919063ffffffff16565b905061227581612926565b6000612293600761228530611201565b6128dc90919063ffffffff16565b905061229f308261298b565b60006122aa30611201565b90506122b581612b39565b6000600660146101000a81548160ff0219169083151502179055505050505b6000600660149054906101000a900460ff16159050600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061238a5750600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561239457600090505b8015612554576000806000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16141561244157600a60189054906101000a900460ff169350600a60199054906101000a900460ff169250600a601a9054906101000a900460ff169150600a601b9054906101000a900460ff1690506124df565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614156124de57600a60149054906101000a900460ff169350600a60159054906101000a900460ff169250600a60169054906101000a900460ff169150600a60179054906101000a900460ff1690505b5b600061252c6103e861251e8486888a6124f89190613985565b6125029190613985565b61250c9190613985565b60ff168c61286190919063ffffffff16565b6128dc90919063ffffffff16565b9050612541818a612c4e90919063ffffffff16565b985061254e8b30836125cc565b50505050505b61255f8686866125cc565b5050505b505050565b60008383111582906125b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a79190613668565b60405180910390fd5b50600083856125bf9190613a47565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561263c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612633906137ea565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a39061368a565b60405180910390fd5b6126b7838383612c98565b6127228160405180606001604052806026815260200161407a602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125689092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127b5816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c3e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612854919061384a565b60405180910390a3505050565b60008083141561287457600090506128d6565b6000828461288291906139ed565b905082848261289191906139bc565b146128d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c89061374a565b60405180910390fd5b809150505b92915050565b600061291e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c9d565b905092915050565b600061293c6002836128dc90919063ffffffff16565b905060006129538284612c4e90919063ffffffff16565b9050600047905061296383612d00565b60006129788247612c4e90919063ffffffff16565b90506129848382612f5e565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f2906137aa565b60405180910390fd5b612a0782600083612c98565b612a7281604051806060016040528060228152602001614058602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125689092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ac981600254612c4e90919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b2d919061384a565b60405180910390a35050565b612b4281612d00565b60004790506000612b5d6002836128dc90919063ffffffff16565b90506000612b748284612c4e90919063ffffffff16565b9050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612bde573d6000803e3d6000fd5b50600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612c47573d6000803e3d6000fd5b5050505050565b6000612c9083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612568565b905092915050565b505050565b60008083118290612ce4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cdb9190613668565b60405180910390fd5b5060008385612cf391906139bc565b9050809150509392505050565b6000600267ffffffffffffffff811115612d1d57612d1c613c39565b5b604051908082528060200260200182016040528015612d4b5781602001602082028036833780820191505090505b5090503081600081518110612d6357612d62613c0a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612e0557600080fd5b505afa158015612e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e3d91906130f4565b81600181518110612e5157612e50613c0a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612eb830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ca4565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947836000843060c842612f08919061392f565b6040518663ffffffff1660e01b8152600401612f28959493929190613865565b600060405180830381600087803b158015612f4257600080fd5b505af1158015612f56573d6000803e3d6000fd5b505050505050565b612f8b30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ca4565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612fd76114bf565b60c842612fe4919061392f565b6040518863ffffffff1660e01b8152600401613005969594939291906135d1565b6060604051808303818588803b15801561301e57600080fd5b505af1158015613032573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906130579190613261565b5050505050565b60008135905061306d81614012565b92915050565b60008151905061308281614012565b92915050565b60008135905061309781614029565b92915050565b6000813590506130ac81614040565b92915050565b6000815190506130c181614040565b92915050565b6000602082840312156130dd576130dc613c68565b5b60006130eb8482850161305e565b91505092915050565b60006020828403121561310a57613109613c68565b5b600061311884828501613073565b91505092915050565b6000806040838503121561313857613137613c68565b5b60006131468582860161305e565b92505060206131578582860161305e565b9150509250929050565b60008060006060848603121561317a57613179613c68565b5b60006131888682870161305e565b93505060206131998682870161305e565b92505060406131aa8682870161309d565b9150509250925092565b600080604083850312156131cb576131ca613c68565b5b60006131d98582860161305e565b92505060206131ea85828601613088565b9150509250929050565b6000806040838503121561320b5761320a613c68565b5b60006132198582860161305e565b925050602061322a8582860161309d565b9150509250929050565b60006020828403121561324a57613249613c68565b5b60006132588482850161309d565b91505092915050565b60008060006060848603121561327a57613279613c68565b5b6000613288868287016130b2565b9350506020613299868287016130b2565b92505060406132aa868287016130b2565b9150509250925092565b60006132c083836132cc565b60208301905092915050565b6132d581613a7b565b82525050565b6132e481613a7b565b82525050565b60006132f5826138ea565b6132ff818561390d565b935061330a836138da565b8060005b8381101561333b57815161332288826132b4565b975061332d83613900565b92505060018101905061330e565b5085935050505092915050565b61335181613a8d565b82525050565b61336081613ad0565b82525050565b61336f81613ae2565b82525050565b6000613380826138f5565b61338a818561391e565b935061339a818560208601613b18565b6133a381613c6d565b840191505092915050565b60006133bb60238361391e565b91506133c682613c7e565b604082019050919050565b60006133de60268361391e565b91506133e982613ccd565b604082019050919050565b600061340160228361391e565b915061340c82613d1c565b604082019050919050565b6000613424601b8361391e565b915061342f82613d6b565b602082019050919050565b600061344760108361391e565b915061345282613d94565b602082019050919050565b600061346a60188361391e565b915061347582613dbd565b602082019050919050565b600061348d60218361391e565b915061349882613de6565b604082019050919050565b60006134b060208361391e565b91506134bb82613e35565b602082019050919050565b60006134d3600f8361391e565b91506134de82613e5e565b602082019050919050565b60006134f660218361391e565b915061350182613e87565b604082019050919050565b600061351960278361391e565b915061352482613ed6565b604082019050919050565b600061353c60258361391e565b915061354782613f25565b604082019050919050565b600061355f60248361391e565b915061356a82613f74565b604082019050919050565b600061358260228361391e565b915061358d82613fc3565b604082019050919050565b6135a181613ab9565b82525050565b6135b081613ac3565b82525050565b60006020820190506135cb60008301846132db565b92915050565b600060c0820190506135e660008301896132db565b6135f36020830188613598565b6136006040830187613366565b61360d6060830186613366565b61361a60808301856132db565b61362760a0830184613598565b979650505050505050565b60006020820190506136476000830184613348565b92915050565b60006020820190506136626000830184613357565b92915050565b600060208201905081810360008301526136828184613375565b905092915050565b600060208201905081810360008301526136a3816133ae565b9050919050565b600060208201905081810360008301526136c3816133d1565b9050919050565b600060208201905081810360008301526136e3816133f4565b9050919050565b6000602082019050818103600083015261370381613417565b9050919050565b600060208201905081810360008301526137238161343a565b9050919050565b600060208201905081810360008301526137438161345d565b9050919050565b6000602082019050818103600083015261376381613480565b9050919050565b60006020820190508181036000830152613783816134a3565b9050919050565b600060208201905081810360008301526137a3816134c6565b9050919050565b600060208201905081810360008301526137c3816134e9565b9050919050565b600060208201905081810360008301526137e38161350c565b9050919050565b600060208201905081810360008301526138038161352f565b9050919050565b6000602082019050818103600083015261382381613552565b9050919050565b6000602082019050818103600083015261384381613575565b9050919050565b600060208201905061385f6000830184613598565b92915050565b600060a08201905061387a6000830188613598565b6138876020830187613366565b818103604083015261389981866132ea565b90506138a860608301856132db565b6138b56080830184613598565b9695505050505050565b60006020820190506138d460008301846135a7565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061393a82613ab9565b915061394583613ab9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561397a57613979613b7d565b5b828201905092915050565b600061399082613ac3565b915061399b83613ac3565b92508260ff038211156139b1576139b0613b7d565b5b828201905092915050565b60006139c782613ab9565b91506139d283613ab9565b9250826139e2576139e1613bac565b5b828204905092915050565b60006139f882613ab9565b9150613a0383613ab9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a3c57613a3b613b7d565b5b828202905092915050565b6000613a5282613ab9565b9150613a5d83613ab9565b925082821015613a7057613a6f613b7d565b5b828203905092915050565b6000613a8682613a99565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613adb82613af4565b9050919050565b6000613aed82613ab9565b9050919050565b6000613aff82613b06565b9050919050565b6000613b1182613a99565b9050919050565b60005b83811015613b36578082015181840152602081019050613b1b565b83811115613b45576000848401525b50505050565b60006002820490506001821680613b6357607f821691505b60208210811415613b7757613b76613bdb565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f616c72656164792064697361626c656400000000000000000000000000000000600082015250565b7f4f76657220746865206d61782062757920616d6f756e742e0000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f616c726561647920656e61626c65640000000000000000000000000000000000600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206973206e6f742079657420656e61626c65642e204265207060008201527f617469656e742100000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f546f206f722046726f6d206164647265737320697320626c61636b6c6973746560008201527f642e000000000000000000000000000000000000000000000000000000000000602082015250565b61401b81613a7b565b811461402657600080fd5b50565b61403281613a8d565b811461403d57600080fd5b50565b61404981613ab9565b811461405457600080fd5b5056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200cf36544496137d75355018076fb8116b39aa84a2caa5d94109a4d29304bcc5664736f6c63430008070033

Deployed Bytecode

0x6080604052600436106102295760003560e01c80637462a96311610123578063a9059cbb116100ab578063dd62ed3e1161006f578063dd62ed3e146107f6578063e2f4560514610833578063ec28438a1461085e578063ee37b56214610887578063f2fde38b146108b257610230565b8063a9059cbb1461070f578063c546cf121461074c578063d62adfe414610777578063d9e2b9f6146107a2578063db8ee65f146107cb57610230565b806395d89b41116100f257806395d89b4114610628578063a457c2d714610653578063a6f9dae114610690578063a7da8e27146106b9578063a87e5da4146106e457610230565b80637462a963146105905780638a8c523c146105bb5780638da5cb5b146105d25780638ea5220f146105fd57610230565b806323b872dd116101b157806349bd5a5e1161017557806349bd5a5e146104bd5780636402511e146104e85780636b6113681461051157806370a082311461053c578063715018a61461057957610230565b806323b872dd146103c4578063255412d91461040157806327fc1d5f1461042c578063313ce56714610455578063395093511461048057610230565b80631694505e116101f85780631694505e146102f157806317700f011461031c57806318160ddd146103335780631cdd3be31461035e5780631f53ac021461039b57610230565b806304d8efbe1461023557806306fdde0314610260578063095ea7b31461028b578063153b0d1e146102c857610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a6108db565b60405161025791906138bf565b60405180910390f35b34801561026c57600080fd5b506102756108ee565b6040516102829190613668565b60405180910390f35b34801561029757600080fd5b506102b260048036038101906102ad91906131f4565b610980565b6040516102bf9190613632565b60405180910390f35b3480156102d457600080fd5b506102ef60048036038101906102ea91906131b4565b61099e565b005b3480156102fd57600080fd5b50610306610a90565b604051610313919061364d565b60405180910390f35b34801561032857600080fd5b50610331610ab6565b005b34801561033f57600080fd5b50610348610bb9565b604051610355919061384a565b60405180910390f35b34801561036a57600080fd5b50610385600480360381019061038091906130c7565b610bc3565b6040516103929190613632565b60405180910390f35b3480156103a757600080fd5b506103c260048036038101906103bd91906130c7565b610be3565b005b3480156103d057600080fd5b506103eb60048036038101906103e69190613161565b610db2565b6040516103f89190613632565b60405180910390f35b34801561040d57600080fd5b50610416610e8b565b60405161042391906138bf565b60405180910390f35b34801561043857600080fd5b50610453600480360381019061044e91906130c7565b610e9e565b005b34801561046157600080fd5b5061046a61106d565b60405161047791906138bf565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a291906131f4565b611076565b6040516104b49190613632565b60405180910390f35b3480156104c957600080fd5b506104d2611129565b6040516104df91906135b6565b60405180910390f35b3480156104f457600080fd5b5061050f600480360381019061050a9190613234565b61114d565b005b34801561051d57600080fd5b506105266111ee565b60405161053391906138bf565b60405180910390f35b34801561054857600080fd5b50610563600480360381019061055e91906130c7565b611201565b604051610570919061384a565b60405180910390f35b34801561058557600080fd5b5061058e611249565b005b34801561059c57600080fd5b506105a56113a1565b6040516105b291906138bf565b60405180910390f35b3480156105c757600080fd5b506105d06113b4565b005b3480156105de57600080fd5b506105e76114bf565b6040516105f491906135b6565b60405180910390f35b34801561060957600080fd5b506106126114e9565b60405161061f91906135b6565b60405180910390f35b34801561063457600080fd5b5061063d61150f565b60405161064a9190613668565b60405180910390f35b34801561065f57600080fd5b5061067a600480360381019061067591906131f4565b6115a1565b6040516106879190613632565b60405180910390f35b34801561069c57600080fd5b506106b760048036038101906106b291906130c7565b61166e565b005b3480156106c557600080fd5b506106ce6117c1565b6040516106db91906135b6565b60405180910390f35b3480156106f057600080fd5b506106f96117e7565b604051610706919061384a565b60405180910390f35b34801561071b57600080fd5b50610736600480360381019061073191906131f4565b6117ed565b6040516107439190613632565b60405180910390f35b34801561075857600080fd5b5061076161180b565b60405161076e91906138bf565b60405180910390f35b34801561078357600080fd5b5061078c61181e565b60405161079991906138bf565b60405180910390f35b3480156107ae57600080fd5b506107c960048036038101906107c491906131b4565b611831565b005b3480156107d757600080fd5b506107e0611923565b6040516107ed91906138bf565b60405180910390f35b34801561080257600080fd5b5061081d60048036038101906108189190613121565b611936565b60405161082a919061384a565b60405180910390f35b34801561083f57600080fd5b506108486119bd565b604051610855919061384a565b60405180910390f35b34801561086a57600080fd5b5061088560048036038101906108809190613234565b6119c3565b005b34801561089357600080fd5b5061089c611a64565b6040516108a991906138bf565b60405180910390f35b3480156108be57600080fd5b506108d960048036038101906108d491906130c7565b611a77565b005b600a60149054906101000a900460ff1681565b6060600380546108fd90613b4b565b80601f016020809104026020016040519081016040528092919081815260200182805461092990613b4b565b80156109765780601f1061094b57610100808354040283529160200191610976565b820191906000526020600020905b81548152906001019060200180831161095957829003601f168201915b5050505050905090565b600061099461098d611c9c565b8484611ca4565b6001905092915050565b6109a6611c9c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2c9061376a565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610abe611c9c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b449061376a565b60405180910390fd5b600d60009054906101000a900460ff16610b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b939061370a565b60405180910390fd5b6000600d60006101000a81548160ff021916908315150217905550565b6000600254905090565b600c6020528060005260406000206000915054906101000a900460ff1681565b610beb611c9c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c719061376a565b60405180910390fd5b6000600b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610dbf848484611e6f565b610e8084610dcb611c9c565b610e7b856040518060600160405280602881526020016140a060289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e31611c9c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125689092919063ffffffff16565b611ca4565b600190509392505050565b600a601b9054906101000a900460ff1681565b610ea6611c9c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2c9061376a565b60405180910390fd5b6000600b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006012905090565b600061111f611083611c9c565b8461111a8560016000611094611c9c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c3e90919063ffffffff16565b611ca4565b6001905092915050565b7f000000000000000000000000370627cfe1ac2d2a5ba2f1468e00e7f32d64050481565b611155611c9c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111db9061376a565b60405180910390fd5b8060088190555050565b600a60179054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611251611c9c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d79061376a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600a60159054906101000a900460ff1681565b6113bc611c9c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461144b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114429061376a565b60405180910390fd5b600d60009054906101000a900460ff161561149b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114929061378a565b60405180910390fd5b6001600d60006101000a81548160ff02191690831515021790555042600e81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461151e90613b4b565b80601f016020809104026020016040519081016040528092919081815260200182805461154a90613b4b565b80156115975780601f1061156c57610100808354040283529160200191611597565b820191906000526020600020905b81548152906001019060200180831161157a57829003601f168201915b5050505050905090565b60006116646115ae611c9c565b8461165f856040518060600160405280602581526020016140c860259139600160006115d8611c9c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125689092919063ffffffff16565b611ca4565b6001905092915050565b611676611c9c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fc9061376a565b60405180910390fd5b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061176681611a77565b6001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b60006118016117fa611c9c565b8484611e6f565b6001905092915050565b600a601a9054906101000a900460ff1681565b600a60199054906101000a900460ff1681565b611839611c9c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bf9061376a565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a60169054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b6119cb611c9c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a519061376a565b60405180910390fd5b8060078190555050565b600a60189054906101000a900460ff1681565b611a7f611c9c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b059061376a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b75906136aa565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808284611c4d919061392f565b905083811015611c92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c89906136ea565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0b9061380a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7b906136ca565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e62919061384a565b60405180910390a3505050565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f135750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f499061382a565b60405180910390fd5b600d60009054906101000a900460ff1661204b57600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120075750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203d906137ca565b60405180910390fd5b612100565b610258600e544261205c9190613a47565b1080156120b457507f000000000000000000000000370627cfe1ac2d2a5ba2f1468e00e7f32d64050473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156120ff576007548111156120fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f59061372a565b60405180910390fd5b5b5b600081141561211a57612115838360006125cc565b612563565b600061212530611201565b90506000600854821015905080801561214b5750600660149054906101000a900460ff16155b80156121a357507f000000000000000000000000370627cfe1ac2d2a5ba2f1468e00e7f32d64050473ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156121e257506121b26114bf565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561222157506121f16114bf565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156122d4576001600660146101000a81548160ff021916908315150217905550600061226a606461225c601e8661286190919063ffffffff16565b6128dc90919063ffffffff16565b905061227581612926565b6000612293600761228530611201565b6128dc90919063ffffffff16565b905061229f308261298b565b60006122aa30611201565b90506122b581612b39565b6000600660146101000a81548160ff0219169083151502179055505050505b6000600660149054906101000a900460ff16159050600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061238a5750600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561239457600090505b8015612554576000806000807f000000000000000000000000370627cfe1ac2d2a5ba2f1468e00e7f32d64050473ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16141561244157600a60189054906101000a900460ff169350600a60199054906101000a900460ff169250600a601a9054906101000a900460ff169150600a601b9054906101000a900460ff1690506124df565b7f000000000000000000000000370627cfe1ac2d2a5ba2f1468e00e7f32d64050473ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614156124de57600a60149054906101000a900460ff169350600a60159054906101000a900460ff169250600a60169054906101000a900460ff169150600a60179054906101000a900460ff1690505b5b600061252c6103e861251e8486888a6124f89190613985565b6125029190613985565b61250c9190613985565b60ff168c61286190919063ffffffff16565b6128dc90919063ffffffff16565b9050612541818a612c4e90919063ffffffff16565b985061254e8b30836125cc565b50505050505b61255f8686866125cc565b5050505b505050565b60008383111582906125b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a79190613668565b60405180910390fd5b50600083856125bf9190613a47565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561263c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612633906137ea565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a39061368a565b60405180910390fd5b6126b7838383612c98565b6127228160405180606001604052806026815260200161407a602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125689092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127b5816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c3e90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612854919061384a565b60405180910390a3505050565b60008083141561287457600090506128d6565b6000828461288291906139ed565b905082848261289191906139bc565b146128d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c89061374a565b60405180910390fd5b809150505b92915050565b600061291e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c9d565b905092915050565b600061293c6002836128dc90919063ffffffff16565b905060006129538284612c4e90919063ffffffff16565b9050600047905061296383612d00565b60006129788247612c4e90919063ffffffff16565b90506129848382612f5e565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f2906137aa565b60405180910390fd5b612a0782600083612c98565b612a7281604051806060016040528060228152602001614058602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125689092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ac981600254612c4e90919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b2d919061384a565b60405180910390a35050565b612b4281612d00565b60004790506000612b5d6002836128dc90919063ffffffff16565b90506000612b748284612c4e90919063ffffffff16565b9050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612bde573d6000803e3d6000fd5b50600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612c47573d6000803e3d6000fd5b5050505050565b6000612c9083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612568565b905092915050565b505050565b60008083118290612ce4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cdb9190613668565b60405180910390fd5b5060008385612cf391906139bc565b9050809150509392505050565b6000600267ffffffffffffffff811115612d1d57612d1c613c39565b5b604051908082528060200260200182016040528015612d4b5781602001602082028036833780820191505090505b5090503081600081518110612d6357612d62613c0a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612e0557600080fd5b505afa158015612e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e3d91906130f4565b81600181518110612e5157612e50613c0a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612eb830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ca4565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947836000843060c842612f08919061392f565b6040518663ffffffff1660e01b8152600401612f28959493929190613865565b600060405180830381600087803b158015612f4257600080fd5b505af1158015612f56573d6000803e3d6000fd5b505050505050565b612f8b30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ca4565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612fd76114bf565b60c842612fe4919061392f565b6040518863ffffffff1660e01b8152600401613005969594939291906135d1565b6060604051808303818588803b15801561301e57600080fd5b505af1158015613032573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906130579190613261565b5050505050565b60008135905061306d81614012565b92915050565b60008151905061308281614012565b92915050565b60008135905061309781614029565b92915050565b6000813590506130ac81614040565b92915050565b6000815190506130c181614040565b92915050565b6000602082840312156130dd576130dc613c68565b5b60006130eb8482850161305e565b91505092915050565b60006020828403121561310a57613109613c68565b5b600061311884828501613073565b91505092915050565b6000806040838503121561313857613137613c68565b5b60006131468582860161305e565b92505060206131578582860161305e565b9150509250929050565b60008060006060848603121561317a57613179613c68565b5b60006131888682870161305e565b93505060206131998682870161305e565b92505060406131aa8682870161309d565b9150509250925092565b600080604083850312156131cb576131ca613c68565b5b60006131d98582860161305e565b92505060206131ea85828601613088565b9150509250929050565b6000806040838503121561320b5761320a613c68565b5b60006132198582860161305e565b925050602061322a8582860161309d565b9150509250929050565b60006020828403121561324a57613249613c68565b5b60006132588482850161309d565b91505092915050565b60008060006060848603121561327a57613279613c68565b5b6000613288868287016130b2565b9350506020613299868287016130b2565b92505060406132aa868287016130b2565b9150509250925092565b60006132c083836132cc565b60208301905092915050565b6132d581613a7b565b82525050565b6132e481613a7b565b82525050565b60006132f5826138ea565b6132ff818561390d565b935061330a836138da565b8060005b8381101561333b57815161332288826132b4565b975061332d83613900565b92505060018101905061330e565b5085935050505092915050565b61335181613a8d565b82525050565b61336081613ad0565b82525050565b61336f81613ae2565b82525050565b6000613380826138f5565b61338a818561391e565b935061339a818560208601613b18565b6133a381613c6d565b840191505092915050565b60006133bb60238361391e565b91506133c682613c7e565b604082019050919050565b60006133de60268361391e565b91506133e982613ccd565b604082019050919050565b600061340160228361391e565b915061340c82613d1c565b604082019050919050565b6000613424601b8361391e565b915061342f82613d6b565b602082019050919050565b600061344760108361391e565b915061345282613d94565b602082019050919050565b600061346a60188361391e565b915061347582613dbd565b602082019050919050565b600061348d60218361391e565b915061349882613de6565b604082019050919050565b60006134b060208361391e565b91506134bb82613e35565b602082019050919050565b60006134d3600f8361391e565b91506134de82613e5e565b602082019050919050565b60006134f660218361391e565b915061350182613e87565b604082019050919050565b600061351960278361391e565b915061352482613ed6565b604082019050919050565b600061353c60258361391e565b915061354782613f25565b604082019050919050565b600061355f60248361391e565b915061356a82613f74565b604082019050919050565b600061358260228361391e565b915061358d82613fc3565b604082019050919050565b6135a181613ab9565b82525050565b6135b081613ac3565b82525050565b60006020820190506135cb60008301846132db565b92915050565b600060c0820190506135e660008301896132db565b6135f36020830188613598565b6136006040830187613366565b61360d6060830186613366565b61361a60808301856132db565b61362760a0830184613598565b979650505050505050565b60006020820190506136476000830184613348565b92915050565b60006020820190506136626000830184613357565b92915050565b600060208201905081810360008301526136828184613375565b905092915050565b600060208201905081810360008301526136a3816133ae565b9050919050565b600060208201905081810360008301526136c3816133d1565b9050919050565b600060208201905081810360008301526136e3816133f4565b9050919050565b6000602082019050818103600083015261370381613417565b9050919050565b600060208201905081810360008301526137238161343a565b9050919050565b600060208201905081810360008301526137438161345d565b9050919050565b6000602082019050818103600083015261376381613480565b9050919050565b60006020820190508181036000830152613783816134a3565b9050919050565b600060208201905081810360008301526137a3816134c6565b9050919050565b600060208201905081810360008301526137c3816134e9565b9050919050565b600060208201905081810360008301526137e38161350c565b9050919050565b600060208201905081810360008301526138038161352f565b9050919050565b6000602082019050818103600083015261382381613552565b9050919050565b6000602082019050818103600083015261384381613575565b9050919050565b600060208201905061385f6000830184613598565b92915050565b600060a08201905061387a6000830188613598565b6138876020830187613366565b818103604083015261389981866132ea565b90506138a860608301856132db565b6138b56080830184613598565b9695505050505050565b60006020820190506138d460008301846135a7565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061393a82613ab9565b915061394583613ab9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561397a57613979613b7d565b5b828201905092915050565b600061399082613ac3565b915061399b83613ac3565b92508260ff038211156139b1576139b0613b7d565b5b828201905092915050565b60006139c782613ab9565b91506139d283613ab9565b9250826139e2576139e1613bac565b5b828204905092915050565b60006139f882613ab9565b9150613a0383613ab9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a3c57613a3b613b7d565b5b828202905092915050565b6000613a5282613ab9565b9150613a5d83613ab9565b925082821015613a7057613a6f613b7d565b5b828203905092915050565b6000613a8682613a99565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613adb82613af4565b9050919050565b6000613aed82613ab9565b9050919050565b6000613aff82613b06565b9050919050565b6000613b1182613a99565b9050919050565b60005b83811015613b36578082015181840152602081019050613b1b565b83811115613b45576000848401525b50505050565b60006002820490506001821680613b6357607f821691505b60208210811415613b7757613b76613bdb565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f616c72656164792064697361626c656400000000000000000000000000000000600082015250565b7f4f76657220746865206d61782062757920616d6f756e742e0000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f616c726561647920656e61626c65640000000000000000000000000000000000600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206973206e6f742079657420656e61626c65642e204265207060008201527f617469656e742100000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f546f206f722046726f6d206164647265737320697320626c61636b6c6973746560008201527f642e000000000000000000000000000000000000000000000000000000000000602082015250565b61401b81613a7b565b811461402657600080fd5b50565b61403281613a8d565b811461403d57600080fd5b50565b61404981613ab9565b811461405457600080fd5b5056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200cf36544496137d75355018076fb8116b39aa84a2caa5d94109a4d29304bcc5664736f6c63430008070033

Deployed Bytecode Sourcemap

25298:7213:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25783:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16698:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18865:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31116:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25371:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31432:145;;;;;;;;;;;;;:::i;:::-;;17818:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26172:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31810:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19516:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26076:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32188:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17660:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20280:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25419:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31585:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25909:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17989:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4415:148;;;;;;;;;;;;;:::i;:::-;;25825:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31244:180;;;;;;;;;;;;;:::i;:::-;;4205:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25619:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16917:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21001:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31997:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25700:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25499:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18329:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26035:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25994;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32383:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25867:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18567:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25558:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31699:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25953:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4569:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25783:35;;;;;;;;;;;;;:::o;16698:100::-;16752:13;16785:5;16778:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16698:100;:::o;18865:169::-;18948:4;18965:39;18974:12;:10;:12::i;:::-;18988:7;18997:6;18965:8;:39::i;:::-;19022:4;19015:11;;18865:169;;;;:::o;31116:120::-;4340:12;:10;:12::i;:::-;4330:22;;:6;;;;;;;;;;;:22;;;4322:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31223:5:::1;31197:14;:23;31212:7;31197:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;31116:120:::0;;:::o;25371:41::-;;;;;;;;;;;;;:::o;31432:145::-;4340:12;:10;:12::i;:::-;4330:22;;:6;;;;;;;;;;;:22;;;4322:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31497:16:::1;;;;;;;;;;;31489:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;31564:5;31545:16;;:24;;;;;;;;;;;;;;;;;;31432:145::o:0;17818:108::-;17879:7;17906:12;;17899:19;;17818:108;:::o;26172:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;31810:179::-;4340:12;:10;:12::i;:::-;4330:22;;:6;;;;;;;;;;;:22;;;4322:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31905:5:::1;31880:11;:22;31892:9;;;;;;;;;;;31880:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;31933:8;31921:9;;:20;;;;;;;;;;;;;;;;;;31977:4;31952:11;:22;31964:9;;;;;;;;;;;31952:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;31810:179:::0;:::o;19516:355::-;19656:4;19673:36;19683:6;19691:9;19702:6;19673:9;:36::i;:::-;19720:121;19729:6;19737:12;:10;:12::i;:::-;19751:89;19789:6;19751:89;;;;;;;;;;;;;;;;;:11;:19;19763:6;19751:19;;;;;;;;;;;;;;;:33;19771:12;:10;:12::i;:::-;19751:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;19720:8;:121::i;:::-;19859:4;19852:11;;19516:355;;;;;:::o;26076:33::-;;;;;;;;;;;;;:::o;32188:187::-;4340:12;:10;:12::i;:::-;4330:22;;:6;;;;;;;;;;;:22;;;4322:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32287:5:::1;32260:11;:24;32272:11;;;;;;;;;;;32260:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;32317:8;32303:11;;:22;;;;;;;;;;;;;;;;;;32363:4;32336:11;:24;32348:11;;;;;;;;;;;32336:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;32188:187:::0;:::o;17660:93::-;17718:5;17743:2;17736:9;;17660:93;:::o;20280:218::-;20368:4;20385:83;20394:12;:10;:12::i;:::-;20408:7;20417:50;20456:10;20417:11;:25;20429:12;:10;:12::i;:::-;20417:25;;;;;;;;;;;;;;;:34;20443:7;20417:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;20385:8;:83::i;:::-;20486:4;20479:11;;20280:218;;;;:::o;25419:38::-;;;:::o;31585:106::-;4340:12;:10;:12::i;:::-;4330:22;;:6;;;;;;;;;;;:22;;;4322:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31677:6:::1;31656:18;:27;;;;31585:106:::0;:::o;25909:35::-;;;;;;;;;;;;;:::o;17989:127::-;18063:7;18090:9;:18;18100:7;18090:18;;;;;;;;;;;;;;;;18083:25;;17989:127;;;:::o;4415:148::-;4340:12;:10;:12::i;:::-;4330:22;;:6;;;;;;;;;;;:22;;;4322:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4522:1:::1;4485:40;;4506:6;;;;;;;;;;;4485:40;;;;;;;;;;;;4553:1;4536:6;;:19;;;;;;;;;;;;;;;;;;4415:148::o:0;25825:35::-;;;;;;;;;;;;;:::o;31244:180::-;4340:12;:10;:12::i;:::-;4330:22;;:6;;;;;;;;;;;:22;;;4322:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31308:16:::1;;;;;;;;;;;31307:17;31299:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;31374:4;31355:16;;:23;;;;;;;;;;;;;;;;;;31401:15;31389:9;:27;;;;31244:180::o:0;4205:79::-;4243:7;4270:6;;;;;;;;;;;4263:13;;4205:79;:::o;25619:74::-;;;;;;;;;;;;;:::o;16917:104::-;16973:13;17006:7;16999:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16917:104;:::o;21001:269::-;21094:4;21111:129;21120:12;:10;:12::i;:::-;21134:7;21143:96;21182:15;21143:96;;;;;;;;;;;;;;;;;:11;:25;21155:12;:10;:12::i;:::-;21143:25;;;;;;;;;;;;;;;:34;21169:7;21143:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;21111:8;:129::i;:::-;21258:4;21251:11;;21001:269;;;;:::o;31997:183::-;4340:12;:10;:12::i;:::-;4330:22;;:6;;;;;;;;;;;:22;;;4322:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32090:5:::1;32066:11;:21;32078:8;32066:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;32106:27;32124:8;32106:17;:27::i;:::-;32168:4;32144:11;:21;32156:8;32144:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;31997:183:::0;:::o;25700:74::-;;;;;;;;;;;;;:::o;25499:52::-;;;;:::o;18329:175::-;18415:4;18432:42;18442:12;:10;:12::i;:::-;18456:9;18467:6;18432:9;:42::i;:::-;18492:4;18485:11;;18329:175;;;;:::o;26035:34::-;;;;;;;;;;;;;:::o;25994:::-;;;;;;;;;;;;;:::o;32383:125::-;4340:12;:10;:12::i;:::-;4330:22;;:6;;;;;;;;;;;:22;;;4322:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32494:6:::1;32470:11;:21;32482:8;32470:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;32383:125:::0;;:::o;25867:35::-;;;;;;;;;;;;;:::o;18567:151::-;18656:7;18683:11;:18;18695:5;18683:18;;;;;;;;;;;;;;;:27;18702:7;18683:27;;;;;;;;;;;;;;;;18676:34;;18567:151;;;;:::o;25558:52::-;;;;:::o;31699:101::-;4340:12;:10;:12::i;:::-;4330:22;;:6;;;;;;;;;;;:22;;;4322:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31786:6:::1;31769:14;:23;;;;31699:101:::0;:::o;25953:34::-;;;;;;;;;;;;;:::o;4569:244::-;4340:12;:10;:12::i;:::-;4330:22;;:6;;;;;;;;;;;:22;;;4322:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4678:1:::1;4658:22;;:8;:22;;;;4650:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;4768:8;4739:38;;4760:6;;;;;;;;;;;4739:38;;;;;;;;;;;;4797:8;4788:6;;:17;;;;;;;;;;;;;;;;;;4569:244:::0;:::o;2331:181::-;2389:7;2409:9;2425:1;2421;:5;;;;:::i;:::-;2409:17;;2450:1;2445;:6;;2437:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2503:1;2496:8;;;2331:181;;;;:::o;3785:98::-;3838:7;3865:10;3858:17;;3785:98;:::o;24183:380::-;24336:1;24319:19;;:5;:19;;;;24311:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24417:1;24398:21;;:7;:21;;;;24390:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24501:6;24471:11;:18;24483:5;24471:18;;;;;;;;;;;;;;;:27;24490:7;24471:27;;;;;;;;;;;;;;;:36;;;;24539:7;24523:32;;24532:5;24523:32;;;24548:6;24523:32;;;;;;:::i;:::-;;;;;;;;24183:380;;;:::o;27158:2378::-;27291:14;:20;27306:4;27291:20;;;;;;;;;;;;;;;;;;;;;;;;;27290:21;:44;;;;;27316:14;:18;27331:2;27316:18;;;;;;;;;;;;;;;;;;;;;;;;;27315:19;27290:44;27282:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;27391:16;;;;;;;;;;;27386:296;;27432:11;:15;27444:2;27432:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;27451:11;:17;27463:4;27451:17;;;;;;;;;;;;;;;;;;;;;;;;;27432:36;27424:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;27386:296;;;27564:3;27552:9;;27534:15;:27;;;;:::i;:::-;:33;:58;;;;;27579:13;27571:21;;:4;:21;;;27534:58;27530:152;;;27627:14;;27617:6;:24;;27609:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;27530:152;27386:296;27707:1;27697:6;:11;27694:92;;;27725:28;27741:4;27747:2;27751:1;27725:15;:28::i;:::-;27768:7;;27694:92;27798:28;27829:24;27847:4;27829:9;:24::i;:::-;27798:55;;27864:12;27903:18;;27879:20;:42;;27864:57;;27951:7;:33;;;;;27976:8;;;;;;;;;;;27975:9;27951:33;:71;;;;;28009:13;28001:21;;:4;:21;;;;27951:71;:103;;;;;28047:7;:5;:7::i;:::-;28039:15;;:4;:15;;;;27951:103;:133;;;;;28077:7;:5;:7::i;:::-;28071:13;;:2;:13;;;;27951:133;27934:570;;;28122:4;28111:8;;:15;;;;;;;;;;;;;;;;;;28141:18;28162:37;28195:3;28162:28;28187:2;28162:20;:24;;:28;;;;:::i;:::-;:32;;:37;;;;:::i;:::-;28141:58;;28214:26;28229:10;28214:14;:26::i;:::-;28255:18;28276:31;28305:1;28276:24;28294:4;28276:9;:24::i;:::-;:28;;:31;;;;:::i;:::-;28255:52;;28322:32;28336:4;28343:10;28322:5;:32::i;:::-;28369:18;28390:24;28408:4;28390:9;:24::i;:::-;28369:45;;28429:32;28450:10;28429:20;:32::i;:::-;28487:5;28476:8;;:16;;;;;;;;;;;;;;;;;;28096:408;;;27934:570;28516:12;28532:8;;;;;;;;;;;28531:9;28516:24;;28556:11;:17;28568:4;28556:17;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;28577:11;:15;28589:2;28577:15;;;;;;;;;;;;;;;;;;;;;;;;;28556:36;28553:83;;;28619:5;28609:15;;28553:83;28652:7;28648:835;;;28677:19;28715:13;28747:18;28784:14;28843:13;28835:21;;:4;:21;;;28831:444;;;28892:16;;;;;;;;;;;28877:31;;28936:10;;;;;;;;;;;28927:19;;28979:15;;;;;;;;;;;28965:29;;29023:11;;;;;;;;;;;29013:21;;28831:444;;;29066:13;29060:19;;:2;:19;;;29056:219;;;29114:17;;;;;;;;;;;29099:32;;29158:11;;;;;;;;;;;29150:19;;29202:16;;;;;;;;;;;29188:30;;29247:12;;;;;;;;;;;29237:22;;29056:219;28831:444;29300:12;29315:67;29377:4;29315:57;29364:7;29350:11;29341:6;29326:12;:21;;;;:::i;:::-;:35;;;;:::i;:::-;:45;;;;:::i;:::-;29315:57;;:6;:10;;:57;;;;:::i;:::-;:61;;:67;;;;:::i;:::-;29300:82;;29402:16;29413:4;29402:6;:10;;:16;;;;:::i;:::-;29393:25;;29429:42;29445:4;29459;29466;29429:15;:42::i;:::-;28660:823;;;;;28648:835;29495:33;29511:4;29517:2;29521:6;29495:15;:33::i;:::-;27271:2265;;;27158:2378;;;;:::o;2660:192::-;2746:7;2779:1;2774;:6;;2782:12;2766:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2806:9;2822:1;2818;:5;;;;:::i;:::-;2806:17;;2843:1;2836:8;;;2660:192;;;;;:::o;21760:569::-;21918:1;21900:20;;:6;:20;;;;21892:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;22002:1;21981:23;;:9;:23;;;;21973:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;22055:47;22076:6;22084:9;22095:6;22055:20;:47::i;:::-;22133:71;22155:6;22133:71;;;;;;;;;;;;;;;;;:9;:17;22143:6;22133:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;22113:9;:17;22123:6;22113:17;;;;;;;;;;;;;;;:91;;;;22238:32;22263:6;22238:9;:20;22248:9;22238:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;22215:9;:20;22225:9;22215:20;;;;;;;;;;;;;;;:55;;;;22303:9;22286:35;;22295:6;22286:35;;;22314:6;22286:35;;;;;;:::i;:::-;;;;;;;;21760:569;;;:::o;2858:246::-;2916:7;2945:1;2940;:6;2936:47;;;2970:1;2963:8;;;;2936:47;2993:9;3009:1;3005;:5;;;;:::i;:::-;2993:17;;3038:1;3033;3029;:5;;;;:::i;:::-;:10;3021:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3095:1;3088:8;;;2858:246;;;;;:::o;3110:132::-;3168:7;3195:39;3199:1;3202;3195:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3188:46;;3110:132;;;;:::o;29544:351::-;29603:12;29618:13;29629:1;29618:6;:10;;:13;;;;:::i;:::-;29603:28;;29642:17;29662:16;29673:4;29662:6;:10;;:16;;;;:::i;:::-;29642:36;;29689:22;29714:21;29689:46;;29746:22;29763:4;29746:16;:22::i;:::-;29779:18;29800:41;29826:14;29800:21;:25;;:41;;;;:::i;:::-;29779:62;;29852:35;29865:9;29876:10;29852:12;:35::i;:::-;29592:303;;;;29544:351;:::o;23327:418::-;23430:1;23411:21;;:7;:21;;;;23403:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23483:49;23504:7;23521:1;23525:6;23483:20;:49::i;:::-;23566:68;23589:6;23566:68;;;;;;;;;;;;;;;;;:9;:18;23576:7;23566:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;23545:9;:18;23555:7;23545:18;;;;;;;;;;;;;;;:89;;;;23660:24;23677:6;23660:12;;:16;;:24;;;;:::i;:::-;23645:12;:39;;;;23726:1;23700:37;;23709:7;23700:37;;;23730:6;23700:37;;;;;;:::i;:::-;;;;;;;;23327:418;;:::o;30762:346::-;30827:24;30844:6;30827:16;:24::i;:::-;30862:18;30883:21;30862:42;;30915:12;30936:17;30951:1;30936:10;:14;;:17;;;;:::i;:::-;30915:38;;30964:17;30985:20;31000:4;30985:10;:14;;:20;;;;:::i;:::-;30964:41;;31024:9;;;;;;;;;;;31016:27;;:33;31044:4;31016:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31068:11;;;;;;;;;;;31060:29;;:40;31090:9;31060:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30816:292;;;30762:346;:::o;2518:136::-;2576:7;2603:43;2607:1;2610;2603:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2596:50;;2518:136;;;;:::o;25166:125::-;;;;:::o;3248:189::-;3334:7;3366:1;3362;:5;3369:12;3354:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3393:9;3409:1;3405;:5;;;;:::i;:::-;3393:17;;3428:1;3421:8;;;3248:189;;;;;:::o;29903:477::-;29969:21;30007:1;29993:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29969:40;;30038:4;30020;30025:1;30020:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;30064:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30054:4;30059:1;30054:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;30097:62;30114:4;30129:15;;;;;;;;;;;30147:11;30097:8;:62::i;:::-;30170:15;;;;;;;;;;;:66;;;30251:11;30277:1;30293:4;30320;30358:3;30340:15;:21;;;;:::i;:::-;30170:202;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29958:422;29903:477;:::o;30388:366::-;30469:62;30486:4;30501:15;;;;;;;;;;;30519:11;30469:8;:62::i;:::-;30542:15;;;;;;;;;;;:31;;;30581:9;30614:4;30634:11;30660:1;30676;30692:7;:5;:7::i;:::-;30732:3;30714:15;:21;;;;:::i;:::-;30542:204;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;30388:366;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;301:133;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;440:139;;;;:::o;585:143::-;642:5;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;585:143;;;;:::o;734:329::-;793:6;842:2;830:9;821:7;817:23;813:32;810:119;;;848:79;;:::i;:::-;810:119;968:1;993:53;1038:7;1029:6;1018:9;1014:22;993:53;:::i;:::-;983:63;;939:117;734:329;;;;:::o;1069:351::-;1139:6;1188:2;1176:9;1167:7;1163:23;1159:32;1156:119;;;1194:79;;:::i;:::-;1156:119;1314:1;1339:64;1395:7;1386:6;1375:9;1371:22;1339:64;:::i;:::-;1329:74;;1285:128;1069:351;;;;:::o;1426:474::-;1494:6;1502;1551:2;1539:9;1530:7;1526:23;1522:32;1519:119;;;1557:79;;:::i;:::-;1519:119;1677:1;1702:53;1747:7;1738:6;1727:9;1723:22;1702:53;:::i;:::-;1692:63;;1648:117;1804:2;1830:53;1875:7;1866:6;1855:9;1851:22;1830:53;:::i;:::-;1820:63;;1775:118;1426:474;;;;;:::o;1906:619::-;1983:6;1991;1999;2048:2;2036:9;2027:7;2023:23;2019:32;2016:119;;;2054:79;;:::i;:::-;2016:119;2174:1;2199:53;2244:7;2235:6;2224:9;2220:22;2199:53;:::i;:::-;2189:63;;2145:117;2301:2;2327:53;2372:7;2363:6;2352:9;2348:22;2327:53;:::i;:::-;2317:63;;2272:118;2429:2;2455:53;2500:7;2491:6;2480:9;2476:22;2455:53;:::i;:::-;2445:63;;2400:118;1906:619;;;;;:::o;2531:468::-;2596:6;2604;2653:2;2641:9;2632:7;2628:23;2624:32;2621:119;;;2659:79;;:::i;:::-;2621:119;2779:1;2804:53;2849:7;2840:6;2829:9;2825:22;2804:53;:::i;:::-;2794:63;;2750:117;2906:2;2932:50;2974:7;2965:6;2954:9;2950:22;2932:50;:::i;:::-;2922:60;;2877:115;2531:468;;;;;:::o;3005:474::-;3073:6;3081;3130:2;3118:9;3109:7;3105:23;3101:32;3098:119;;;3136:79;;:::i;:::-;3098:119;3256:1;3281:53;3326:7;3317:6;3306:9;3302:22;3281:53;:::i;:::-;3271:63;;3227:117;3383:2;3409:53;3454:7;3445:6;3434:9;3430:22;3409:53;:::i;:::-;3399:63;;3354:118;3005:474;;;;;:::o;3485:329::-;3544:6;3593:2;3581:9;3572:7;3568:23;3564:32;3561:119;;;3599:79;;:::i;:::-;3561:119;3719:1;3744:53;3789:7;3780:6;3769:9;3765:22;3744:53;:::i;:::-;3734:63;;3690:117;3485:329;;;;:::o;3820:663::-;3908:6;3916;3924;3973:2;3961:9;3952:7;3948:23;3944:32;3941:119;;;3979:79;;:::i;:::-;3941:119;4099:1;4124:64;4180:7;4171:6;4160:9;4156:22;4124:64;:::i;:::-;4114:74;;4070:128;4237:2;4263:64;4319:7;4310:6;4299:9;4295:22;4263:64;:::i;:::-;4253:74;;4208:129;4376:2;4402:64;4458:7;4449:6;4438:9;4434:22;4402:64;:::i;:::-;4392:74;;4347:129;3820:663;;;;;:::o;4489:179::-;4558:10;4579:46;4621:3;4613:6;4579:46;:::i;:::-;4657:4;4652:3;4648:14;4634:28;;4489:179;;;;:::o;4674:108::-;4751:24;4769:5;4751:24;:::i;:::-;4746:3;4739:37;4674:108;;:::o;4788:118::-;4875:24;4893:5;4875:24;:::i;:::-;4870:3;4863:37;4788:118;;:::o;4942:732::-;5061:3;5090:54;5138:5;5090:54;:::i;:::-;5160:86;5239:6;5234:3;5160:86;:::i;:::-;5153:93;;5270:56;5320:5;5270:56;:::i;:::-;5349:7;5380:1;5365:284;5390:6;5387:1;5384:13;5365:284;;;5466:6;5460:13;5493:63;5552:3;5537:13;5493:63;:::i;:::-;5486:70;;5579:60;5632:6;5579:60;:::i;:::-;5569:70;;5425:224;5412:1;5409;5405:9;5400:14;;5365:284;;;5369:14;5665:3;5658:10;;5066:608;;;4942:732;;;;:::o;5680:109::-;5761:21;5776:5;5761:21;:::i;:::-;5756:3;5749:34;5680:109;;:::o;5795:183::-;5908:63;5965:5;5908:63;:::i;:::-;5903:3;5896:76;5795:183;;:::o;5984:147::-;6079:45;6118:5;6079:45;:::i;:::-;6074:3;6067:58;5984:147;;:::o;6137:364::-;6225:3;6253:39;6286:5;6253:39;:::i;:::-;6308:71;6372:6;6367:3;6308:71;:::i;:::-;6301:78;;6388:52;6433:6;6428:3;6421:4;6414:5;6410:16;6388:52;:::i;:::-;6465:29;6487:6;6465:29;:::i;:::-;6460:3;6456:39;6449:46;;6229:272;6137:364;;;;:::o;6507:366::-;6649:3;6670:67;6734:2;6729:3;6670:67;:::i;:::-;6663:74;;6746:93;6835:3;6746:93;:::i;:::-;6864:2;6859:3;6855:12;6848:19;;6507:366;;;:::o;6879:::-;7021:3;7042:67;7106:2;7101:3;7042:67;:::i;:::-;7035:74;;7118:93;7207:3;7118:93;:::i;:::-;7236:2;7231:3;7227:12;7220:19;;6879:366;;;:::o;7251:::-;7393:3;7414:67;7478:2;7473:3;7414:67;:::i;:::-;7407:74;;7490:93;7579:3;7490:93;:::i;:::-;7608:2;7603:3;7599:12;7592:19;;7251:366;;;:::o;7623:::-;7765:3;7786:67;7850:2;7845:3;7786:67;:::i;:::-;7779:74;;7862:93;7951:3;7862:93;:::i;:::-;7980:2;7975:3;7971:12;7964:19;;7623:366;;;:::o;7995:::-;8137:3;8158:67;8222:2;8217:3;8158:67;:::i;:::-;8151:74;;8234:93;8323:3;8234:93;:::i;:::-;8352:2;8347:3;8343:12;8336:19;;7995:366;;;:::o;8367:::-;8509:3;8530:67;8594:2;8589:3;8530:67;:::i;:::-;8523:74;;8606:93;8695:3;8606:93;:::i;:::-;8724:2;8719:3;8715:12;8708:19;;8367:366;;;:::o;8739:::-;8881:3;8902:67;8966:2;8961:3;8902:67;:::i;:::-;8895:74;;8978:93;9067:3;8978:93;:::i;:::-;9096:2;9091:3;9087:12;9080:19;;8739:366;;;:::o;9111:::-;9253:3;9274:67;9338:2;9333:3;9274:67;:::i;:::-;9267:74;;9350:93;9439:3;9350:93;:::i;:::-;9468:2;9463:3;9459:12;9452:19;;9111:366;;;:::o;9483:::-;9625:3;9646:67;9710:2;9705:3;9646:67;:::i;:::-;9639:74;;9722:93;9811:3;9722:93;:::i;:::-;9840:2;9835:3;9831:12;9824:19;;9483:366;;;:::o;9855:::-;9997:3;10018:67;10082:2;10077:3;10018:67;:::i;:::-;10011:74;;10094:93;10183:3;10094:93;:::i;:::-;10212:2;10207:3;10203:12;10196:19;;9855:366;;;:::o;10227:::-;10369:3;10390:67;10454:2;10449:3;10390:67;:::i;:::-;10383:74;;10466:93;10555:3;10466:93;:::i;:::-;10584:2;10579:3;10575:12;10568:19;;10227:366;;;:::o;10599:::-;10741:3;10762:67;10826:2;10821:3;10762:67;:::i;:::-;10755:74;;10838:93;10927:3;10838:93;:::i;:::-;10956:2;10951:3;10947:12;10940:19;;10599:366;;;:::o;10971:::-;11113:3;11134:67;11198:2;11193:3;11134:67;:::i;:::-;11127:74;;11210:93;11299:3;11210:93;:::i;:::-;11328:2;11323:3;11319:12;11312:19;;10971:366;;;:::o;11343:::-;11485:3;11506:67;11570:2;11565:3;11506:67;:::i;:::-;11499:74;;11582:93;11671:3;11582:93;:::i;:::-;11700:2;11695:3;11691:12;11684:19;;11343:366;;;:::o;11715:118::-;11802:24;11820:5;11802:24;:::i;:::-;11797:3;11790:37;11715:118;;:::o;11839:112::-;11922:22;11938:5;11922:22;:::i;:::-;11917:3;11910:35;11839:112;;:::o;11957:222::-;12050:4;12088:2;12077:9;12073:18;12065:26;;12101:71;12169:1;12158:9;12154:17;12145:6;12101:71;:::i;:::-;11957:222;;;;:::o;12185:807::-;12434:4;12472:3;12461:9;12457:19;12449:27;;12486:71;12554:1;12543:9;12539:17;12530:6;12486:71;:::i;:::-;12567:72;12635:2;12624:9;12620:18;12611:6;12567:72;:::i;:::-;12649:80;12725:2;12714:9;12710:18;12701:6;12649:80;:::i;:::-;12739;12815:2;12804:9;12800:18;12791:6;12739:80;:::i;:::-;12829:73;12897:3;12886:9;12882:19;12873:6;12829:73;:::i;:::-;12912;12980:3;12969:9;12965:19;12956:6;12912:73;:::i;:::-;12185:807;;;;;;;;;:::o;12998:210::-;13085:4;13123:2;13112:9;13108:18;13100:26;;13136:65;13198:1;13187:9;13183:17;13174:6;13136:65;:::i;:::-;12998:210;;;;:::o;13214:274::-;13333:4;13371:2;13360:9;13356:18;13348:26;;13384:97;13478:1;13467:9;13463:17;13454:6;13384:97;:::i;:::-;13214:274;;;;:::o;13494:313::-;13607:4;13645:2;13634:9;13630:18;13622:26;;13694:9;13688:4;13684:20;13680:1;13669:9;13665:17;13658:47;13722:78;13795:4;13786:6;13722:78;:::i;:::-;13714:86;;13494:313;;;;:::o;13813:419::-;13979:4;14017:2;14006:9;14002:18;13994:26;;14066:9;14060:4;14056:20;14052:1;14041:9;14037:17;14030:47;14094:131;14220:4;14094:131;:::i;:::-;14086:139;;13813:419;;;:::o;14238:::-;14404:4;14442:2;14431:9;14427:18;14419:26;;14491:9;14485:4;14481:20;14477:1;14466:9;14462:17;14455:47;14519:131;14645:4;14519:131;:::i;:::-;14511:139;;14238:419;;;:::o;14663:::-;14829:4;14867:2;14856:9;14852:18;14844:26;;14916:9;14910:4;14906:20;14902:1;14891:9;14887:17;14880:47;14944:131;15070:4;14944:131;:::i;:::-;14936:139;;14663:419;;;:::o;15088:::-;15254:4;15292:2;15281:9;15277:18;15269:26;;15341:9;15335:4;15331:20;15327:1;15316:9;15312:17;15305:47;15369:131;15495:4;15369:131;:::i;:::-;15361:139;;15088:419;;;:::o;15513:::-;15679:4;15717:2;15706:9;15702:18;15694:26;;15766:9;15760:4;15756:20;15752:1;15741:9;15737:17;15730:47;15794:131;15920:4;15794:131;:::i;:::-;15786:139;;15513:419;;;:::o;15938:::-;16104:4;16142:2;16131:9;16127:18;16119:26;;16191:9;16185:4;16181:20;16177:1;16166:9;16162:17;16155:47;16219:131;16345:4;16219:131;:::i;:::-;16211:139;;15938:419;;;:::o;16363:::-;16529:4;16567:2;16556:9;16552:18;16544:26;;16616:9;16610:4;16606:20;16602:1;16591:9;16587:17;16580:47;16644:131;16770:4;16644:131;:::i;:::-;16636:139;;16363:419;;;:::o;16788:::-;16954:4;16992:2;16981:9;16977:18;16969:26;;17041:9;17035:4;17031:20;17027:1;17016:9;17012:17;17005:47;17069:131;17195:4;17069:131;:::i;:::-;17061:139;;16788:419;;;:::o;17213:::-;17379:4;17417:2;17406:9;17402:18;17394:26;;17466:9;17460:4;17456:20;17452:1;17441:9;17437:17;17430:47;17494:131;17620:4;17494:131;:::i;:::-;17486:139;;17213:419;;;:::o;17638:::-;17804:4;17842:2;17831:9;17827:18;17819:26;;17891:9;17885:4;17881:20;17877:1;17866:9;17862:17;17855:47;17919:131;18045:4;17919:131;:::i;:::-;17911:139;;17638:419;;;:::o;18063:::-;18229:4;18267:2;18256:9;18252:18;18244:26;;18316:9;18310:4;18306:20;18302:1;18291:9;18287:17;18280:47;18344:131;18470:4;18344:131;:::i;:::-;18336:139;;18063:419;;;:::o;18488:::-;18654:4;18692:2;18681:9;18677:18;18669:26;;18741:9;18735:4;18731:20;18727:1;18716:9;18712:17;18705:47;18769:131;18895:4;18769:131;:::i;:::-;18761:139;;18488:419;;;:::o;18913:::-;19079:4;19117:2;19106:9;19102:18;19094:26;;19166:9;19160:4;19156:20;19152:1;19141:9;19137:17;19130:47;19194:131;19320:4;19194:131;:::i;:::-;19186:139;;18913:419;;;:::o;19338:::-;19504:4;19542:2;19531:9;19527:18;19519:26;;19591:9;19585:4;19581:20;19577:1;19566:9;19562:17;19555:47;19619:131;19745:4;19619:131;:::i;:::-;19611:139;;19338:419;;;:::o;19763:222::-;19856:4;19894:2;19883:9;19879:18;19871:26;;19907:71;19975:1;19964:9;19960:17;19951:6;19907:71;:::i;:::-;19763:222;;;;:::o;19991:831::-;20254:4;20292:3;20281:9;20277:19;20269:27;;20306:71;20374:1;20363:9;20359:17;20350:6;20306:71;:::i;:::-;20387:80;20463:2;20452:9;20448:18;20439:6;20387:80;:::i;:::-;20514:9;20508:4;20504:20;20499:2;20488:9;20484:18;20477:48;20542:108;20645:4;20636:6;20542:108;:::i;:::-;20534:116;;20660:72;20728:2;20717:9;20713:18;20704:6;20660:72;:::i;:::-;20742:73;20810:3;20799:9;20795:19;20786:6;20742:73;:::i;:::-;19991:831;;;;;;;;:::o;20828:214::-;20917:4;20955:2;20944:9;20940:18;20932:26;;20968:67;21032:1;21021:9;21017:17;21008:6;20968:67;:::i;:::-;20828:214;;;;:::o;21129:132::-;21196:4;21219:3;21211:11;;21249:4;21244:3;21240:14;21232:22;;21129:132;;;:::o;21267:114::-;21334:6;21368:5;21362:12;21352:22;;21267:114;;;:::o;21387:99::-;21439:6;21473:5;21467:12;21457:22;;21387:99;;;:::o;21492:113::-;21562:4;21594;21589:3;21585:14;21577:22;;21492:113;;;:::o;21611:184::-;21710:11;21744:6;21739:3;21732:19;21784:4;21779:3;21775:14;21760:29;;21611:184;;;;:::o;21801:169::-;21885:11;21919:6;21914:3;21907:19;21959:4;21954:3;21950:14;21935:29;;21801:169;;;;:::o;21976:305::-;22016:3;22035:20;22053:1;22035:20;:::i;:::-;22030:25;;22069:20;22087:1;22069:20;:::i;:::-;22064:25;;22223:1;22155:66;22151:74;22148:1;22145:81;22142:107;;;22229:18;;:::i;:::-;22142:107;22273:1;22270;22266:9;22259:16;;21976:305;;;;:::o;22287:237::-;22325:3;22344:18;22360:1;22344:18;:::i;:::-;22339:23;;22376:18;22392:1;22376:18;:::i;:::-;22371:23;;22466:1;22460:4;22456:12;22453:1;22450:19;22447:45;;;22472:18;;:::i;:::-;22447:45;22516:1;22513;22509:9;22502:16;;22287:237;;;;:::o;22530:185::-;22570:1;22587:20;22605:1;22587:20;:::i;:::-;22582:25;;22621:20;22639:1;22621:20;:::i;:::-;22616:25;;22660:1;22650:35;;22665:18;;:::i;:::-;22650:35;22707:1;22704;22700:9;22695:14;;22530:185;;;;:::o;22721:348::-;22761:7;22784:20;22802:1;22784:20;:::i;:::-;22779:25;;22818:20;22836:1;22818:20;:::i;:::-;22813:25;;23006:1;22938:66;22934:74;22931:1;22928:81;22923:1;22916:9;22909:17;22905:105;22902:131;;;23013:18;;:::i;:::-;22902:131;23061:1;23058;23054:9;23043:20;;22721:348;;;;:::o;23075:191::-;23115:4;23135:20;23153:1;23135:20;:::i;:::-;23130:25;;23169:20;23187:1;23169:20;:::i;:::-;23164:25;;23208:1;23205;23202:8;23199:34;;;23213:18;;:::i;:::-;23199:34;23258:1;23255;23251:9;23243:17;;23075:191;;;;:::o;23272:96::-;23309:7;23338:24;23356:5;23338:24;:::i;:::-;23327:35;;23272:96;;;:::o;23374:90::-;23408:7;23451:5;23444:13;23437:21;23426:32;;23374:90;;;:::o;23470:126::-;23507:7;23547:42;23540:5;23536:54;23525:65;;23470:126;;;:::o;23602:77::-;23639:7;23668:5;23657:16;;23602:77;;;:::o;23685:86::-;23720:7;23760:4;23753:5;23749:16;23738:27;;23685:86;;;:::o;23777:152::-;23853:9;23886:37;23917:5;23886:37;:::i;:::-;23873:50;;23777:152;;;:::o;23935:121::-;23993:9;24026:24;24044:5;24026:24;:::i;:::-;24013:37;;23935:121;;;:::o;24062:126::-;24112:9;24145:37;24176:5;24145:37;:::i;:::-;24132:50;;24062:126;;;:::o;24194:113::-;24244:9;24277:24;24295:5;24277:24;:::i;:::-;24264:37;;24194:113;;;:::o;24313:307::-;24381:1;24391:113;24405:6;24402:1;24399:13;24391:113;;;24490:1;24485:3;24481:11;24475:18;24471:1;24466:3;24462:11;24455:39;24427:2;24424:1;24420:10;24415:15;;24391:113;;;24522:6;24519:1;24516:13;24513:101;;;24602:1;24593:6;24588:3;24584:16;24577:27;24513:101;24362:258;24313:307;;;:::o;24626:320::-;24670:6;24707:1;24701:4;24697:12;24687:22;;24754:1;24748:4;24744:12;24775:18;24765:81;;24831:4;24823:6;24819:17;24809:27;;24765:81;24893:2;24885:6;24882:14;24862:18;24859:38;24856:84;;;24912:18;;:::i;:::-;24856:84;24677:269;24626:320;;;:::o;24952:180::-;25000:77;24997:1;24990:88;25097:4;25094:1;25087:15;25121:4;25118:1;25111:15;25138:180;25186:77;25183:1;25176:88;25283:4;25280:1;25273:15;25307:4;25304:1;25297:15;25324:180;25372:77;25369:1;25362:88;25469:4;25466:1;25459:15;25493:4;25490:1;25483:15;25510:180;25558:77;25555:1;25548:88;25655:4;25652:1;25645:15;25679:4;25676:1;25669:15;25696:180;25744:77;25741:1;25734:88;25841:4;25838:1;25831:15;25865:4;25862:1;25855:15;26005:117;26114:1;26111;26104:12;26128:102;26169:6;26220:2;26216:7;26211:2;26204:5;26200:14;26196:28;26186:38;;26128:102;;;:::o;26236:222::-;26376:34;26372:1;26364:6;26360:14;26353:58;26445:5;26440:2;26432:6;26428:15;26421:30;26236:222;:::o;26464:225::-;26604:34;26600:1;26592:6;26588:14;26581:58;26673:8;26668:2;26660:6;26656:15;26649:33;26464:225;:::o;26695:221::-;26835:34;26831:1;26823:6;26819:14;26812:58;26904:4;26899:2;26891:6;26887:15;26880:29;26695:221;:::o;26922:177::-;27062:29;27058:1;27050:6;27046:14;27039:53;26922:177;:::o;27105:166::-;27245:18;27241:1;27233:6;27229:14;27222:42;27105:166;:::o;27277:174::-;27417:26;27413:1;27405:6;27401:14;27394:50;27277:174;:::o;27457:220::-;27597:34;27593:1;27585:6;27581:14;27574:58;27666:3;27661:2;27653:6;27649:15;27642:28;27457:220;:::o;27683:182::-;27823:34;27819:1;27811:6;27807:14;27800:58;27683:182;:::o;27871:165::-;28011:17;28007:1;27999:6;27995:14;27988:41;27871:165;:::o;28042:220::-;28182:34;28178:1;28170:6;28166:14;28159:58;28251:3;28246:2;28238:6;28234:15;28227:28;28042:220;:::o;28268:226::-;28408:34;28404:1;28396:6;28392:14;28385:58;28477:9;28472:2;28464:6;28460:15;28453:34;28268:226;:::o;28500:224::-;28640:34;28636:1;28628:6;28624:14;28617:58;28709:7;28704:2;28696:6;28692:15;28685:32;28500:224;:::o;28730:223::-;28870:34;28866:1;28858:6;28854:14;28847:58;28939:6;28934:2;28926:6;28922:15;28915:31;28730:223;:::o;28959:221::-;29099:34;29095:1;29087:6;29083:14;29076:58;29168:4;29163:2;29155:6;29151:15;29144:29;28959:221;:::o;29186:122::-;29259:24;29277:5;29259:24;:::i;:::-;29252:5;29249:35;29239:63;;29298:1;29295;29288:12;29239:63;29186:122;:::o;29314:116::-;29384:21;29399:5;29384:21;:::i;:::-;29377:5;29374:32;29364:60;;29420:1;29417;29410:12;29364:60;29314:116;:::o;29436:122::-;29509:24;29527:5;29509:24;:::i;:::-;29502:5;29499:35;29489:63;;29548:1;29545;29538:12;29489:63;29436:122;:::o

Swarm Source

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