ETH Price: $3,016.29 (+2.90%)
Gas: 1 Gwei

Token

HarryPotterObamaDoKongDong69Inu ($ANUL)
 

Overview

Max Total Supply

100,000,000,000 $ANUL

Holders

94

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
omgiwannajeetthis.eth
Balance
241,075,742.173232557943877051 $ANUL

Value
$0.00
0xe12b2e891ca9f48b2022750fceaa414fed1768db
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:
Token

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-14
*/

// SPDX-License-Identifier: MIT
// File: @openzeppelin/contracts/utils/Context.sol


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

pragma solidity ^0.8.0;

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

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

// File: @openzeppelin/contracts/access/Ownable.sol


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


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

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

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

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

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

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

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

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

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

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol


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

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

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

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

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

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

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

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

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

// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol


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


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

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

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

// File: @openzeppelin/contracts/token/ERC20/ERC20.sol


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


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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * 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() {
        
        _name = "HarryPotterObamaDoKongDong69Inu";
        _symbol = "$ANUL";
        
    }

    /**
     * @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:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

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

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

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

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

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// File: contracts/memetesthpo.sol


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

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

interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function getAmountsOut(
        uint amountIn,
        address[] calldata path
    ) external view returns (uint[] memory amounts);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);
    function swapExactTokensForETH(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

contract Token is ERC20, Ownable {

    IDexRouter public constant ROUTER = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable pair ;
    
    bool public limited;
    uint256 public maxHoldingAmount;


    bool public tradingEnabled;
    uint256 public launchTime;

    mapping (address => bool) public isWhitelisted;
    mapping(address => bool) public isBlacklisted;    
    mapping (address => bool) public isTaxExempt;

    uint256 public transferGas = 25000;
    uint256 public tax = 200;
    uint256 constant TAX_DENOMINATOR = 10000;
    address public marketingWallet;

    
    uint256 public swapThreshold = 1;
    bool public swapWholeStorage = true;
    bool public swapEnabled = true;
    bool inSwap;

    event EnableTrading();
    event DepositMarketing(address account, uint256 amount);
    event TriggerSwapBack(uint256 tokenAmount);
    event newMarketingWalletSet(address newWallet);
    event newTaxSet(uint256 newTax);
    event walletLimitsUpdated(bool isLimited,uint256 maxHoldingAmount);

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

    constructor(address _marketingWallet) {
        isWhitelisted[msg.sender] = true;
        isTaxExempt[msg.sender] = true;
        pair = IDexFactory(ROUTER.factory()).createPair(address(this), ROUTER.WETH());
        _approve(address(this), address(ROUTER), type(uint256).max);
        isWhitelisted[address(ROUTER)] = true;
        _mint(msg.sender, 10 * (10 ** 10) * (10 ** decimals()));
        maxHoldingAmount = totalSupply()*25 / 10000 ; //0.25% supply
        limited=true;
        marketingWallet = _marketingWallet;
        isWhitelisted[marketingWallet] = true;
        isTaxExempt[marketingWallet] = true;
    }


    function _transfer(address sender, address recipient, uint256 amount) internal override {

        if(!tradingEnabled) { 
            require(isWhitelisted[sender] || isWhitelisted[recipient], "Trading is disabled"); 
            super._transfer(sender, recipient, amount);

        } else { 
            require(!isBlacklisted[sender] && !isBlacklisted[recipient], "Blacklisted"); 

            if (inSwap) {
                super._transfer(sender, recipient, amount);
                return;
            }
            // Swap
            if (_shouldSwapBack(recipient)) {
                uint256 swapAmount = swapWholeStorage ? balanceOf(address(this)) : swapThreshold;
                _swapBack(swapAmount);
            }

            // Transfer
            if (limited && sender == pair) {
                require(super.balanceOf(recipient) + amount <= maxHoldingAmount, "Max wallet exceeded.");
            }

            // Tax
            uint256 amountReceived = isTaxExempt[sender] ? amount : _takeTax(sender, recipient, amount);
            super._transfer(sender, recipient, amountReceived);
        
        }

       
    }

    function _takeTax(address sender, address recipient, uint256 amount) private returns (uint256) {
        if (amount == 0) { return 0; }

        uint256 taxAmount = amount * _getTotalTax(sender, recipient) / TAX_DENOMINATOR;
        if (taxAmount > 0) { super._transfer(sender, address(this), taxAmount); }

        return amount - taxAmount;
    }

    function _getTotalTax(address sender, address recipient) private view returns (uint256) {
        if (sender == pair || recipient == pair) {
            return tax;
        } else {
            return 0;
        }
    }

    function setTax(uint256 newTax) external {
        require (msg.sender==marketingWallet,"Not allowed.");
        require (newTax<=1000,"Tax too high");
        tax = newTax;
        emit newTaxSet(tax);
    }


    function enableTrading() external {
        require (msg.sender==marketingWallet,"Not allowed.");
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
        launchTime = block.timestamp;
        emit EnableTrading();
    }


    function blacklist(address _address, bool _isBlacklisted) external {
        require (msg.sender==marketingWallet,"Not allowed.");
        isBlacklisted[_address] = _isBlacklisted;
    }
    function blacklistMulti( address[] memory _addresses , bool _isBlacklisted) external {
        require (msg.sender==marketingWallet,"Not allowed.");
        for(uint i=0; i<_addresses.length; i++) {
            if(_addresses[i]!=address(0)) {
                isBlacklisted[_addresses[i]] = _isBlacklisted;
            }
        }
    }

    function setIsWhitelisted(address account, bool exempt) external onlyOwner {
        isWhitelisted[account] = exempt;
    }

    function setWalletLimits(bool _limited, uint256 _maxHoldingAmount) external {
        require (msg.sender==marketingWallet,"Not allowed.");
        limited = _limited;
        maxHoldingAmount = _maxHoldingAmount * 10**decimals();
        emit walletLimitsUpdated(limited,maxHoldingAmount);
    }

    function setMarketingWallet(address newWallet) external onlyOwner  {
        marketingWallet = newWallet;
        isWhitelisted[marketingWallet] = true;
        isTaxExempt[marketingWallet] = true;
        emit newMarketingWalletSet(marketingWallet);
    }

    //swap
    function updateSwapbackSettings(bool enableSwap, uint256 newSwapThreshold) external {
        require (msg.sender==marketingWallet,"Not allowed.");
        swapEnabled = enableSwap;
        swapThreshold = newSwapThreshold * 10**decimals();
    }
    function updateSwapWholeStorage(bool _swapWholeStorage) external {
        require (msg.sender==marketingWallet,"Not allowed.");
        swapWholeStorage = _swapWholeStorage;
    }
    function _shouldSwapBack(address recipient) private view returns (bool) {
        return recipient == pair && swapEnabled && balanceOf(address(this)) >= swapThreshold;
    }

    function _swapBack(uint256 swapAmount) private swapping {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = ROUTER.WETH();
        _approve(address(this),  address(ROUTER), swapAmount);
        ROUTER.swapExactTokensForETH(
            swapAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 amountETH = address(this).balance;
        (bool marketingSuccess,) = payable(marketingWallet).call{value: amountETH, gas: transferGas}("");
        if (marketingSuccess) { emit DepositMarketing(marketingWallet, amountETH); }
    }

    function recoverETH() external {
        require (msg.sender==marketingWallet,"Not allowed.");
        uint256 amount = address(this).balance;
        (bool sent,) = payable(marketingWallet).call{value: amount, gas: transferGas}("");
        require(sent, "Tx failed");
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"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":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DepositMarketing","type":"event"},{"anonymous":false,"inputs":[],"name":"EnableTrading","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"TriggerSwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newWallet","type":"address"}],"name":"newMarketingWalletSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newTax","type":"uint256"}],"name":"newTaxSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isLimited","type":"bool"},{"indexed":false,"internalType":"uint256","name":"maxHoldingAmount","type":"uint256"}],"name":"walletLimitsUpdated","type":"event"},{"inputs":[],"name":"ROUTER","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"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":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isBlacklisted","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"bool","name":"_isBlacklisted","type":"bool"}],"name":"blacklistMulti","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":"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":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTaxExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldingAmount","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTax","type":"uint256"}],"name":"setTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_limited","type":"bool"},{"internalType":"uint256","name":"_maxHoldingAmount","type":"uint256"}],"name":"setWalletLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapWholeStorage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapWholeStorage","type":"bool"}],"name":"updateSwapWholeStorage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwap","type":"bool"},{"internalType":"uint256","name":"newSwapThreshold","type":"uint256"}],"name":"updateSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526161a8600c5560c8600d556001600f556001601060006101000a81548160ff0219169083151502179055506001601060016101000a81548160ff0219169083151502179055503480156200005757600080fd5b5060405162004eb038038062004eb083398181016040528101906200007d919062000b4d565b6040518060400160405280601f81526020017f4861727279506f747465724f62616d61446f4b6f6e67446f6e673639496e750081525060039080519060200190620000ca92919062000a86565b506040518060400160405280600581526020017f24414e554c000000000000000000000000000000000000000000000000000000815250600490805190602001906200011892919062000a86565b50620001396200012d6200065a60201b60201c565b6200066260201b60201c565b6001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200024457600080fd5b505afa15801562000259573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027f919062000b4d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002f657600080fd5b505afa1580156200030b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000331919062000b4d565b6040518363ffffffff1660e01b81526004016200035092919062000c16565b602060405180830381600087803b1580156200036b57600080fd5b505af115801562000380573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a6919062000b4d565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250506200042330737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200072860201b60201c565b600160096000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004d033620004a4620008fb60201b60201c565b600a620004b2919062000dc7565b64174876e800620004c4919062000f04565b6200090460201b60201c565b6127106019620004e562000a7260201b60201c565b620004f1919062000f04565b620004fd919062000d34565b6006819055506001600560146101000a81548160ff02191690831515021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505062001166565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156200079b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007929062000c65565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200080e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008059062000c43565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620008ee919062000ca9565b60405180910390a3505050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000977576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200096e9062000c87565b60405180910390fd5b6200098b6000838362000a7c60201b60201c565b80600260008282546200099f919062000cd7565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a52919062000ca9565b60405180910390a362000a6e6000838362000a8160201b60201c565b5050565b6000600254905090565b505050565b505050565b82805462000a949062000fb0565b90600052602060002090601f01602090048101928262000ab8576000855562000b04565b82601f1062000ad357805160ff191683800117855562000b04565b8280016001018555821562000b04579182015b8281111562000b0357825182559160200191906001019062000ae6565b5b50905062000b13919062000b17565b5090565b5b8082111562000b3257600081600090555060010162000b18565b5090565b60008151905062000b47816200114c565b92915050565b60006020828403121562000b665762000b6562001073565b5b600062000b768482850162000b36565b91505092915050565b62000b8a8162000f65565b82525050565b600062000b9f60228362000cc6565b915062000bac8262001085565b604082019050919050565b600062000bc660248362000cc6565b915062000bd382620010d4565b604082019050919050565b600062000bed601f8362000cc6565b915062000bfa8262001123565b602082019050919050565b62000c108162000f99565b82525050565b600060408201905062000c2d600083018562000b7f565b62000c3c602083018462000b7f565b9392505050565b6000602082019050818103600083015262000c5e8162000b90565b9050919050565b6000602082019050818103600083015262000c808162000bb7565b9050919050565b6000602082019050818103600083015262000ca28162000bde565b9050919050565b600060208201905062000cc0600083018462000c05565b92915050565b600082825260208201905092915050565b600062000ce48262000f99565b915062000cf18362000f99565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d295762000d2862000fe6565b5b828201905092915050565b600062000d418262000f99565b915062000d4e8362000f99565b92508262000d615762000d6062001015565b5b828204905092915050565b6000808291508390505b600185111562000dbe5780860481111562000d965762000d9562000fe6565b5b600185161562000da65780820291505b808102905062000db68562001078565b945062000d76565b94509492505050565b600062000dd48262000f99565b915062000de18362000fa3565b925062000e107fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000e18565b905092915050565b60008262000e2a576001905062000efd565b8162000e3a576000905062000efd565b816001811462000e53576002811462000e5e5762000e94565b600191505062000efd565b60ff84111562000e735762000e7262000fe6565b5b8360020a91508482111562000e8d5762000e8c62000fe6565b5b5062000efd565b5060208310610133831016604e8410600b841016171562000ece5782820a90508381111562000ec85762000ec762000fe6565b5b62000efd565b62000edd848484600162000d6c565b9250905081840481111562000ef75762000ef662000fe6565b5b81810290505b9392505050565b600062000f118262000f99565b915062000f1e8362000f99565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f5a5762000f5962000fe6565b5b828202905092915050565b600062000f728262000f79565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000600282049050600182168062000fc957607f821691505b6020821081141562000fe05762000fdf62001044565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b60008160011c9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b620011578162000f65565b81146200116357600080fd5b50565b60805160601c613d0f620011a16000396000818161159001528181611e3b015281816122a301528181612718015261276d0152613d0f6000f3fe6080604052600436106102345760003560e01c8063715018a61161012e578063a3578c68116100ab578063dd62ed3e1161006f578063dd62ed3e1461083c578063eea1f61314610879578063f2fde38b146108a2578063fa03f797146108cb578063fe575a87146108f65761023b565b8063a3578c6814610743578063a457c2d71461076e578063a8aa1b31146107ab578063a9059cbb146107d6578063ba286063146108135761023b565b80638a8c523c116100f25780638a8c523c146106825780638da5cb5b14610699578063912e2f82146106c457806395d89b41146106ed57806399c8d556146107185761023b565b8063715018a6146105bf57806375f0a874146105d6578063790ca41314610601578063860a32ec1461062c57806389f9a1d3146106575761023b565b8063313ce567116101bc5780634ada218b116101805780634ada218b146104da57806354835808146105055780635d098b381461052e5780636ddd17131461055757806370a08231146105825761023b565b8063313ce567146103e157806332fe7b261461040c57806339509351146104375780633af32abf14610474578063404e5129146104b15761023b565b806309ec923a1161020357806309ec923a146102ea57806316c2be6b1461031357806318160ddd1461035057806323b872dd1461037b5780632e5bb6ff146103b85761023b565b80630445b667146102405780630614117a1461026b57806306fdde0314610282578063095ea7b3146102ad5761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b50610255610933565b604051610262919061326b565b60405180910390f35b34801561027757600080fd5b50610280610939565b005b34801561028e57600080fd5b50610297610aa5565b6040516102a49190613049565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190612aa7565b610b37565b6040516102e19190612fea565b60405180910390f35b3480156102f657600080fd5b50610311600480360381019061030c9190612a67565b610b5a565b005b34801561031f57600080fd5b5061033a6004803603810190610335919061297a565b610bbd565b6040516103479190612fea565b60405180910390f35b34801561035c57600080fd5b50610365610bdd565b604051610372919061326b565b60405180910390f35b34801561038757600080fd5b506103a2600480360381019061039d9190612a14565b610be7565b6040516103af9190612fea565b60405180910390f35b3480156103c457600080fd5b506103df60048036038101906103da9190612bf9565b610c16565b005b3480156103ed57600080fd5b506103f6610d2e565b60405161040391906132e0565b60405180910390f35b34801561041857600080fd5b50610421610d37565b60405161042e919061302e565b60405180910390f35b34801561044357600080fd5b5061045e60048036038101906104599190612aa7565b610d4f565b60405161046b9190612fea565b60405180910390f35b34801561048057600080fd5b5061049b6004803603810190610496919061297a565b610d86565b6040516104a89190612fea565b60405180910390f35b3480156104bd57600080fd5b506104d860048036038101906104d39190612a67565b610da6565b005b3480156104e657600080fd5b506104ef610e91565b6040516104fc9190612fea565b60405180910390f35b34801561051157600080fd5b5061052c60048036038101906105279190612ae7565b610ea4565b005b34801561053a57600080fd5b506105556004803603810190610550919061297a565b611018565b005b34801561056357600080fd5b5061056c6111b1565b6040516105799190612fea565b60405180910390f35b34801561058e57600080fd5b506105a960048036038101906105a4919061297a565b6111c4565b6040516105b6919061326b565b60405180910390f35b3480156105cb57600080fd5b506105d461120c565b005b3480156105e257600080fd5b506105eb611220565b6040516105f89190612fa6565b60405180910390f35b34801561060d57600080fd5b50610616611246565b604051610623919061326b565b60405180910390f35b34801561063857600080fd5b5061064161124c565b60405161064e9190612fea565b60405180910390f35b34801561066357600080fd5b5061066c61125f565b604051610679919061326b565b60405180910390f35b34801561068e57600080fd5b50610697611265565b005b3480156106a557600080fd5b506106ae611395565b6040516106bb9190612fa6565b60405180910390f35b3480156106d057600080fd5b506106eb60048036038101906106e69190612b8c565b6113bf565b005b3480156106f957600080fd5b5061070261146c565b60405161070f9190613049565b60405180910390f35b34801561072457600080fd5b5061072d6114fe565b60405161073a919061326b565b60405180910390f35b34801561074f57600080fd5b50610758611504565b6040516107659190612fea565b60405180910390f35b34801561077a57600080fd5b5061079560048036038101906107909190612aa7565b611517565b6040516107a29190612fea565b60405180910390f35b3480156107b757600080fd5b506107c061158e565b6040516107cd9190612fa6565b60405180910390f35b3480156107e257600080fd5b506107fd60048036038101906107f89190612aa7565b6115b2565b60405161080a9190612fea565b60405180910390f35b34801561081f57600080fd5b5061083a60048036038101906108359190612bb9565b6115d5565b005b34801561084857600080fd5b50610863600480360381019061085e91906129d4565b6116a8565b604051610870919061326b565b60405180910390f35b34801561088557600080fd5b506108a0600480360381019061089b9190612bb9565b61172f565b005b3480156108ae57600080fd5b506108c960048036038101906108c4919061297a565b61184c565b005b3480156108d757600080fd5b506108e06118d0565b6040516108ed919061326b565b60405180910390f35b34801561090257600080fd5b5061091d6004803603810190610918919061297a565b6118d6565b60405161092a9190612fea565b60405180910390f35b600f5481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c09061308b565b60405180910390fd5b60004790506000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682600c5490604051610a1a90612f91565b600060405180830381858888f193505050503d8060008114610a58576040519150601f19603f3d011682016040523d82523d6000602084013e610a5d565b606091505b5050905080610aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a989061312b565b60405180910390fd5b5050565b606060038054610ab49061372e565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae09061372e565b8015610b2d5780601f10610b0257610100808354040283529160200191610b2d565b820191906000526020600020905b815481529060010190602001808311610b1057829003601f168201915b5050505050905090565b600080610b426118f6565b9050610b4f8185856118fe565b600191505092915050565b610b62611ac9565b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b600080610bf26118f6565b9050610bff858285611b47565b610c0a858585611bd3565b60019150509392505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9d9061308b565b60405180910390fd5b6103e8811115610ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce2906131eb565b60405180910390fd5b80600d819055507f397765b72e518e74f0610de0c4f5c12e5ea0354820ca76d5d95d1972fb4176ce600d54604051610d23919061326b565b60405180910390a150565b60006012905090565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b600080610d5a6118f6565b9050610d7b818585610d6c85896116a8565b610d7691906133d8565b6118fe565b600191505092915050565b60096020528060005260406000206000915054906101000a900460ff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2d9061308b565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600760009054906101000a900460ff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2b9061308b565b60405180910390fd5b60005b825181101561101357600073ffffffffffffffffffffffffffffffffffffffff16838281518110610f6b57610f6a613867565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16146110005781600a6000858481518110610fa657610fa5613867565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b808061100b90613791565b915050610f37565b505050565b611020611ac9565b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f15630e5b9ff3d692866b1a3699c892e9fd786cb6d6e4a776ed5386dfb7effa95600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516111a69190612fa6565b60405180910390a150565b601060019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611214611ac9565b61121e6000611f61565b565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b600560149054906101000a900460ff1681565b60065481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ec9061308b565b60405180910390fd5b600760009054906101000a900460ff1615611345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133c9061320b565b60405180910390fd5b6001600760006101000a81548160ff021916908315150217905550426008819055507f1d97b7cdf6b6f3405cbe398b69512e5419a0ce78232b6e9c6ffbf1466774bd8d60405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461144f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114469061308b565b60405180910390fd5b80601060006101000a81548160ff02191690831515021790555050565b60606004805461147b9061372e565b80601f01602080910402602001604051908101604052809291908181526020018280546114a79061372e565b80156114f45780601f106114c9576101008083540402835291602001916114f4565b820191906000526020600020905b8154815290600101906020018083116114d757829003601f168201915b5050505050905090565b600d5481565b601060009054906101000a900460ff1681565b6000806115226118f6565b9050600061153082866116a8565b905083811015611575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156c9061322b565b60405180910390fd5b61158282868684036118fe565b60019250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806115bd6118f6565b90506115ca818585611bd3565b600191505092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165c9061308b565b60405180910390fd5b81601060016101000a81548160ff021916908315150217905550611687610d2e565b600a61169391906134b2565b8161169e91906135d0565b600f819055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b69061308b565b60405180910390fd5b81600560146101000a81548160ff0219169083151502179055506117e1610d2e565b600a6117ed91906134b2565b816117f891906135d0565b6006819055507f4bd08284097a60a5c140c1373206fa16795bf0ed0bd4bf4177cbca2ab5e7a092600560149054906101000a900460ff16600654604051611840929190613005565b60405180910390a15050565b611854611ac9565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bb906130ab565b60405180910390fd5b6118cd81611f61565b50565b600c5481565b600a6020528060005260406000206000915054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561196e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611965906131cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d5906130cb565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611abc919061326b565b60405180910390a3505050565b611ad16118f6565b73ffffffffffffffffffffffffffffffffffffffff16611aef611395565b73ffffffffffffffffffffffffffffffffffffffff1614611b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3c9061316b565b60405180910390fd5b565b6000611b5384846116a8565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611bcd5781811015611bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb6906130eb565b60405180910390fd5b611bcc84848484036118fe565b5b50505050565b600760009054906101000a900460ff16611cd757600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c885750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbe9061314b565b60405180910390fd5b611cd2838383612027565b611f5b565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d7b5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db19061324b565b60405180910390fd5b601060029054906101000a900460ff1615611ddf57611dda838383612027565b611f5c565b611de88261229f565b15611e22576000601060009054906101000a900460ff16611e0b57600f54611e15565b611e14306111c4565b5b9050611e2081612325565b505b600560149054906101000a900460ff168015611e8957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611ee75760065481611e9b846111c4565b611ea591906133d8565b1115611ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edd9061318b565b60405180910390fd5b5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f4a57611f458484846126a5565b611f4c565b815b9050611f59848483612027565b505b5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208e906131ab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fe9061306b565b60405180910390fd5b61211283838361270a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218f9061310b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612286919061326b565b60405180910390a361229984848461270f565b50505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156123085750601060019054906101000a900460ff165b801561231e5750600f5461231b306111c4565b10155b9050919050565b6001601060026101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561235d5761235c613896565b5b60405190808252806020026020018201604052801561238b5781602001602082028036833780820191505090505b50905030816000815181106123a3576123a2613867565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561243757600080fd5b505afa15801561244b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246f91906129a7565b8160018151811061248357612482613867565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124dc30737a250d5630b4cf539739df2c5dacb4c659f2488d846118fe565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff166318cbafe58360008430426040518663ffffffff1660e01b8152600401612532959493929190613286565b600060405180830381600087803b15801561254c57600080fd5b505af1158015612560573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906125899190612b43565b5060004790506000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682600c54906040516125db90612f91565b600060405180830381858888f193505050503d8060008114612619576040519150601f19603f3d011682016040523d82523d6000602084013e61261e565b606091505b505090508015612684577f3f23532d157662f8e9a6ac5b7e53203a21c32e3ecb7d8c113345a48fa8819519600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360405161267b929190612fc1565b60405180910390a15b5050506000601060026101000a81548160ff02191690831515021790555050565b6000808214156126b85760009050612703565b60006127106126c78686612714565b846126d291906135d0565b6126dc919061342e565b905060008111156126f3576126f2853083612027565b5b80836126ff919061362a565b9150505b9392505050565b505050565b505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806127bb57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156127ca57600d5490506127cf565b600090505b92915050565b60006127e86127e384613320565b6132fb565b9050808382526020820190508285602086028201111561280b5761280a6138ca565b5b60005b8581101561283b578161282188826128b5565b84526020840193506020830192505060018101905061280e565b5050509392505050565b60006128586128538461334c565b6132fb565b9050808382526020820190508285602086028201111561287b5761287a6138ca565b5b60005b858110156128ab57816128918882612965565b84526020840193506020830192505060018101905061287e565b5050509392505050565b6000813590506128c481613c94565b92915050565b6000815190506128d981613c94565b92915050565b600082601f8301126128f4576128f36138c5565b5b81356129048482602086016127d5565b91505092915050565b600082601f830112612922576129216138c5565b5b8151612932848260208601612845565b91505092915050565b60008135905061294a81613cab565b92915050565b60008135905061295f81613cc2565b92915050565b60008151905061297481613cc2565b92915050565b6000602082840312156129905761298f6138d4565b5b600061299e848285016128b5565b91505092915050565b6000602082840312156129bd576129bc6138d4565b5b60006129cb848285016128ca565b91505092915050565b600080604083850312156129eb576129ea6138d4565b5b60006129f9858286016128b5565b9250506020612a0a858286016128b5565b9150509250929050565b600080600060608486031215612a2d57612a2c6138d4565b5b6000612a3b868287016128b5565b9350506020612a4c868287016128b5565b9250506040612a5d86828701612950565b9150509250925092565b60008060408385031215612a7e57612a7d6138d4565b5b6000612a8c858286016128b5565b9250506020612a9d8582860161293b565b9150509250929050565b60008060408385031215612abe57612abd6138d4565b5b6000612acc858286016128b5565b9250506020612add85828601612950565b9150509250929050565b60008060408385031215612afe57612afd6138d4565b5b600083013567ffffffffffffffff811115612b1c57612b1b6138cf565b5b612b28858286016128df565b9250506020612b398582860161293b565b9150509250929050565b600060208284031215612b5957612b586138d4565b5b600082015167ffffffffffffffff811115612b7757612b766138cf565b5b612b838482850161290d565b91505092915050565b600060208284031215612ba257612ba16138d4565b5b6000612bb08482850161293b565b91505092915050565b60008060408385031215612bd057612bcf6138d4565b5b6000612bde8582860161293b565b9250506020612bef85828601612950565b9150509250929050565b600060208284031215612c0f57612c0e6138d4565b5b6000612c1d84828501612950565b91505092915050565b6000612c328383612c3e565b60208301905092915050565b612c478161365e565b82525050565b612c568161365e565b82525050565b6000612c6782613388565b612c7181856133ab565b9350612c7c83613378565b8060005b83811015612cad578151612c948882612c26565b9750612c9f8361339e565b925050600181019050612c80565b5085935050505092915050565b612cc381613670565b82525050565b612cd2816136b3565b82525050565b612ce1816136c5565b82525050565b6000612cf282613393565b612cfc81856133c7565b9350612d0c8185602086016136fb565b612d15816138d9565b840191505092915050565b6000612d2d6023836133c7565b9150612d38826138f7565b604082019050919050565b6000612d50600c836133c7565b9150612d5b82613946565b602082019050919050565b6000612d736026836133c7565b9150612d7e8261396f565b604082019050919050565b6000612d966022836133c7565b9150612da1826139be565b604082019050919050565b6000612db9601d836133c7565b9150612dc482613a0d565b602082019050919050565b6000612ddc6026836133c7565b9150612de782613a36565b604082019050919050565b6000612dff6009836133c7565b9150612e0a82613a85565b602082019050919050565b6000612e226013836133c7565b9150612e2d82613aae565b602082019050919050565b6000612e456020836133c7565b9150612e5082613ad7565b602082019050919050565b6000612e686014836133c7565b9150612e7382613b00565b602082019050919050565b6000612e8b6025836133c7565b9150612e9682613b29565b604082019050919050565b6000612eae6000836133bc565b9150612eb982613b78565b600082019050919050565b6000612ed16024836133c7565b9150612edc82613b7b565b604082019050919050565b6000612ef4600c836133c7565b9150612eff82613bca565b602082019050919050565b6000612f17601a836133c7565b9150612f2282613bf3565b602082019050919050565b6000612f3a6025836133c7565b9150612f4582613c1c565b604082019050919050565b6000612f5d600b836133c7565b9150612f6882613c6b565b602082019050919050565b612f7c8161369c565b82525050565b612f8b816136a6565b82525050565b6000612f9c82612ea1565b9150819050919050565b6000602082019050612fbb6000830184612c4d565b92915050565b6000604082019050612fd66000830185612c4d565b612fe36020830184612f73565b9392505050565b6000602082019050612fff6000830184612cba565b92915050565b600060408201905061301a6000830185612cba565b6130276020830184612f73565b9392505050565b60006020820190506130436000830184612cc9565b92915050565b600060208201905081810360008301526130638184612ce7565b905092915050565b6000602082019050818103600083015261308481612d20565b9050919050565b600060208201905081810360008301526130a481612d43565b9050919050565b600060208201905081810360008301526130c481612d66565b9050919050565b600060208201905081810360008301526130e481612d89565b9050919050565b6000602082019050818103600083015261310481612dac565b9050919050565b6000602082019050818103600083015261312481612dcf565b9050919050565b6000602082019050818103600083015261314481612df2565b9050919050565b6000602082019050818103600083015261316481612e15565b9050919050565b6000602082019050818103600083015261318481612e38565b9050919050565b600060208201905081810360008301526131a481612e5b565b9050919050565b600060208201905081810360008301526131c481612e7e565b9050919050565b600060208201905081810360008301526131e481612ec4565b9050919050565b6000602082019050818103600083015261320481612ee7565b9050919050565b6000602082019050818103600083015261322481612f0a565b9050919050565b6000602082019050818103600083015261324481612f2d565b9050919050565b6000602082019050818103600083015261326481612f50565b9050919050565b60006020820190506132806000830184612f73565b92915050565b600060a08201905061329b6000830188612f73565b6132a86020830187612cd8565b81810360408301526132ba8186612c5c565b90506132c96060830185612c4d565b6132d66080830184612f73565b9695505050505050565b60006020820190506132f56000830184612f82565b92915050565b6000613305613316565b90506133118282613760565b919050565b6000604051905090565b600067ffffffffffffffff82111561333b5761333a613896565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561336757613366613896565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006133e38261369c565b91506133ee8361369c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613423576134226137da565b5b828201905092915050565b60006134398261369c565b91506134448361369c565b92508261345457613453613809565b5b828204905092915050565b6000808291508390505b60018511156134a957808604811115613485576134846137da565b5b60018516156134945780820291505b80810290506134a2856138ea565b9450613469565b94509492505050565b60006134bd8261369c565b91506134c8836136a6565b92506134f57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846134fd565b905092915050565b60008261350d57600190506135c9565b8161351b57600090506135c9565b8160018114613531576002811461353b5761356a565b60019150506135c9565b60ff84111561354d5761354c6137da565b5b8360020a915084821115613564576135636137da565b5b506135c9565b5060208310610133831016604e8410600b841016171561359f5782820a90508381111561359a576135996137da565b5b6135c9565b6135ac848484600161345f565b925090508184048111156135c3576135c26137da565b5b81810290505b9392505050565b60006135db8261369c565b91506135e68361369c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561361f5761361e6137da565b5b828202905092915050565b60006136358261369c565b91506136408361369c565b925082821015613653576136526137da565b5b828203905092915050565b60006136698261367c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006136be826136d7565b9050919050565b60006136d08261369c565b9050919050565b60006136e2826136e9565b9050919050565b60006136f48261367c565b9050919050565b60005b838110156137195780820151818401526020810190506136fe565b83811115613728576000848401525b50505050565b6000600282049050600182168061374657607f821691505b6020821081141561375a57613759613838565b5b50919050565b613769826138d9565b810181811067ffffffffffffffff8211171561378857613787613896565b5b80604052505050565b600061379c8261369c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156137cf576137ce6137da565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4e6f7420616c6c6f7765642e0000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5478206661696c65640000000000000000000000000000000000000000000000600082015250565b7f54726164696e672069732064697361626c656400000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d61782077616c6c65742065786365656465642e000000000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f54617820746f6f20686967680000000000000000000000000000000000000000600082015250565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b613c9d8161365e565b8114613ca857600080fd5b50565b613cb481613670565b8114613cbf57600080fd5b50565b613ccb8161369c565b8114613cd657600080fd5b5056fea2646970667358221220b4b7a9647afafc57f1bf8daceacc2ab0c57db5911171b2265be5e00cf563df4c64736f6c63430008070033000000000000000000000000139f342863c868901c2e23cde78b653bfbd1df28

Deployed Bytecode

0x6080604052600436106102345760003560e01c8063715018a61161012e578063a3578c68116100ab578063dd62ed3e1161006f578063dd62ed3e1461083c578063eea1f61314610879578063f2fde38b146108a2578063fa03f797146108cb578063fe575a87146108f65761023b565b8063a3578c6814610743578063a457c2d71461076e578063a8aa1b31146107ab578063a9059cbb146107d6578063ba286063146108135761023b565b80638a8c523c116100f25780638a8c523c146106825780638da5cb5b14610699578063912e2f82146106c457806395d89b41146106ed57806399c8d556146107185761023b565b8063715018a6146105bf57806375f0a874146105d6578063790ca41314610601578063860a32ec1461062c57806389f9a1d3146106575761023b565b8063313ce567116101bc5780634ada218b116101805780634ada218b146104da57806354835808146105055780635d098b381461052e5780636ddd17131461055757806370a08231146105825761023b565b8063313ce567146103e157806332fe7b261461040c57806339509351146104375780633af32abf14610474578063404e5129146104b15761023b565b806309ec923a1161020357806309ec923a146102ea57806316c2be6b1461031357806318160ddd1461035057806323b872dd1461037b5780632e5bb6ff146103b85761023b565b80630445b667146102405780630614117a1461026b57806306fdde0314610282578063095ea7b3146102ad5761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b50610255610933565b604051610262919061326b565b60405180910390f35b34801561027757600080fd5b50610280610939565b005b34801561028e57600080fd5b50610297610aa5565b6040516102a49190613049565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190612aa7565b610b37565b6040516102e19190612fea565b60405180910390f35b3480156102f657600080fd5b50610311600480360381019061030c9190612a67565b610b5a565b005b34801561031f57600080fd5b5061033a6004803603810190610335919061297a565b610bbd565b6040516103479190612fea565b60405180910390f35b34801561035c57600080fd5b50610365610bdd565b604051610372919061326b565b60405180910390f35b34801561038757600080fd5b506103a2600480360381019061039d9190612a14565b610be7565b6040516103af9190612fea565b60405180910390f35b3480156103c457600080fd5b506103df60048036038101906103da9190612bf9565b610c16565b005b3480156103ed57600080fd5b506103f6610d2e565b60405161040391906132e0565b60405180910390f35b34801561041857600080fd5b50610421610d37565b60405161042e919061302e565b60405180910390f35b34801561044357600080fd5b5061045e60048036038101906104599190612aa7565b610d4f565b60405161046b9190612fea565b60405180910390f35b34801561048057600080fd5b5061049b6004803603810190610496919061297a565b610d86565b6040516104a89190612fea565b60405180910390f35b3480156104bd57600080fd5b506104d860048036038101906104d39190612a67565b610da6565b005b3480156104e657600080fd5b506104ef610e91565b6040516104fc9190612fea565b60405180910390f35b34801561051157600080fd5b5061052c60048036038101906105279190612ae7565b610ea4565b005b34801561053a57600080fd5b506105556004803603810190610550919061297a565b611018565b005b34801561056357600080fd5b5061056c6111b1565b6040516105799190612fea565b60405180910390f35b34801561058e57600080fd5b506105a960048036038101906105a4919061297a565b6111c4565b6040516105b6919061326b565b60405180910390f35b3480156105cb57600080fd5b506105d461120c565b005b3480156105e257600080fd5b506105eb611220565b6040516105f89190612fa6565b60405180910390f35b34801561060d57600080fd5b50610616611246565b604051610623919061326b565b60405180910390f35b34801561063857600080fd5b5061064161124c565b60405161064e9190612fea565b60405180910390f35b34801561066357600080fd5b5061066c61125f565b604051610679919061326b565b60405180910390f35b34801561068e57600080fd5b50610697611265565b005b3480156106a557600080fd5b506106ae611395565b6040516106bb9190612fa6565b60405180910390f35b3480156106d057600080fd5b506106eb60048036038101906106e69190612b8c565b6113bf565b005b3480156106f957600080fd5b5061070261146c565b60405161070f9190613049565b60405180910390f35b34801561072457600080fd5b5061072d6114fe565b60405161073a919061326b565b60405180910390f35b34801561074f57600080fd5b50610758611504565b6040516107659190612fea565b60405180910390f35b34801561077a57600080fd5b5061079560048036038101906107909190612aa7565b611517565b6040516107a29190612fea565b60405180910390f35b3480156107b757600080fd5b506107c061158e565b6040516107cd9190612fa6565b60405180910390f35b3480156107e257600080fd5b506107fd60048036038101906107f89190612aa7565b6115b2565b60405161080a9190612fea565b60405180910390f35b34801561081f57600080fd5b5061083a60048036038101906108359190612bb9565b6115d5565b005b34801561084857600080fd5b50610863600480360381019061085e91906129d4565b6116a8565b604051610870919061326b565b60405180910390f35b34801561088557600080fd5b506108a0600480360381019061089b9190612bb9565b61172f565b005b3480156108ae57600080fd5b506108c960048036038101906108c4919061297a565b61184c565b005b3480156108d757600080fd5b506108e06118d0565b6040516108ed919061326b565b60405180910390f35b34801561090257600080fd5b5061091d6004803603810190610918919061297a565b6118d6565b60405161092a9190612fea565b60405180910390f35b600f5481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c09061308b565b60405180910390fd5b60004790506000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682600c5490604051610a1a90612f91565b600060405180830381858888f193505050503d8060008114610a58576040519150601f19603f3d011682016040523d82523d6000602084013e610a5d565b606091505b5050905080610aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a989061312b565b60405180910390fd5b5050565b606060038054610ab49061372e565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae09061372e565b8015610b2d5780601f10610b0257610100808354040283529160200191610b2d565b820191906000526020600020905b815481529060010190602001808311610b1057829003601f168201915b5050505050905090565b600080610b426118f6565b9050610b4f8185856118fe565b600191505092915050565b610b62611ac9565b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b6020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b600080610bf26118f6565b9050610bff858285611b47565b610c0a858585611bd3565b60019150509392505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9d9061308b565b60405180910390fd5b6103e8811115610ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce2906131eb565b60405180910390fd5b80600d819055507f397765b72e518e74f0610de0c4f5c12e5ea0354820ca76d5d95d1972fb4176ce600d54604051610d23919061326b565b60405180910390a150565b60006012905090565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b600080610d5a6118f6565b9050610d7b818585610d6c85896116a8565b610d7691906133d8565b6118fe565b600191505092915050565b60096020528060005260406000206000915054906101000a900460ff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2d9061308b565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600760009054906101000a900460ff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2b9061308b565b60405180910390fd5b60005b825181101561101357600073ffffffffffffffffffffffffffffffffffffffff16838281518110610f6b57610f6a613867565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16146110005781600a6000858481518110610fa657610fa5613867565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b808061100b90613791565b915050610f37565b505050565b611020611ac9565b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f15630e5b9ff3d692866b1a3699c892e9fd786cb6d6e4a776ed5386dfb7effa95600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516111a69190612fa6565b60405180910390a150565b601060019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611214611ac9565b61121e6000611f61565b565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b600560149054906101000a900460ff1681565b60065481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ec9061308b565b60405180910390fd5b600760009054906101000a900460ff1615611345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133c9061320b565b60405180910390fd5b6001600760006101000a81548160ff021916908315150217905550426008819055507f1d97b7cdf6b6f3405cbe398b69512e5419a0ce78232b6e9c6ffbf1466774bd8d60405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461144f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114469061308b565b60405180910390fd5b80601060006101000a81548160ff02191690831515021790555050565b60606004805461147b9061372e565b80601f01602080910402602001604051908101604052809291908181526020018280546114a79061372e565b80156114f45780601f106114c9576101008083540402835291602001916114f4565b820191906000526020600020905b8154815290600101906020018083116114d757829003601f168201915b5050505050905090565b600d5481565b601060009054906101000a900460ff1681565b6000806115226118f6565b9050600061153082866116a8565b905083811015611575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156c9061322b565b60405180910390fd5b61158282868684036118fe565b60019250505092915050565b7f0000000000000000000000002391aeb0de8679cad29e90a3665fb4b50cac657881565b6000806115bd6118f6565b90506115ca818585611bd3565b600191505092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165c9061308b565b60405180910390fd5b81601060016101000a81548160ff021916908315150217905550611687610d2e565b600a61169391906134b2565b8161169e91906135d0565b600f819055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b69061308b565b60405180910390fd5b81600560146101000a81548160ff0219169083151502179055506117e1610d2e565b600a6117ed91906134b2565b816117f891906135d0565b6006819055507f4bd08284097a60a5c140c1373206fa16795bf0ed0bd4bf4177cbca2ab5e7a092600560149054906101000a900460ff16600654604051611840929190613005565b60405180910390a15050565b611854611ac9565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bb906130ab565b60405180910390fd5b6118cd81611f61565b50565b600c5481565b600a6020528060005260406000206000915054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561196e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611965906131cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d5906130cb565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611abc919061326b565b60405180910390a3505050565b611ad16118f6565b73ffffffffffffffffffffffffffffffffffffffff16611aef611395565b73ffffffffffffffffffffffffffffffffffffffff1614611b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3c9061316b565b60405180910390fd5b565b6000611b5384846116a8565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611bcd5781811015611bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb6906130eb565b60405180910390fd5b611bcc84848484036118fe565b5b50505050565b600760009054906101000a900460ff16611cd757600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c885750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbe9061314b565b60405180910390fd5b611cd2838383612027565b611f5b565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611d7b5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db19061324b565b60405180910390fd5b601060029054906101000a900460ff1615611ddf57611dda838383612027565b611f5c565b611de88261229f565b15611e22576000601060009054906101000a900460ff16611e0b57600f54611e15565b611e14306111c4565b5b9050611e2081612325565b505b600560149054906101000a900460ff168015611e8957507f0000000000000000000000002391aeb0de8679cad29e90a3665fb4b50cac657873ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611ee75760065481611e9b846111c4565b611ea591906133d8565b1115611ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edd9061318b565b60405180910390fd5b5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f4a57611f458484846126a5565b611f4c565b815b9050611f59848483612027565b505b5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208e906131ab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fe9061306b565b60405180910390fd5b61211283838361270a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218f9061310b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612286919061326b565b60405180910390a361229984848461270f565b50505050565b60007f0000000000000000000000002391aeb0de8679cad29e90a3665fb4b50cac657873ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156123085750601060019054906101000a900460ff165b801561231e5750600f5461231b306111c4565b10155b9050919050565b6001601060026101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561235d5761235c613896565b5b60405190808252806020026020018201604052801561238b5781602001602082028036833780820191505090505b50905030816000815181106123a3576123a2613867565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561243757600080fd5b505afa15801561244b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246f91906129a7565b8160018151811061248357612482613867565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124dc30737a250d5630b4cf539739df2c5dacb4c659f2488d846118fe565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff166318cbafe58360008430426040518663ffffffff1660e01b8152600401612532959493929190613286565b600060405180830381600087803b15801561254c57600080fd5b505af1158015612560573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906125899190612b43565b5060004790506000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682600c54906040516125db90612f91565b600060405180830381858888f193505050503d8060008114612619576040519150601f19603f3d011682016040523d82523d6000602084013e61261e565b606091505b505090508015612684577f3f23532d157662f8e9a6ac5b7e53203a21c32e3ecb7d8c113345a48fa8819519600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360405161267b929190612fc1565b60405180910390a15b5050506000601060026101000a81548160ff02191690831515021790555050565b6000808214156126b85760009050612703565b60006127106126c78686612714565b846126d291906135d0565b6126dc919061342e565b905060008111156126f3576126f2853083612027565b5b80836126ff919061362a565b9150505b9392505050565b505050565b505050565b60007f0000000000000000000000002391aeb0de8679cad29e90a3665fb4b50cac657873ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806127bb57507f0000000000000000000000002391aeb0de8679cad29e90a3665fb4b50cac657873ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156127ca57600d5490506127cf565b600090505b92915050565b60006127e86127e384613320565b6132fb565b9050808382526020820190508285602086028201111561280b5761280a6138ca565b5b60005b8581101561283b578161282188826128b5565b84526020840193506020830192505060018101905061280e565b5050509392505050565b60006128586128538461334c565b6132fb565b9050808382526020820190508285602086028201111561287b5761287a6138ca565b5b60005b858110156128ab57816128918882612965565b84526020840193506020830192505060018101905061287e565b5050509392505050565b6000813590506128c481613c94565b92915050565b6000815190506128d981613c94565b92915050565b600082601f8301126128f4576128f36138c5565b5b81356129048482602086016127d5565b91505092915050565b600082601f830112612922576129216138c5565b5b8151612932848260208601612845565b91505092915050565b60008135905061294a81613cab565b92915050565b60008135905061295f81613cc2565b92915050565b60008151905061297481613cc2565b92915050565b6000602082840312156129905761298f6138d4565b5b600061299e848285016128b5565b91505092915050565b6000602082840312156129bd576129bc6138d4565b5b60006129cb848285016128ca565b91505092915050565b600080604083850312156129eb576129ea6138d4565b5b60006129f9858286016128b5565b9250506020612a0a858286016128b5565b9150509250929050565b600080600060608486031215612a2d57612a2c6138d4565b5b6000612a3b868287016128b5565b9350506020612a4c868287016128b5565b9250506040612a5d86828701612950565b9150509250925092565b60008060408385031215612a7e57612a7d6138d4565b5b6000612a8c858286016128b5565b9250506020612a9d8582860161293b565b9150509250929050565b60008060408385031215612abe57612abd6138d4565b5b6000612acc858286016128b5565b9250506020612add85828601612950565b9150509250929050565b60008060408385031215612afe57612afd6138d4565b5b600083013567ffffffffffffffff811115612b1c57612b1b6138cf565b5b612b28858286016128df565b9250506020612b398582860161293b565b9150509250929050565b600060208284031215612b5957612b586138d4565b5b600082015167ffffffffffffffff811115612b7757612b766138cf565b5b612b838482850161290d565b91505092915050565b600060208284031215612ba257612ba16138d4565b5b6000612bb08482850161293b565b91505092915050565b60008060408385031215612bd057612bcf6138d4565b5b6000612bde8582860161293b565b9250506020612bef85828601612950565b9150509250929050565b600060208284031215612c0f57612c0e6138d4565b5b6000612c1d84828501612950565b91505092915050565b6000612c328383612c3e565b60208301905092915050565b612c478161365e565b82525050565b612c568161365e565b82525050565b6000612c6782613388565b612c7181856133ab565b9350612c7c83613378565b8060005b83811015612cad578151612c948882612c26565b9750612c9f8361339e565b925050600181019050612c80565b5085935050505092915050565b612cc381613670565b82525050565b612cd2816136b3565b82525050565b612ce1816136c5565b82525050565b6000612cf282613393565b612cfc81856133c7565b9350612d0c8185602086016136fb565b612d15816138d9565b840191505092915050565b6000612d2d6023836133c7565b9150612d38826138f7565b604082019050919050565b6000612d50600c836133c7565b9150612d5b82613946565b602082019050919050565b6000612d736026836133c7565b9150612d7e8261396f565b604082019050919050565b6000612d966022836133c7565b9150612da1826139be565b604082019050919050565b6000612db9601d836133c7565b9150612dc482613a0d565b602082019050919050565b6000612ddc6026836133c7565b9150612de782613a36565b604082019050919050565b6000612dff6009836133c7565b9150612e0a82613a85565b602082019050919050565b6000612e226013836133c7565b9150612e2d82613aae565b602082019050919050565b6000612e456020836133c7565b9150612e5082613ad7565b602082019050919050565b6000612e686014836133c7565b9150612e7382613b00565b602082019050919050565b6000612e8b6025836133c7565b9150612e9682613b29565b604082019050919050565b6000612eae6000836133bc565b9150612eb982613b78565b600082019050919050565b6000612ed16024836133c7565b9150612edc82613b7b565b604082019050919050565b6000612ef4600c836133c7565b9150612eff82613bca565b602082019050919050565b6000612f17601a836133c7565b9150612f2282613bf3565b602082019050919050565b6000612f3a6025836133c7565b9150612f4582613c1c565b604082019050919050565b6000612f5d600b836133c7565b9150612f6882613c6b565b602082019050919050565b612f7c8161369c565b82525050565b612f8b816136a6565b82525050565b6000612f9c82612ea1565b9150819050919050565b6000602082019050612fbb6000830184612c4d565b92915050565b6000604082019050612fd66000830185612c4d565b612fe36020830184612f73565b9392505050565b6000602082019050612fff6000830184612cba565b92915050565b600060408201905061301a6000830185612cba565b6130276020830184612f73565b9392505050565b60006020820190506130436000830184612cc9565b92915050565b600060208201905081810360008301526130638184612ce7565b905092915050565b6000602082019050818103600083015261308481612d20565b9050919050565b600060208201905081810360008301526130a481612d43565b9050919050565b600060208201905081810360008301526130c481612d66565b9050919050565b600060208201905081810360008301526130e481612d89565b9050919050565b6000602082019050818103600083015261310481612dac565b9050919050565b6000602082019050818103600083015261312481612dcf565b9050919050565b6000602082019050818103600083015261314481612df2565b9050919050565b6000602082019050818103600083015261316481612e15565b9050919050565b6000602082019050818103600083015261318481612e38565b9050919050565b600060208201905081810360008301526131a481612e5b565b9050919050565b600060208201905081810360008301526131c481612e7e565b9050919050565b600060208201905081810360008301526131e481612ec4565b9050919050565b6000602082019050818103600083015261320481612ee7565b9050919050565b6000602082019050818103600083015261322481612f0a565b9050919050565b6000602082019050818103600083015261324481612f2d565b9050919050565b6000602082019050818103600083015261326481612f50565b9050919050565b60006020820190506132806000830184612f73565b92915050565b600060a08201905061329b6000830188612f73565b6132a86020830187612cd8565b81810360408301526132ba8186612c5c565b90506132c96060830185612c4d565b6132d66080830184612f73565b9695505050505050565b60006020820190506132f56000830184612f82565b92915050565b6000613305613316565b90506133118282613760565b919050565b6000604051905090565b600067ffffffffffffffff82111561333b5761333a613896565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561336757613366613896565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006133e38261369c565b91506133ee8361369c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613423576134226137da565b5b828201905092915050565b60006134398261369c565b91506134448361369c565b92508261345457613453613809565b5b828204905092915050565b6000808291508390505b60018511156134a957808604811115613485576134846137da565b5b60018516156134945780820291505b80810290506134a2856138ea565b9450613469565b94509492505050565b60006134bd8261369c565b91506134c8836136a6565b92506134f57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846134fd565b905092915050565b60008261350d57600190506135c9565b8161351b57600090506135c9565b8160018114613531576002811461353b5761356a565b60019150506135c9565b60ff84111561354d5761354c6137da565b5b8360020a915084821115613564576135636137da565b5b506135c9565b5060208310610133831016604e8410600b841016171561359f5782820a90508381111561359a576135996137da565b5b6135c9565b6135ac848484600161345f565b925090508184048111156135c3576135c26137da565b5b81810290505b9392505050565b60006135db8261369c565b91506135e68361369c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561361f5761361e6137da565b5b828202905092915050565b60006136358261369c565b91506136408361369c565b925082821015613653576136526137da565b5b828203905092915050565b60006136698261367c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006136be826136d7565b9050919050565b60006136d08261369c565b9050919050565b60006136e2826136e9565b9050919050565b60006136f48261367c565b9050919050565b60005b838110156137195780820151818401526020810190506136fe565b83811115613728576000848401525b50505050565b6000600282049050600182168061374657607f821691505b6020821081141561375a57613759613838565b5b50919050565b613769826138d9565b810181811067ffffffffffffffff8211171561378857613787613896565b5b80604052505050565b600061379c8261369c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156137cf576137ce6137da565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4e6f7420616c6c6f7765642e0000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5478206661696c65640000000000000000000000000000000000000000000000600082015250565b7f54726164696e672069732064697361626c656400000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d61782077616c6c65742065786365656465642e000000000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f54617820746f6f20686967680000000000000000000000000000000000000000600082015250565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b613c9d8161365e565b8114613ca857600080fd5b50565b613cb481613670565b8114613cbf57600080fd5b50565b613ccb8161369c565b8114613cd657600080fd5b5056fea2646970667358221220b4b7a9647afafc57f1bf8daceacc2ab0c57db5911171b2265be5e00cf563df4c64736f6c63430008070033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000139f342863c868901c2e23cde78b653bfbd1df28

-----Decoded View---------------
Arg [0] : _marketingWallet (address): 0x139F342863c868901C2E23cDE78b653bFBD1dF28

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000139f342863c868901c2e23cde78b653bfbd1df28


Deployed Bytecode Sourcemap

21672:6975:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22315:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28327:280;;;;;;;;;;;;;:::i;:::-;;9278:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11629:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26308:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22098:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10398:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12410:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25258:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10240:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21714:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13114:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21989:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25763:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21922:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25958:342;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26750:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22396:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10569:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2782:103;;;;;;;;;;;;;:::i;:::-;;22270:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21955:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21854:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21880:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25481:272;;;;;;;;;;;;;:::i;:::-;;2134:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27287:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9497:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22192:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22354:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13855:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21811:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10902:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27031:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11158:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26441:301;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3040:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22151:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22042:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22315:32;;;;:::o;28327:280::-;28390:15;;;;;;;;;;;28378:27;;:10;:27;;;28369:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;28432:14;28449:21;28432:38;;28482:9;28504:15;;;;;;;;;;;28496:29;;28533:6;28546:11;;28496:66;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28481:81;;;28581:4;28573:26;;;;;;;;;;;;:::i;:::-;;;;;;;;;28358:249;;28327:280::o;9278:100::-;9332:13;9365:5;9358:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9278:100;:::o;11629:201::-;11712:4;11729:13;11745:12;:10;:12::i;:::-;11729:28;;11768:32;11777:5;11784:7;11793:6;11768:8;:32::i;:::-;11818:4;11811:11;;;11629:201;;;;:::o;26308:125::-;2020:13;:11;:13::i;:::-;26419:6:::1;26394:13;:22;26408:7;26394:22;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;26308:125:::0;;:::o;22098:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;10398:108::-;10459:7;10486:12;;10479:19;;10398:108;:::o;12410:295::-;12541:4;12558:15;12576:12;:10;:12::i;:::-;12558:30;;12599:38;12615:4;12621:7;12630:6;12599:15;:38::i;:::-;12648:27;12658:4;12664:2;12668:6;12648:9;:27::i;:::-;12693:4;12686:11;;;12410:295;;;;;:::o;25258:213::-;25331:15;;;;;;;;;;;25319:27;;:10;:27;;;25310:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;25390:4;25382:6;:12;;25373:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;25427:6;25421:3;:12;;;;25449:14;25459:3;;25449:14;;;;;;:::i;:::-;;;;;;;;25258:213;:::o;10240:93::-;10298:5;10323:2;10316:9;;10240:93;:::o;21714:90::-;21761:42;21714:90;:::o;13114:238::-;13202:4;13219:13;13235:12;:10;:12::i;:::-;13219:28;;13258:64;13267:5;13274:7;13311:10;13283:25;13293:5;13300:7;13283:9;:25::i;:::-;:38;;;;:::i;:::-;13258:8;:64::i;:::-;13340:4;13333:11;;;13114:238;;;;:::o;21989:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;25763:189::-;25862:15;;;;;;;;;;;25850:27;;:10;:27;;;25841:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;25930:14;25904:13;:23;25918:8;25904:23;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;25763:189;;:::o;21922:26::-;;;;;;;;;;;;;:::o;25958:342::-;26075:15;;;;;;;;;;;26063:27;;:10;:27;;;26054:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;26121:6;26117:176;26133:10;:17;26131:1;:19;26117:176;;;26198:1;26175:25;;:10;26186:1;26175:13;;;;;;;;:::i;:::-;;;;;;;;:25;;;26172:110;;26252:14;26221:13;:28;26235:10;26246:1;26235:13;;;;;;;;:::i;:::-;;;;;;;;26221:28;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;26172:110;26152:3;;;;;:::i;:::-;;;;26117:176;;;;25958:342;;:::o;26750:261::-;2020:13;:11;:13::i;:::-;26846:9:::1;26828:15;;:27;;;;;;;;;;;;;;;;;;26899:4;26866:13;:30;26880:15;;;;;;;;;;;26866:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;26945:4;26914:11;:28;26926:15;;;;;;;;;;;26914:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;26965:38;26987:15;;;;;;;;;;;26965:38;;;;;;:::i;:::-;;;;;;;;26750:261:::0;:::o;22396:30::-;;;;;;;;;;;;;:::o;10569:127::-;10643:7;10670:9;:18;10680:7;10670:18;;;;;;;;;;;;;;;;10663:25;;10569:127;;;:::o;2782:103::-;2020:13;:11;:13::i;:::-;2847:30:::1;2874:1;2847:18;:30::i;:::-;2782:103::o:0;22270:30::-;;;;;;;;;;;;;:::o;21955:25::-;;;;:::o;21854:19::-;;;;;;;;;;;;;:::o;21880:31::-;;;;:::o;25481:272::-;25547:15;;;;;;;;;;;25535:27;;:10;:27;;;25526:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;25598:14;;;;;;;;;;;25597:15;25589:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;25671:4;25654:14;;:21;;;;;;;;;;;;;;;;;;25699:15;25686:10;:28;;;;25730:15;;;;;;;;;;25481:272::o;2134:87::-;2180:7;2207:6;;;;;;;;;;;2200:13;;2134:87;:::o;27287:183::-;27384:15;;;;;;;;;;;27372:27;;:10;:27;;;27363:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;27445:17;27426:16;;:36;;;;;;;;;;;;;;;;;;27287:183;:::o;9497:104::-;9553:13;9586:7;9579:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9497:104;:::o;22192:24::-;;;;:::o;22354:35::-;;;;;;;;;;;;;:::o;13855:436::-;13948:4;13965:13;13981:12;:10;:12::i;:::-;13965:28;;14004:24;14031:25;14041:5;14048:7;14031:9;:25::i;:::-;14004:52;;14095:15;14075:16;:35;;14067:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14188:60;14197:5;14204:7;14232:15;14213:16;:34;14188:8;:60::i;:::-;14279:4;14272:11;;;;13855:436;;;;:::o;21811:29::-;;;:::o;10902:193::-;10981:4;10998:13;11014:12;:10;:12::i;:::-;10998:28;;11037;11047:5;11054:2;11058:6;11037:9;:28::i;:::-;11083:4;11076:11;;;10902:193;;;;:::o;27031:250::-;27147:15;;;;;;;;;;;27135:27;;:10;:27;;;27126:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;27203:10;27189:11;;:24;;;;;;;;;;;;;;;;;;27263:10;:8;:10::i;:::-;27259:2;:14;;;;:::i;:::-;27240:16;:33;;;;:::i;:::-;27224:13;:49;;;;27031:250;;:::o;11158:151::-;11247:7;11274:11;:18;11286:5;11274:18;;;;;;;;;;;;;;;:27;11293:7;11274:27;;;;;;;;;;;;;;;;11267:34;;11158:151;;;;:::o;26441:301::-;26549:15;;;;;;;;;;;26537:27;;:10;:27;;;26528:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;26601:8;26591:7;;:18;;;;;;;;;;;;;;;;;;26663:10;:8;:10::i;:::-;26659:2;:14;;;;:::i;:::-;26639:17;:34;;;;:::i;:::-;26620:16;:53;;;;26689:45;26709:7;;;;;;;;;;;26717:16;;26689:45;;;;;;;:::i;:::-;;;;;;;;26441:301;;:::o;3040:201::-;2020:13;:11;:13::i;:::-;3149:1:::1;3129:22;;:8;:22;;;;3121:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3205:28;3224:8;3205:18;:28::i;:::-;3040:201:::0;:::o;22151:34::-;;;;:::o;22042:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;712:98::-;765:7;792:10;785:17;;712:98;:::o;17882:380::-;18035:1;18018:19;;:5;:19;;;;18010:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18116:1;18097:21;;:7;:21;;;;18089:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18200:6;18170:11;:18;18182:5;18170:18;;;;;;;;;;;;;;;:27;18189:7;18170:27;;;;;;;;;;;;;;;:36;;;;18238:7;18222:32;;18231:5;18222:32;;;18247:6;18222:32;;;;;;:::i;:::-;;;;;;;;17882:380;;;:::o;2299:132::-;2374:12;:10;:12::i;:::-;2363:23;;:7;:5;:7::i;:::-;:23;;;2355:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2299:132::o;18553:453::-;18688:24;18715:25;18725:5;18732:7;18715:9;:25::i;:::-;18688:52;;18775:17;18755:16;:37;18751:248;;18837:6;18817:16;:26;;18809:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18921:51;18930:5;18937:7;18965:6;18946:16;:25;18921:8;:51::i;:::-;18751:248;18677:329;18553:453;;;:::o;23486:1168::-;23591:14;;;;;;;;;;;23587:1049;;23631:13;:21;23645:6;23631:21;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;23656:13;:24;23670:9;23656:24;;;;;;;;;;;;;;;;;;;;;;;;;23631:49;23623:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;23720:42;23736:6;23744:9;23755:6;23720:15;:42::i;:::-;23587:1049;;;23807:13;:21;23821:6;23807:21;;;;;;;;;;;;;;;;;;;;;;;;;23806:22;:51;;;;;23833:13;:24;23847:9;23833:24;;;;;;;;;;;;;;;;;;;;;;;;;23832:25;23806:51;23798:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;23895:6;;;;;;;;;;;23891:114;;;23922:42;23938:6;23946:9;23957:6;23922:15;:42::i;:::-;23983:7;;23891:114;24044:26;24060:9;24044:15;:26::i;:::-;24040:187;;;24091:18;24112:16;;;;;;;;;;;:59;;24158:13;;24112:59;;;24131:24;24149:4;24131:9;:24::i;:::-;24112:59;24091:80;;24190:21;24200:10;24190:9;:21::i;:::-;24072:155;24040:187;24272:7;;;;;;;;;;;:25;;;;;24293:4;24283:14;;:6;:14;;;24272:25;24268:154;;;24365:16;;24355:6;24326:26;24342:9;24326:15;:26::i;:::-;:35;;;;:::i;:::-;:55;;24318:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;24268:154;24458:22;24483:11;:19;24495:6;24483:19;;;;;;;;;;;;;;;;;;;;;;;;;:66;;24514:35;24523:6;24531:9;24542:6;24514:8;:35::i;:::-;24483:66;;;24505:6;24483:66;24458:91;;24564:50;24580:6;24588:9;24599:14;24564:15;:50::i;:::-;23782:854;23587:1049;23486:1168;;;;:::o;3401:191::-;3475:16;3494:6;;;;;;;;;;;3475:25;;3520:8;3511:6;;:17;;;;;;;;;;;;;;;;;;3575:8;3544:40;;3565:8;3544:40;;;;;;;;;;;;3464:128;3401:191;:::o;14761:840::-;14908:1;14892:18;;:4;:18;;;;14884:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14985:1;14971:16;;:2;:16;;;;14963:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15040:38;15061:4;15067:2;15071:6;15040:20;:38::i;:::-;15091:19;15113:9;:15;15123:4;15113:15;;;;;;;;;;;;;;;;15091:37;;15162:6;15147:11;:21;;15139:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15279:6;15265:11;:20;15247:9;:15;15257:4;15247:15;;;;;;;;;;;;;;;:38;;;;15482:6;15465:9;:13;15475:2;15465:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;15532:2;15517:26;;15526:4;15517:26;;;15536:6;15517:26;;;;;;:::i;:::-;;;;;;;;15556:37;15576:4;15582:2;15586:6;15556:19;:37::i;:::-;14873:728;14761:840;;;:::o;27476:175::-;27542:4;27579;27566:17;;:9;:17;;;:32;;;;;27587:11;;;;;;;;;;;27566:32;:77;;;;;27630:13;;27602:24;27620:4;27602:9;:24::i;:::-;:41;;27566:77;27559:84;;27476:175;;;:::o;27659:660::-;22795:4;22786:6;;:13;;;;;;;;;;;;;;;;;;27726:21:::1;27764:1;27750:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27726:40;;27795:4;27777;27782:1;27777:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;21761:42;27821:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27811:4;27816:1;27811:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;27845:53;27862:4;21761:42;27887:10;27845:8;:53::i;:::-;21761:42;27909:28;;;27952:10;27977:1;27993:4;28020;28040:15;27909:157;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28077:17;28097:21;28077:41;;28130:21;28164:15;;;;;;;;;;;28156:29;;28193:9;28209:11;;28156:69;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28129:96;;;28240:16;28236:76;;;28265:44;28282:15;;;;;;;;;;;28299:9;28265:44;;;;;;;:::i;:::-;;;;;;;;28236:76;27715:604;;;22823:5:::0;22814:6;;:14;;;;;;;;;;;;;;;;;;27659:660;:::o;24662:355::-;24748:7;24782:1;24772:6;:11;24768:30;;;24794:1;24787:8;;;;24768:30;24810:17;22258:5;24839:31;24852:6;24860:9;24839:12;:31::i;:::-;24830:6;:40;;;;:::i;:::-;:58;;;;:::i;:::-;24810:78;;24915:1;24903:9;:13;24899:73;;;24920:49;24936:6;24952:4;24959:9;24920:15;:49::i;:::-;24899:73;25000:9;24991:6;:18;;;;:::i;:::-;24984:25;;;24662:355;;;;;;:::o;19606:125::-;;;;:::o;20335:124::-;;;;:::o;25025:225::-;25104:7;25138:4;25128:14;;:6;:14;;;:35;;;;25159:4;25146:17;;:9;:17;;;25128:35;25124:119;;;25187:3;;25180:10;;;;25124:119;25230:1;25223:8;;25025:225;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;769:744::-;876:5;901:81;917:64;974:6;917:64;:::i;:::-;901:81;:::i;:::-;892:90;;1002:5;1031:6;1024:5;1017:21;1065:4;1058:5;1054:16;1047:23;;1091:6;1141:3;1133:4;1125:6;1121:17;1116:3;1112:27;1109:36;1106:143;;;1160:79;;:::i;:::-;1106:143;1273:1;1258:249;1283:6;1280:1;1277:13;1258:249;;;1351:3;1380:48;1424:3;1412:10;1380:48;:::i;:::-;1375:3;1368:61;1458:4;1453:3;1449:14;1442:21;;1492:4;1487:3;1483:14;1476:21;;1318:189;1305:1;1302;1298:9;1293:14;;1258:249;;;1262:14;882:631;;769:744;;;;;:::o;1519:139::-;1565:5;1603:6;1590:20;1581:29;;1619:33;1646:5;1619:33;:::i;:::-;1519:139;;;;:::o;1664:143::-;1721:5;1752:6;1746:13;1737:22;;1768:33;1795:5;1768:33;:::i;:::-;1664:143;;;;:::o;1830:370::-;1901:5;1950:3;1943:4;1935:6;1931:17;1927:27;1917:122;;1958:79;;:::i;:::-;1917:122;2075:6;2062:20;2100:94;2190:3;2182:6;2175:4;2167:6;2163:17;2100:94;:::i;:::-;2091:103;;1907:293;1830:370;;;;:::o;2223:385::-;2305:5;2354:3;2347:4;2339:6;2335:17;2331:27;2321:122;;2362:79;;:::i;:::-;2321:122;2472:6;2466:13;2497:105;2598:3;2590:6;2583:4;2575:6;2571:17;2497:105;:::i;:::-;2488:114;;2311:297;2223:385;;;;:::o;2614:133::-;2657:5;2695:6;2682:20;2673:29;;2711:30;2735:5;2711:30;:::i;:::-;2614:133;;;;:::o;2753:139::-;2799:5;2837:6;2824:20;2815:29;;2853:33;2880:5;2853:33;:::i;:::-;2753:139;;;;:::o;2898:143::-;2955:5;2986:6;2980:13;2971:22;;3002:33;3029:5;3002:33;:::i;:::-;2898:143;;;;:::o;3047:329::-;3106:6;3155:2;3143:9;3134:7;3130:23;3126:32;3123:119;;;3161:79;;:::i;:::-;3123:119;3281:1;3306:53;3351:7;3342:6;3331:9;3327:22;3306:53;:::i;:::-;3296:63;;3252:117;3047:329;;;;:::o;3382:351::-;3452:6;3501:2;3489:9;3480:7;3476:23;3472:32;3469:119;;;3507:79;;:::i;:::-;3469:119;3627:1;3652:64;3708:7;3699:6;3688:9;3684:22;3652:64;:::i;:::-;3642:74;;3598:128;3382:351;;;;:::o;3739:474::-;3807:6;3815;3864:2;3852:9;3843:7;3839:23;3835:32;3832:119;;;3870:79;;:::i;:::-;3832:119;3990:1;4015:53;4060:7;4051:6;4040:9;4036:22;4015:53;:::i;:::-;4005:63;;3961:117;4117:2;4143:53;4188:7;4179:6;4168:9;4164:22;4143:53;:::i;:::-;4133:63;;4088:118;3739:474;;;;;:::o;4219:619::-;4296:6;4304;4312;4361:2;4349:9;4340:7;4336:23;4332:32;4329:119;;;4367:79;;:::i;:::-;4329:119;4487:1;4512:53;4557:7;4548:6;4537:9;4533:22;4512:53;:::i;:::-;4502:63;;4458:117;4614:2;4640:53;4685:7;4676:6;4665:9;4661:22;4640:53;:::i;:::-;4630:63;;4585:118;4742:2;4768:53;4813:7;4804:6;4793:9;4789:22;4768:53;:::i;:::-;4758:63;;4713:118;4219:619;;;;;:::o;4844:468::-;4909:6;4917;4966:2;4954:9;4945:7;4941:23;4937:32;4934:119;;;4972:79;;:::i;:::-;4934:119;5092:1;5117:53;5162:7;5153:6;5142:9;5138:22;5117:53;:::i;:::-;5107:63;;5063:117;5219:2;5245:50;5287:7;5278:6;5267:9;5263:22;5245:50;:::i;:::-;5235:60;;5190:115;4844:468;;;;;:::o;5318:474::-;5386:6;5394;5443:2;5431:9;5422:7;5418:23;5414:32;5411:119;;;5449:79;;:::i;:::-;5411:119;5569:1;5594:53;5639:7;5630:6;5619:9;5615:22;5594:53;:::i;:::-;5584:63;;5540:117;5696:2;5722:53;5767:7;5758:6;5747:9;5743:22;5722:53;:::i;:::-;5712:63;;5667:118;5318:474;;;;;:::o;5798:678::-;5888:6;5896;5945:2;5933:9;5924:7;5920:23;5916:32;5913:119;;;5951:79;;:::i;:::-;5913:119;6099:1;6088:9;6084:17;6071:31;6129:18;6121:6;6118:30;6115:117;;;6151:79;;:::i;:::-;6115:117;6256:78;6326:7;6317:6;6306:9;6302:22;6256:78;:::i;:::-;6246:88;;6042:302;6383:2;6409:50;6451:7;6442:6;6431:9;6427:22;6409:50;:::i;:::-;6399:60;;6354:115;5798:678;;;;;:::o;6482:554::-;6577:6;6626:2;6614:9;6605:7;6601:23;6597:32;6594:119;;;6632:79;;:::i;:::-;6594:119;6773:1;6762:9;6758:17;6752:24;6803:18;6795:6;6792:30;6789:117;;;6825:79;;:::i;:::-;6789:117;6930:89;7011:7;7002:6;6991:9;6987:22;6930:89;:::i;:::-;6920:99;;6723:306;6482:554;;;;:::o;7042:323::-;7098:6;7147:2;7135:9;7126:7;7122:23;7118:32;7115:119;;;7153:79;;:::i;:::-;7115:119;7273:1;7298:50;7340:7;7331:6;7320:9;7316:22;7298:50;:::i;:::-;7288:60;;7244:114;7042:323;;;;:::o;7371:468::-;7436:6;7444;7493:2;7481:9;7472:7;7468:23;7464:32;7461:119;;;7499:79;;:::i;:::-;7461:119;7619:1;7644:50;7686:7;7677:6;7666:9;7662:22;7644:50;:::i;:::-;7634:60;;7590:114;7743:2;7769:53;7814:7;7805:6;7794:9;7790:22;7769:53;:::i;:::-;7759:63;;7714:118;7371:468;;;;;:::o;7845:329::-;7904:6;7953:2;7941:9;7932:7;7928:23;7924:32;7921:119;;;7959:79;;:::i;:::-;7921:119;8079:1;8104:53;8149:7;8140:6;8129:9;8125:22;8104:53;:::i;:::-;8094:63;;8050:117;7845:329;;;;:::o;8180:179::-;8249:10;8270:46;8312:3;8304:6;8270:46;:::i;:::-;8348:4;8343:3;8339:14;8325:28;;8180:179;;;;:::o;8365:108::-;8442:24;8460:5;8442:24;:::i;:::-;8437:3;8430:37;8365:108;;:::o;8479:118::-;8566:24;8584:5;8566:24;:::i;:::-;8561:3;8554:37;8479:118;;:::o;8633:732::-;8752:3;8781:54;8829:5;8781:54;:::i;:::-;8851:86;8930:6;8925:3;8851:86;:::i;:::-;8844:93;;8961:56;9011:5;8961:56;:::i;:::-;9040:7;9071:1;9056:284;9081:6;9078:1;9075:13;9056:284;;;9157:6;9151:13;9184:63;9243:3;9228:13;9184:63;:::i;:::-;9177:70;;9270:60;9323:6;9270:60;:::i;:::-;9260:70;;9116:224;9103:1;9100;9096:9;9091:14;;9056:284;;;9060:14;9356:3;9349:10;;8757:608;;;8633:732;;;;:::o;9371:109::-;9452:21;9467:5;9452:21;:::i;:::-;9447:3;9440:34;9371:109;;:::o;9486:167::-;9591:55;9640:5;9591:55;:::i;:::-;9586:3;9579:68;9486:167;;:::o;9659:147::-;9754:45;9793:5;9754:45;:::i;:::-;9749:3;9742:58;9659:147;;:::o;9812:364::-;9900:3;9928:39;9961:5;9928:39;:::i;:::-;9983:71;10047:6;10042:3;9983:71;:::i;:::-;9976:78;;10063:52;10108:6;10103:3;10096:4;10089:5;10085:16;10063:52;:::i;:::-;10140:29;10162:6;10140:29;:::i;:::-;10135:3;10131:39;10124:46;;9904:272;9812:364;;;;:::o;10182:366::-;10324:3;10345:67;10409:2;10404:3;10345:67;:::i;:::-;10338:74;;10421:93;10510:3;10421:93;:::i;:::-;10539:2;10534:3;10530:12;10523:19;;10182:366;;;:::o;10554:::-;10696:3;10717:67;10781:2;10776:3;10717:67;:::i;:::-;10710:74;;10793:93;10882:3;10793:93;:::i;:::-;10911:2;10906:3;10902:12;10895:19;;10554:366;;;:::o;10926:::-;11068:3;11089:67;11153:2;11148:3;11089:67;:::i;:::-;11082:74;;11165:93;11254:3;11165:93;:::i;:::-;11283:2;11278:3;11274:12;11267:19;;10926:366;;;:::o;11298:::-;11440:3;11461:67;11525:2;11520:3;11461:67;:::i;:::-;11454:74;;11537:93;11626:3;11537:93;:::i;:::-;11655:2;11650:3;11646:12;11639:19;;11298:366;;;:::o;11670:::-;11812:3;11833:67;11897:2;11892:3;11833:67;:::i;:::-;11826:74;;11909:93;11998:3;11909:93;:::i;:::-;12027:2;12022:3;12018:12;12011:19;;11670:366;;;:::o;12042:::-;12184:3;12205:67;12269:2;12264:3;12205:67;:::i;:::-;12198:74;;12281:93;12370:3;12281:93;:::i;:::-;12399:2;12394:3;12390:12;12383:19;;12042:366;;;:::o;12414:365::-;12556:3;12577:66;12641:1;12636:3;12577:66;:::i;:::-;12570:73;;12652:93;12741:3;12652:93;:::i;:::-;12770:2;12765:3;12761:12;12754:19;;12414:365;;;:::o;12785:366::-;12927:3;12948:67;13012:2;13007:3;12948:67;:::i;:::-;12941:74;;13024:93;13113:3;13024:93;:::i;:::-;13142:2;13137:3;13133:12;13126:19;;12785:366;;;:::o;13157:::-;13299:3;13320:67;13384:2;13379:3;13320:67;:::i;:::-;13313:74;;13396:93;13485:3;13396:93;:::i;:::-;13514:2;13509:3;13505:12;13498:19;;13157:366;;;:::o;13529:::-;13671:3;13692:67;13756:2;13751:3;13692:67;:::i;:::-;13685:74;;13768:93;13857:3;13768:93;:::i;:::-;13886:2;13881:3;13877:12;13870:19;;13529:366;;;:::o;13901:::-;14043:3;14064:67;14128:2;14123:3;14064:67;:::i;:::-;14057:74;;14140:93;14229:3;14140:93;:::i;:::-;14258:2;14253:3;14249:12;14242:19;;13901:366;;;:::o;14273:398::-;14432:3;14453:83;14534:1;14529:3;14453:83;:::i;:::-;14446:90;;14545:93;14634:3;14545:93;:::i;:::-;14663:1;14658:3;14654:11;14647:18;;14273:398;;;:::o;14677:366::-;14819:3;14840:67;14904:2;14899:3;14840:67;:::i;:::-;14833:74;;14916:93;15005:3;14916:93;:::i;:::-;15034:2;15029:3;15025:12;15018:19;;14677:366;;;:::o;15049:::-;15191:3;15212:67;15276:2;15271:3;15212:67;:::i;:::-;15205:74;;15288:93;15377:3;15288:93;:::i;:::-;15406:2;15401:3;15397:12;15390:19;;15049:366;;;:::o;15421:::-;15563:3;15584:67;15648:2;15643:3;15584:67;:::i;:::-;15577:74;;15660:93;15749:3;15660:93;:::i;:::-;15778:2;15773:3;15769:12;15762:19;;15421:366;;;:::o;15793:::-;15935:3;15956:67;16020:2;16015:3;15956:67;:::i;:::-;15949:74;;16032:93;16121:3;16032:93;:::i;:::-;16150:2;16145:3;16141:12;16134:19;;15793:366;;;:::o;16165:::-;16307:3;16328:67;16392:2;16387:3;16328:67;:::i;:::-;16321:74;;16404:93;16493:3;16404:93;:::i;:::-;16522:2;16517:3;16513:12;16506:19;;16165:366;;;:::o;16537:118::-;16624:24;16642:5;16624:24;:::i;:::-;16619:3;16612:37;16537:118;;:::o;16661:112::-;16744:22;16760:5;16744:22;:::i;:::-;16739:3;16732:35;16661:112;;:::o;16779:379::-;16963:3;16985:147;17128:3;16985:147;:::i;:::-;16978:154;;17149:3;17142:10;;16779:379;;;:::o;17164:222::-;17257:4;17295:2;17284:9;17280:18;17272:26;;17308:71;17376:1;17365:9;17361:17;17352:6;17308:71;:::i;:::-;17164:222;;;;:::o;17392:332::-;17513:4;17551:2;17540:9;17536:18;17528:26;;17564:71;17632:1;17621:9;17617:17;17608:6;17564:71;:::i;:::-;17645:72;17713:2;17702:9;17698:18;17689:6;17645:72;:::i;:::-;17392:332;;;;;:::o;17730:210::-;17817:4;17855:2;17844:9;17840:18;17832:26;;17868:65;17930:1;17919:9;17915:17;17906:6;17868:65;:::i;:::-;17730:210;;;;:::o;17946:320::-;18061:4;18099:2;18088:9;18084:18;18076:26;;18112:65;18174:1;18163:9;18159:17;18150:6;18112:65;:::i;:::-;18187:72;18255:2;18244:9;18240:18;18231:6;18187:72;:::i;:::-;17946:320;;;;;:::o;18272:258::-;18383:4;18421:2;18410:9;18406:18;18398:26;;18434:89;18520:1;18509:9;18505:17;18496:6;18434:89;:::i;:::-;18272:258;;;;:::o;18536:313::-;18649:4;18687:2;18676:9;18672:18;18664:26;;18736:9;18730:4;18726:20;18722:1;18711:9;18707:17;18700:47;18764:78;18837:4;18828:6;18764:78;:::i;:::-;18756:86;;18536:313;;;;:::o;18855:419::-;19021:4;19059:2;19048:9;19044:18;19036:26;;19108:9;19102:4;19098:20;19094:1;19083:9;19079:17;19072:47;19136:131;19262:4;19136:131;:::i;:::-;19128:139;;18855:419;;;:::o;19280:::-;19446:4;19484:2;19473:9;19469:18;19461:26;;19533:9;19527:4;19523:20;19519:1;19508:9;19504:17;19497:47;19561:131;19687:4;19561:131;:::i;:::-;19553:139;;19280:419;;;:::o;19705:::-;19871:4;19909:2;19898:9;19894:18;19886:26;;19958:9;19952:4;19948:20;19944:1;19933:9;19929:17;19922:47;19986:131;20112:4;19986:131;:::i;:::-;19978:139;;19705:419;;;:::o;20130:::-;20296:4;20334:2;20323:9;20319:18;20311:26;;20383:9;20377:4;20373:20;20369:1;20358:9;20354:17;20347:47;20411:131;20537:4;20411:131;:::i;:::-;20403:139;;20130:419;;;:::o;20555:::-;20721:4;20759:2;20748:9;20744:18;20736:26;;20808:9;20802:4;20798:20;20794:1;20783:9;20779:17;20772:47;20836:131;20962:4;20836:131;:::i;:::-;20828:139;;20555:419;;;:::o;20980:::-;21146:4;21184:2;21173:9;21169:18;21161:26;;21233:9;21227:4;21223:20;21219:1;21208:9;21204:17;21197:47;21261:131;21387:4;21261:131;:::i;:::-;21253:139;;20980:419;;;:::o;21405:::-;21571:4;21609:2;21598:9;21594:18;21586:26;;21658:9;21652:4;21648:20;21644:1;21633:9;21629:17;21622:47;21686:131;21812:4;21686:131;:::i;:::-;21678:139;;21405:419;;;:::o;21830:::-;21996:4;22034:2;22023:9;22019:18;22011:26;;22083:9;22077:4;22073:20;22069:1;22058:9;22054:17;22047:47;22111:131;22237:4;22111:131;:::i;:::-;22103:139;;21830:419;;;:::o;22255:::-;22421:4;22459:2;22448:9;22444:18;22436:26;;22508:9;22502:4;22498:20;22494:1;22483:9;22479:17;22472:47;22536:131;22662:4;22536:131;:::i;:::-;22528:139;;22255:419;;;:::o;22680:::-;22846:4;22884:2;22873:9;22869:18;22861:26;;22933:9;22927:4;22923:20;22919:1;22908:9;22904:17;22897:47;22961:131;23087:4;22961:131;:::i;:::-;22953:139;;22680:419;;;:::o;23105:::-;23271:4;23309:2;23298:9;23294:18;23286:26;;23358:9;23352:4;23348:20;23344:1;23333:9;23329:17;23322:47;23386:131;23512:4;23386:131;:::i;:::-;23378:139;;23105:419;;;:::o;23530:::-;23696:4;23734:2;23723:9;23719:18;23711:26;;23783:9;23777:4;23773:20;23769:1;23758:9;23754:17;23747:47;23811:131;23937:4;23811:131;:::i;:::-;23803:139;;23530:419;;;:::o;23955:::-;24121:4;24159:2;24148:9;24144:18;24136:26;;24208:9;24202:4;24198:20;24194:1;24183:9;24179:17;24172:47;24236:131;24362:4;24236:131;:::i;:::-;24228:139;;23955:419;;;:::o;24380:::-;24546:4;24584:2;24573:9;24569:18;24561:26;;24633:9;24627:4;24623:20;24619:1;24608:9;24604:17;24597:47;24661:131;24787:4;24661:131;:::i;:::-;24653:139;;24380:419;;;:::o;24805:::-;24971:4;25009:2;24998:9;24994:18;24986:26;;25058:9;25052:4;25048:20;25044:1;25033:9;25029:17;25022:47;25086:131;25212:4;25086:131;:::i;:::-;25078:139;;24805:419;;;:::o;25230:::-;25396:4;25434:2;25423:9;25419:18;25411:26;;25483:9;25477:4;25473:20;25469:1;25458:9;25454:17;25447:47;25511:131;25637:4;25511:131;:::i;:::-;25503:139;;25230:419;;;:::o;25655:222::-;25748:4;25786:2;25775:9;25771:18;25763:26;;25799:71;25867:1;25856:9;25852:17;25843:6;25799:71;:::i;:::-;25655:222;;;;:::o;25883:831::-;26146:4;26184:3;26173:9;26169:19;26161:27;;26198:71;26266:1;26255:9;26251:17;26242:6;26198:71;:::i;:::-;26279:80;26355:2;26344:9;26340:18;26331:6;26279:80;:::i;:::-;26406:9;26400:4;26396:20;26391:2;26380:9;26376:18;26369:48;26434:108;26537:4;26528:6;26434:108;:::i;:::-;26426:116;;26552:72;26620:2;26609:9;26605:18;26596:6;26552:72;:::i;:::-;26634:73;26702:3;26691:9;26687:19;26678:6;26634:73;:::i;:::-;25883:831;;;;;;;;:::o;26720:214::-;26809:4;26847:2;26836:9;26832:18;26824:26;;26860:67;26924:1;26913:9;26909:17;26900:6;26860:67;:::i;:::-;26720:214;;;;:::o;26940:129::-;26974:6;27001:20;;:::i;:::-;26991:30;;27030:33;27058:4;27050:6;27030:33;:::i;:::-;26940:129;;;:::o;27075:75::-;27108:6;27141:2;27135:9;27125:19;;27075:75;:::o;27156:311::-;27233:4;27323:18;27315:6;27312:30;27309:56;;;27345:18;;:::i;:::-;27309:56;27395:4;27387:6;27383:17;27375:25;;27455:4;27449;27445:15;27437:23;;27156:311;;;:::o;27473:::-;27550:4;27640:18;27632:6;27629:30;27626:56;;;27662:18;;:::i;:::-;27626:56;27712:4;27704:6;27700:17;27692:25;;27772:4;27766;27762:15;27754:23;;27473:311;;;:::o;27790:132::-;27857:4;27880:3;27872:11;;27910:4;27905:3;27901:14;27893:22;;27790:132;;;:::o;27928:114::-;27995:6;28029:5;28023:12;28013:22;;27928:114;;;:::o;28048:99::-;28100:6;28134:5;28128:12;28118:22;;28048:99;;;:::o;28153:113::-;28223:4;28255;28250:3;28246:14;28238:22;;28153:113;;;:::o;28272:184::-;28371:11;28405:6;28400:3;28393:19;28445:4;28440:3;28436:14;28421:29;;28272:184;;;;:::o;28462:147::-;28563:11;28600:3;28585:18;;28462:147;;;;:::o;28615:169::-;28699:11;28733:6;28728:3;28721:19;28773:4;28768:3;28764:14;28749:29;;28615:169;;;;:::o;28790:305::-;28830:3;28849:20;28867:1;28849:20;:::i;:::-;28844:25;;28883:20;28901:1;28883:20;:::i;:::-;28878:25;;29037:1;28969:66;28965:74;28962:1;28959:81;28956:107;;;29043:18;;:::i;:::-;28956:107;29087:1;29084;29080:9;29073:16;;28790:305;;;;:::o;29101:185::-;29141:1;29158:20;29176:1;29158:20;:::i;:::-;29153:25;;29192:20;29210:1;29192:20;:::i;:::-;29187:25;;29231:1;29221:35;;29236:18;;:::i;:::-;29221:35;29278:1;29275;29271:9;29266:14;;29101:185;;;;:::o;29292:848::-;29353:5;29360:4;29384:6;29375:15;;29408:5;29399:14;;29422:712;29443:1;29433:8;29430:15;29422:712;;;29538:4;29533:3;29529:14;29523:4;29520:24;29517:50;;;29547:18;;:::i;:::-;29517:50;29597:1;29587:8;29583:16;29580:451;;;30012:4;30005:5;30001:16;29992:25;;29580:451;30062:4;30056;30052:15;30044:23;;30092:32;30115:8;30092:32;:::i;:::-;30080:44;;29422:712;;;29292:848;;;;;;;:::o;30146:281::-;30204:5;30228:23;30246:4;30228:23;:::i;:::-;30220:31;;30272:25;30288:8;30272:25;:::i;:::-;30260:37;;30316:104;30353:66;30343:8;30337:4;30316:104;:::i;:::-;30307:113;;30146:281;;;;:::o;30433:1073::-;30487:5;30678:8;30668:40;;30699:1;30690:10;;30701:5;;30668:40;30727:4;30717:36;;30744:1;30735:10;;30746:5;;30717:36;30813:4;30861:1;30856:27;;;;30897:1;30892:191;;;;30806:277;;30856:27;30874:1;30865:10;;30876:5;;;30892:191;30937:3;30927:8;30924:17;30921:43;;;30944:18;;:::i;:::-;30921:43;30993:8;30990:1;30986:16;30977:25;;31028:3;31021:5;31018:14;31015:40;;;31035:18;;:::i;:::-;31015:40;31068:5;;;30806:277;;31192:2;31182:8;31179:16;31173:3;31167:4;31164:13;31160:36;31142:2;31132:8;31129:16;31124:2;31118:4;31115:12;31111:35;31095:111;31092:246;;;31248:8;31242:4;31238:19;31229:28;;31283:3;31276:5;31273:14;31270:40;;;31290:18;;:::i;:::-;31270:40;31323:5;;31092:246;31363:42;31401:3;31391:8;31385:4;31382:1;31363:42;:::i;:::-;31348:57;;;;31437:4;31432:3;31428:14;31421:5;31418:25;31415:51;;;31446:18;;:::i;:::-;31415:51;31495:4;31488:5;31484:16;31475:25;;30433:1073;;;;;;:::o;31512:348::-;31552:7;31575:20;31593:1;31575:20;:::i;:::-;31570:25;;31609:20;31627:1;31609:20;:::i;:::-;31604:25;;31797:1;31729:66;31725:74;31722:1;31719:81;31714:1;31707:9;31700:17;31696:105;31693:131;;;31804:18;;:::i;:::-;31693:131;31852:1;31849;31845:9;31834:20;;31512:348;;;;:::o;31866:191::-;31906:4;31926:20;31944:1;31926:20;:::i;:::-;31921:25;;31960:20;31978:1;31960:20;:::i;:::-;31955:25;;31999:1;31996;31993:8;31990:34;;;32004:18;;:::i;:::-;31990:34;32049:1;32046;32042:9;32034:17;;31866:191;;;;:::o;32063:96::-;32100:7;32129:24;32147:5;32129:24;:::i;:::-;32118:35;;32063:96;;;:::o;32165:90::-;32199:7;32242:5;32235:13;32228:21;32217:32;;32165:90;;;:::o;32261:126::-;32298:7;32338:42;32331:5;32327:54;32316:65;;32261:126;;;:::o;32393:77::-;32430:7;32459:5;32448:16;;32393:77;;;:::o;32476:86::-;32511:7;32551:4;32544:5;32540:16;32529:27;;32476:86;;;:::o;32568:144::-;32636:9;32669:37;32700:5;32669:37;:::i;:::-;32656:50;;32568:144;;;:::o;32718:121::-;32776:9;32809:24;32827:5;32809:24;:::i;:::-;32796:37;;32718:121;;;:::o;32845:126::-;32895:9;32928:37;32959:5;32928:37;:::i;:::-;32915:50;;32845:126;;;:::o;32977:113::-;33027:9;33060:24;33078:5;33060:24;:::i;:::-;33047:37;;32977:113;;;:::o;33096:307::-;33164:1;33174:113;33188:6;33185:1;33182:13;33174:113;;;33273:1;33268:3;33264:11;33258:18;33254:1;33249:3;33245:11;33238:39;33210:2;33207:1;33203:10;33198:15;;33174:113;;;33305:6;33302:1;33299:13;33296:101;;;33385:1;33376:6;33371:3;33367:16;33360:27;33296:101;33145:258;33096:307;;;:::o;33409:320::-;33453:6;33490:1;33484:4;33480:12;33470:22;;33537:1;33531:4;33527:12;33558:18;33548:81;;33614:4;33606:6;33602:17;33592:27;;33548:81;33676:2;33668:6;33665:14;33645:18;33642:38;33639:84;;;33695:18;;:::i;:::-;33639:84;33460:269;33409:320;;;:::o;33735:281::-;33818:27;33840:4;33818:27;:::i;:::-;33810:6;33806:40;33948:6;33936:10;33933:22;33912:18;33900:10;33897:34;33894:62;33891:88;;;33959:18;;:::i;:::-;33891:88;33999:10;33995:2;33988:22;33778:238;33735:281;;:::o;34022:233::-;34061:3;34084:24;34102:5;34084:24;:::i;:::-;34075:33;;34130:66;34123:5;34120:77;34117:103;;;34200:18;;:::i;:::-;34117:103;34247:1;34240:5;34236:13;34229:20;;34022:233;;;:::o;34261:180::-;34309:77;34306:1;34299:88;34406:4;34403:1;34396:15;34430:4;34427:1;34420:15;34447:180;34495:77;34492:1;34485:88;34592:4;34589:1;34582:15;34616:4;34613:1;34606:15;34633:180;34681:77;34678:1;34671:88;34778:4;34775:1;34768:15;34802:4;34799:1;34792:15;34819:180;34867:77;34864:1;34857:88;34964:4;34961:1;34954:15;34988:4;34985:1;34978:15;35005:180;35053:77;35050:1;35043:88;35150:4;35147:1;35140:15;35174:4;35171:1;35164:15;35191:117;35300:1;35297;35290:12;35314:117;35423:1;35420;35413:12;35437:117;35546:1;35543;35536:12;35560:117;35669:1;35666;35659:12;35683:102;35724:6;35775:2;35771:7;35766:2;35759:5;35755:14;35751:28;35741:38;;35683:102;;;:::o;35791:::-;35833:8;35880:5;35877:1;35873:13;35852:34;;35791:102;;;:::o;35899:222::-;36039:34;36035:1;36027:6;36023:14;36016:58;36108:5;36103:2;36095:6;36091:15;36084:30;35899:222;:::o;36127:162::-;36267:14;36263:1;36255:6;36251:14;36244:38;36127:162;:::o;36295:225::-;36435:34;36431:1;36423:6;36419:14;36412:58;36504:8;36499:2;36491:6;36487:15;36480:33;36295:225;:::o;36526:221::-;36666:34;36662:1;36654:6;36650:14;36643:58;36735:4;36730:2;36722:6;36718:15;36711:29;36526:221;:::o;36753:179::-;36893:31;36889:1;36881:6;36877:14;36870:55;36753:179;:::o;36938:225::-;37078:34;37074:1;37066:6;37062:14;37055:58;37147:8;37142:2;37134:6;37130:15;37123:33;36938:225;:::o;37169:159::-;37309:11;37305:1;37297:6;37293:14;37286:35;37169:159;:::o;37334:169::-;37474:21;37470:1;37462:6;37458:14;37451:45;37334:169;:::o;37509:182::-;37649:34;37645:1;37637:6;37633:14;37626:58;37509:182;:::o;37697:170::-;37837:22;37833:1;37825:6;37821:14;37814:46;37697:170;:::o;37873:224::-;38013:34;38009:1;38001:6;37997:14;37990:58;38082:7;38077:2;38069:6;38065:15;38058:32;37873:224;:::o;38103:114::-;;:::o;38223:223::-;38363:34;38359:1;38351:6;38347:14;38340:58;38432:6;38427:2;38419:6;38415:15;38408:31;38223:223;:::o;38452:162::-;38592:14;38588:1;38580:6;38576:14;38569:38;38452:162;:::o;38620:176::-;38760:28;38756:1;38748:6;38744:14;38737:52;38620:176;:::o;38802:224::-;38942:34;38938:1;38930:6;38926:14;38919:58;39011:7;39006:2;38998:6;38994:15;38987:32;38802:224;:::o;39032:161::-;39172:13;39168:1;39160:6;39156:14;39149:37;39032:161;:::o;39199:122::-;39272:24;39290:5;39272:24;:::i;:::-;39265:5;39262:35;39252:63;;39311:1;39308;39301:12;39252:63;39199:122;:::o;39327:116::-;39397:21;39412:5;39397:21;:::i;:::-;39390:5;39387:32;39377:60;;39433:1;39430;39423:12;39377:60;39327:116;:::o;39449:122::-;39522:24;39540:5;39522:24;:::i;:::-;39515:5;39512:35;39502:63;;39561:1;39558;39551:12;39502:63;39449:122;:::o

Swarm Source

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