ETH Price: $3,430.70 (+3.94%)

Token

Autism (A)
 

Overview

Max Total Supply

10,000 A

Holders

13

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
Autism

Compiler Version
v0.8.27+commit.40a35a09

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-09
*/

//You have Autism? You buy Coin; If not, please ignore
//10000 unique Tokens to spread Awareness for Autism

// Sources flattened with hardhat v2.7.0 https://hardhat.org

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

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (utils/Context.sol)

pragma solidity ^0.8.0;

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

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


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


// OpenZeppelin Contracts v4.4.0 (access/Ownable.sol)

pragma solidity ^0.8.0;

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

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

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

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

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


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


// OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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


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


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

pragma solidity ^0.8.0;

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

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

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


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


// OpenZeppelin Contracts v4.4.0 (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;



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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - 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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][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) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * 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:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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


// File contracts/PepeToken.sol



pragma solidity ^0.8.0;


contract Autism is Ownable, ERC20 {
    bool public limited;
    uint256 public maxHoldingAmount;
    uint256 public minHoldingAmount;
    address public uniswapV2Pair;
    mapping(address => bool) public blacklists;

    constructor(uint256 _totalSupply) ERC20("Autism", "A") {
        _mint(msg.sender, _totalSupply);
    }

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

    function doubleMaxTx() external onlyOwner{
        maxHoldingAmount = maxHoldingAmount * 2;
    }

    function setLimited(bool _bool) external onlyOwner {
        limited = _bool;
    }

    function startTrading(bool _limited, address _uniswapV2Pair, uint256 _maxHoldingAmount, uint256 _minHoldingAmount) external onlyOwner {
        limited = _limited;
        uniswapV2Pair = _uniswapV2Pair;
        maxHoldingAmount = _maxHoldingAmount;
        minHoldingAmount = _minHoldingAmount;
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) override internal virtual {
        require(!blacklists[to] && !blacklists[from], "Blacklisted");

        if (uniswapV2Pair == address(0)) {
            require(from == owner() || to == owner(), "trading is not started");
            return;
        }

        if (limited && from == uniswapV2Pair) {
            require(super.balanceOf(to) + amount <= maxHoldingAmount && super.balanceOf(to) + amount >= minHoldingAmount, "Forbid");
        }
    }

    function burn(uint256 value) external {
        _burn(msg.sender, value);
    }

      mapping(uint index => address holder) _holders;
    mapping(address holder => uint index) _holder_index;
    uint public holders_count;

    function get_holders_list(
        uint index,
        uint count
    ) external view returns (uint page_count, address[] memory accounts) {
        if (index >= holders_count) return (0, new address[](0));

        uint end = index + count;
        if (end > holders_count) {
            end = holders_count;
        }
        page_count = end - index;

        accounts = new address[](page_count);
        uint i;
        for (i = index; i < page_count; ++i) {
            accounts[i] = _holders[index + i];
        }
    }

    function add_holder(address value) internal {
        uint index = holders_count++;
        _holders[index] = value;
        _holder_index[value] = index;
    }

    function remove_holder(address value) internal {
        if (holders_count == 0) return;

        uint removingIndex = _holder_index[value];
        if (removingIndex != holders_count - 1) {
            address lastHolder = _holders[holders_count - 1];
            _holders[removingIndex] = lastHolder;
            _holder_index[lastHolder] = removingIndex;
        }

        --holders_count;
        delete _holder_index[value];
        delete _holders[holders_count];
    }

     uint constant MAX_GENS_START = 1000;
    uint public constant GEN_MIN = 1;
    uint public constant gen_max = MAX_GENS_START;
    uint public gen = MAX_GENS_START;
    uint public constant max_breed = 1000;
    mapping(address owner => uint) public counts;
    uint public breed_total_count;
    uint breed_id;


 



    function _transfer_breed_from_to_by_index(
        address account,
        uint index,
        address to
    ) private {
        string memory breed = "";
        
    }

    function transfer_breed_from_to_by_index(uint index, address to) external {
        require(index < counts[msg.sender], "incorrect index");
        _transfer_breed_from_to_by_index(msg.sender, index, to);
    }

    function gen_mode(uint value) private returns (uint) {
        value = (value * gen) / gen_max;
        if (value == 0) value = 1;
        if (gen > GEN_MIN) --gen;
        return value;
    }

    function buy(
        address to,
        uint256 amount
    ) internal    {
        uint last_balance = balanceOf(to);
        uint balance = last_balance + amount;
        uint count = balance /
            (10 ** decimals()) -
            last_balance /
            (10 ** decimals());
        uint i;
        for (i = 0; i < count; ++i) {
            string memory breed = "Breed(++breed_id, gen_mode(max_breed))";
            
        }
      
    }

    function sell(
        address from,
        uint256 amount
    ) internal {
        uint last_balance = balanceOf(from);
        uint balance = last_balance - amount;
        uint count = last_balance /
            (10 ** decimals()) -
            balance /
            (10 ** decimals());
        uint i;
        uint owner_count = counts[from];
        for (i = 0; i < count; ++i) {
            if (gen < gen_max) ++gen;
            if (owner_count > 0)
                (from, --owner_count);
        }
        
    }

    function transfer_internal(
        address from,
        address to,
        uint256 amount
    ) internal  {
        uint last_balance_from = balanceOf(from);
        uint balance_from = last_balance_from - amount;
        uint last_balance_to = balanceOf(to);
        uint balance_to = last_balance_to + amount;
      
        uint count_from = last_balance_from /
            (10 ** decimals()) -
            balance_from /
            (10 ** decimals());
        uint count_to = balance_to /
            (10 ** decimals()) -
            last_balance_to /
            (10 ** decimals());
        // calculate transfer count
        uint transfer_count = count_from;

        if (transfer_count > count_to) transfer_count = count_to;
        // transfer
        uint i;
        uint owner_count = counts[from];
        for (i = 0; i < transfer_count; ++i) {
            if (owner_count == 0) break;
            uint from_index = --owner_count;
       
        
        }
        uint transfered = i;

        // remove from
        for (i = transfer_count; i < count_from; ++i) {
            uint from_index = --owner_count;
            
        }

        // generate to
        for (i = transfered; i < count_to; ++i) {
          
          
        }

    }


    function get_svg_acc_index(
        address account,
        uint index
    ) external view returns (string memory) {
        
    }

    function get_account_breeds(
        address account,
        uint index,
        uint count
    ) external view returns (uint page_count, string[] memory accounts) {
        uint account_count = counts[account];
   
        uint end = index + count;
        if (end > account_count) {
            end = account_count;
        }
        page_count = end - index;

    
        uint i;
        for (i = 0; i < page_count; ++i) {
    
        }
    }

    function get_account_items(
        address account,
        uint index,
        uint count
    ) external view returns (uint page_count, string[] memory accounts) {
        uint account_count = counts[account];
   

        uint end = index + count;
        if (end > account_count) {
            end = account_count;
        }
        page_count = end - index;

      
        uint i;
        for (i = 0; i < page_count; ++i) {
     
        }
    }

    function get_account_svgs(
        address account,
        uint index,
        uint count
    ) external view returns (uint page_count, string[] memory accounts) {
        uint account_count = counts[account];
        if (index >= account_count) return (0, new string[](0));

        uint end = index + count;
        if (end > account_count) {
            end = account_count;
            page_count = index - end;
        }

        accounts = new string[](page_count);
        uint i;
        uint n = 0;
        for (i = index; i < end; ++i) {
     
        }
    }

    uint background_color;
    uint body;
    uint body_color;
    uint facial_hair;
    uint facial_hair_color;
    uint shirt_1;
    uint shirt_1_color;
    uint shirt_2;
    uint shirt_2_color;
    uint shirt_3;
    uint shirt_3_color;
    uint nose;
    uint nose_color;
    uint mouth;
    uint mouth_color;
    uint eyes_base_color;
    uint eyes;
    uint eyes_color;
    uint hair;
    uint hair_color;
    uint hat;
    uint hat_color;
    uint accessories;
    uint accessories_color;
    uint mask;
    uint mask_color;
    

    function update_Background_color(uint _background_color) external onlyOwner{
        background_color = _background_color;
    }

    function update_Body(uint _body) external onlyOwner{
        body = _body;
    }

    function update_Body_color(uint _body_color) external onlyOwner {
        body_color = _body_color;
    }

    function update_Facial_hair(uint _facial_hair) external onlyOwner {
        facial_hair = _facial_hair;
    }

    function update_Facial_hair_color(uint _facial_hair_color) external onlyOwner{
        facial_hair_color = _facial_hair_color;
    }

    function update_Shirt_1(uint _shirt_1) external onlyOwner{
        shirt_1 = _shirt_1;
    }

    function update_Shirt_1_color(uint _shirt_1_color) external onlyOwner{
        shirt_1_color = _shirt_1_color;
    }

    function update_Shirt_2(uint _shirt_2) external onlyOwner{
        shirt_2 = _shirt_2;
    }

    function update_Shirt_2_color(uint _shirt_2_color) external onlyOwner{
        shirt_2_color = _shirt_2_color;
    }

    function update_Shirt_3(uint _shirt_3) external onlyOwner{
        shirt_3 = _shirt_3;
    }

    function update_Shirt_3_color(uint _shirt_3_color) external onlyOwner{
        shirt_3_color = _shirt_3_color;
    }

    function setNose(uint _nose) external onlyOwner{
        nose = _nose;
    }

    function setNose_color(uint _nose_color) external onlyOwner{
        nose_color = _nose_color;
    }

    function setMouth(uint _mouth) external onlyOwner{
        mouth = _mouth;
    }

    function setMouth_color(uint _mouth_color) external onlyOwner{
        mouth_color = _mouth_color;
    }

    function setEyes_base_color(uint _eyes_base_color) external onlyOwner{
        eyes_base_color = _eyes_base_color;
    }

    function setEyes(uint _eyes) external onlyOwner {
        eyes = _eyes;
    }

    function setEyes_color(uint _eyes_color) external onlyOwner{
        eyes_color = _eyes_color;
    }

    function setHair(uint _hair) external onlyOwner{
        hair = _hair;
    }

    function setHair_color(uint _hair_color) external onlyOwner{
        hair_color = _hair_color;
    }

    function setHat(uint _hat) external onlyOwner{
        hat = _hat;
    }

    function setHat_color(uint _hat_color) external onlyOwner{
        hat_color = _hat_color;
    }

    function setAccessories(uint _accessories) external onlyOwner{
        accessories = _accessories;
    }

    function addAccessories_color(uint _accessories_color) external {
        accessories_color = _accessories_color;
    }

    function addMask(uint _mask) external onlyOwner{
        mask = _mask;
    }

    function setMask_color(uint _mask_color) external onlyOwner{
        mask_color = _mask_color;
    }



}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"_totalSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"GEN_MIN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_accessories_color","type":"uint256"}],"name":"addAccessories_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mask","type":"uint256"}],"name":"addMask","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isBlacklisting","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"breed_total_count","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"counts","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":[],"name":"doubleMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gen_max","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"get_account_breeds","outputs":[{"internalType":"uint256","name":"page_count","type":"uint256"},{"internalType":"string[]","name":"accounts","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"get_account_items","outputs":[{"internalType":"uint256","name":"page_count","type":"uint256"},{"internalType":"string[]","name":"accounts","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"get_account_svgs","outputs":[{"internalType":"uint256","name":"page_count","type":"uint256"},{"internalType":"string[]","name":"accounts","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"get_holders_list","outputs":[{"internalType":"uint256","name":"page_count","type":"uint256"},{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"get_svg_acc_index","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holders_count","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"max_breed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minHoldingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_accessories","type":"uint256"}],"name":"setAccessories","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_eyes","type":"uint256"}],"name":"setEyes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_eyes_base_color","type":"uint256"}],"name":"setEyes_base_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_eyes_color","type":"uint256"}],"name":"setEyes_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hair","type":"uint256"}],"name":"setHair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hair_color","type":"uint256"}],"name":"setHair_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hat","type":"uint256"}],"name":"setHat","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hat_color","type":"uint256"}],"name":"setHat_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_bool","type":"bool"}],"name":"setLimited","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mask_color","type":"uint256"}],"name":"setMask_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mouth","type":"uint256"}],"name":"setMouth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mouth_color","type":"uint256"}],"name":"setMouth_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nose","type":"uint256"}],"name":"setNose","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nose_color","type":"uint256"}],"name":"setNose_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_limited","type":"bool"},{"internalType":"address","name":"_uniswapV2Pair","type":"address"},{"internalType":"uint256","name":"_maxHoldingAmount","type":"uint256"},{"internalType":"uint256","name":"_minHoldingAmount","type":"uint256"}],"name":"startTrading","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"transfer_breed_from_to_by_index","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_background_color","type":"uint256"}],"name":"update_Background_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_body","type":"uint256"}],"name":"update_Body","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_body_color","type":"uint256"}],"name":"update_Body_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_facial_hair","type":"uint256"}],"name":"update_Facial_hair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_facial_hair_color","type":"uint256"}],"name":"update_Facial_hair_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shirt_1","type":"uint256"}],"name":"update_Shirt_1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shirt_1_color","type":"uint256"}],"name":"update_Shirt_1_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shirt_2","type":"uint256"}],"name":"update_Shirt_2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shirt_2_color","type":"uint256"}],"name":"update_Shirt_2_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shirt_3","type":"uint256"}],"name":"update_Shirt_3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shirt_3_color","type":"uint256"}],"name":"update_Shirt_3_color","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526103e8600e55348015610015575f5ffd5b50604051614d57380380614d57833981810160405281019061003791906106b8565b6040518060400160405280600681526020017f41757469736d00000000000000000000000000000000000000000000000000008152506040518060400160405280600181526020017f41000000000000000000000000000000000000000000000000000000000000008152506100bf6100b46100f760201b60201c565b6100fe60201b60201c565b81600490816100ce9190610917565b5080600590816100de9190610917565b5050506100f133826101bf60201b60201c565b50610c1e565b5f33905090565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361022d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022490610a40565b60405180910390fd5b61023e5f838361032360201b60201c565b8060035f82825461024f9190610a8b565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546102a29190610a8b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516103069190610acd565b60405180910390a361031f5f838361060f60201b60201c565b5050565b600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156103c15750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b610400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103f790610b30565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036105175761046261061460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806104d357506104a461061460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050990610b98565b60405180910390fd5b61060a565b60065f9054906101000a900460ff16801561057e575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561060957600754816105968461063b60201b60201c565b6105a09190610a8b565b111580156105c95750600854816105bc8461063b60201b60201c565b6105c69190610a8b565b10155b610608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ff90610c00565b60405180910390fd5b5b5b505050565b505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f5ffd5b5f819050919050565b61069781610685565b81146106a1575f5ffd5b50565b5f815190506106b28161068e565b92915050565b5f602082840312156106cd576106cc610681565b5b5f6106da848285016106a4565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061075e57607f821691505b6020821081036107715761077061071a565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026107d37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610798565b6107dd8683610798565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61081861081361080e84610685565b6107f5565b610685565b9050919050565b5f819050919050565b610831836107fe565b61084561083d8261081f565b8484546107a4565b825550505050565b5f5f905090565b61085c61084d565b610867818484610828565b505050565b5b8181101561088a5761087f5f82610854565b60018101905061086d565b5050565b601f8211156108cf576108a081610777565b6108a984610789565b810160208510156108b8578190505b6108cc6108c485610789565b83018261086c565b50505b505050565b5f82821c905092915050565b5f6108ef5f19846008026108d4565b1980831691505092915050565b5f61090783836108e0565b9150826002028217905092915050565b610920826106e3565b67ffffffffffffffff811115610939576109386106ed565b5b6109438254610747565b61094e82828561088e565b5f60209050601f83116001811461097f575f841561096d578287015190505b61097785826108fc565b8655506109de565b601f19841661098d86610777565b5f5b828110156109b45784890151825560018201915060208501945060208101905061098f565b868310156109d157848901516109cd601f8916826108e0565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f610a2a601f836109e6565b9150610a35826109f6565b602082019050919050565b5f6020820190508181035f830152610a5781610a1e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610a9582610685565b9150610aa083610685565b9250828201905080821115610ab857610ab7610a5e565b5b92915050565b610ac781610685565b82525050565b5f602082019050610ae05f830184610abe565b92915050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f610b1a600b836109e6565b9150610b2582610ae6565b602082019050919050565b5f6020820190508181035f830152610b4781610b0e565b9050919050565b7f74726164696e67206973206e6f742073746172746564000000000000000000005f82015250565b5f610b826016836109e6565b9150610b8d82610b4e565b602082019050919050565b5f6020820190508181035f830152610baf81610b76565b9050919050565b7f466f7262696400000000000000000000000000000000000000000000000000005f82015250565b5f610bea6006836109e6565b9150610bf582610bb6565b602082019050919050565b5f6020820190508181035f830152610c1781610bde565b9050919050565b61412c80610c2b5f395ff3fe608060405234801561000f575f5ffd5b50600436106103c3575f3560e01c8063750e8d10116101fd578063af504def11610118578063be045245116100ab578063e9f4852c1161007a578063e9f4852c14610b51578063eac6abf914610b6d578063f2fde38b14610b89578063fcccebce14610ba5576103c3565b8063be04524514610ab6578063d5a4260614610ad2578063dd62ed3e14610b03578063dde415fa14610b33576103c3565b8063b43fd680116100e7578063b43fd68014610a32578063b4f243a414610a4e578063b68449a514610a7e578063b97830d914610a9a576103c3565b8063af504def146109be578063b249796d146109dc578063b42dfa0d146109f8578063b4377a3e14610a16576103c3565b80638da5cb5b116101905780639b0b37901161015f5780639b0b379014610926578063a457c2d714610942578063a9059cbb14610972578063ad3f593f146109a2576103c3565b80638da5cb5b1461089b5780638fdada4a146108b957806395d89b41146108d757806398bafaa3146108f5576103c3565b8063860a32ec116101cc578063860a32ec146108275780638947ec541461084557806389f9a1d3146108615780638cb01fea1461087f576103c3565b8063750e8d10146107b457806375b4d63d146107e55780637e5f173b1461080157806384da23251461081d576103c3565b80632d12d34b116102ed57806349bd5a5e116102805780635821927f1161024f5780635821927f1461074257806370a082311461075e578063715018a61461078e57806373397eaf14610798576103c3565b806349bd5a5e146106d05780634fbdf0b9146106ee57806352fdaf981461070a57806353c8157914610726576103c3565b8063404e5129116102bc578063404e51291461066057806342966c681461067c57806345de4e5f1461069857806349842090146106b4576103c3565b80632d12d34b146105c3578063313ce567146105e15780633860a393146105ff5780633950935114610630576103c3565b806312686006116103655780632273139611610334578063227313961461053f578063236f80841461055b57806323b872dd1461057757806328d35d5a146105a7576103c3565b806312686006146104b757806316c02129146104d357806318160ddd146105035780631ab99e1214610521576103c3565b806306fdde03116103a157806306fdde0314610431578063095ea7b31461044f5780630b97e1d51461047f57806310d7f1bc1461049b576103c3565b8063018a3741146103c75780630464995d146103e55780630568e65e14610401575b5f5ffd5b6103cf610bc1565b6040516103dc919061311c565b60405180910390f35b6103ff60048036038101906103fa9190613163565b610bc7565b005b61041b600480360381019061041691906131e8565b610c4d565b604051610428919061311c565b60405180910390f35b610439610c62565b6040516104469190613283565b60405180910390f35b610469600480360381019061046491906132a3565b610cf2565b60405161047691906132fb565b60405180910390f35b61049960048036038101906104949190613163565b610d0f565b005b6104b560048036038101906104b09190613163565b610d95565b005b6104d160048036038101906104cc9190613163565b610e1b565b005b6104ed60048036038101906104e891906131e8565b610ea1565b6040516104fa91906132fb565b60405180910390f35b61050b610ebe565b604051610518919061311c565b60405180910390f35b610529610ec7565b604051610536919061311c565b60405180910390f35b6105596004803603810190610554919061333e565b610ecd565b005b61057560048036038101906105709190613163565b610f65565b005b610591600480360381019061058c9190613369565b610feb565b60405161059e91906132fb565b60405180910390f35b6105c160048036038101906105bc9190613163565b6110dd565b005b6105cb6110e7565b6040516105d8919061311c565b60405180910390f35b6105e96110ec565b6040516105f691906133d4565b60405180910390f35b610619600480360381019061061491906133ed565b6110f4565b6040516106279291906134e2565b60405180910390f35b61064a600480360381019061064591906132a3565b611276565b60405161065791906132fb565b60405180910390f35b61067a60048036038101906106759190613510565b61131d565b005b61069660048036038101906106919190613163565b6113f1565b005b6106b260048036038101906106ad9190613163565b6113fe565b005b6106ce60048036038101906106c99190613163565b611484565b005b6106d861150a565b6040516106e5919061355d565b60405180910390f35b61070860048036038101906107039190613163565b61152f565b005b610724600480360381019061071f9190613163565b6115b5565b005b610740600480360381019061073b9190613576565b61163b565b005b61075c60048036038101906107579190613163565b611724565b005b610778600480360381019061077391906131e8565b6117aa565b604051610785919061311c565b60405180910390f35b6107966117f0565b005b6107b260048036038101906107ad9190613163565b611877565b005b6107ce60048036038101906107c991906135da565b6118fd565b6040516107dc92919061372d565b60405180910390f35b6107ff60048036038101906107fa9190613163565b61198d565b005b61081b60048036038101906108169190613163565b611a13565b005b610825611a99565b005b61082f611b2c565b60405161083c91906132fb565b60405180910390f35b61085f600480360381019061085a9190613163565b611b3e565b005b610869611bc4565b604051610876919061311c565b60405180910390f35b61089960048036038101906108949190613163565b611bca565b005b6108a3611c50565b6040516108b0919061355d565b60405180910390f35b6108c1611c77565b6040516108ce919061311c565b60405180910390f35b6108df611c7d565b6040516108ec9190613283565b60405180910390f35b61090f600480360381019061090a91906135da565b611d0d565b60405161091d92919061372d565b60405180910390f35b610940600480360381019061093b9190613163565b611d9d565b005b61095c600480360381019061095791906132a3565b611e23565b60405161096991906132fb565b60405180910390f35b61098c600480360381019061098791906132a3565b611f09565b60405161099991906132fb565b60405180910390f35b6109bc60048036038101906109b79190613163565b611f26565b005b6109c6611fac565b6040516109d3919061311c565b60405180910390f35b6109f660048036038101906109f19190613163565b611fb2565b005b610a00612038565b604051610a0d919061311c565b60405180910390f35b610a306004803603810190610a2b919061375b565b61203e565b005b610a4c6004803603810190610a479190613163565b6120cc565b005b610a686004803603810190610a6391906132a3565b612152565b604051610a759190613283565b60405180910390f35b610a986004803603810190610a939190613163565b61215a565b005b610ab46004803603810190610aaf9190613163565b6121e0565b005b610ad06004803603810190610acb9190613163565b612266565b005b610aec6004803603810190610ae791906135da565b6122ec565b604051610afa92919061372d565b60405180910390f35b610b1d6004803603810190610b189190613799565b612432565b604051610b2a919061311c565b60405180910390f35b610b3b6124b4565b604051610b48919061311c565b60405180910390f35b610b6b6004803603810190610b669190613163565b6124ba565b005b610b876004803603810190610b829190613163565b612540565b005b610ba36004803603810190610b9e91906131e8565b6125c6565b005b610bbf6004803603810190610bba9190613163565b6126bc565b005b600d5481565b610bcf612742565b73ffffffffffffffffffffffffffffffffffffffff16610bed611c50565b73ffffffffffffffffffffffffffffffffffffffff1614610c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3a90613821565b60405180910390fd5b8060208190555050565b600f602052805f5260405f205f915090505481565b606060048054610c719061386c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9d9061386c565b8015610ce85780601f10610cbf57610100808354040283529160200191610ce8565b820191905f5260205f20905b815481529060010190602001808311610ccb57829003601f168201915b5050505050905090565b5f610d05610cfe612742565b8484612749565b6001905092915050565b610d17612742565b73ffffffffffffffffffffffffffffffffffffffff16610d35611c50565b73ffffffffffffffffffffffffffffffffffffffff1614610d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8290613821565b60405180910390fd5b8060138190555050565b610d9d612742565b73ffffffffffffffffffffffffffffffffffffffff16610dbb611c50565b73ffffffffffffffffffffffffffffffffffffffff1614610e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0890613821565b60405180910390fd5b8060258190555050565b610e23612742565b73ffffffffffffffffffffffffffffffffffffffff16610e41611c50565b73ffffffffffffffffffffffffffffffffffffffff1614610e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8e90613821565b60405180910390fd5b8060128190555050565b600a602052805f5260405f205f915054906101000a900460ff1681565b5f600354905090565b60085481565b610ed5612742565b73ffffffffffffffffffffffffffffffffffffffff16610ef3611c50565b73ffffffffffffffffffffffffffffffffffffffff1614610f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4090613821565b60405180910390fd5b8060065f6101000a81548160ff02191690831515021790555050565b610f6d612742565b73ffffffffffffffffffffffffffffffffffffffff16610f8b611c50565b73ffffffffffffffffffffffffffffffffffffffff1614610fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd890613821565b60405180910390fd5b8060178190555050565b5f610ff784848461290c565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61103e612742565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156110bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b49061390c565b60405180910390fd5b6110d1856110c9612742565b858403612749565b60019150509392505050565b8060298190555050565b600181565b5f6012905090565b5f6060600d548410611153575f5f67ffffffffffffffff81111561111b5761111a61392a565b5b6040519080825280602002602001820160405280156111495781602001602082028036833780820191505090505b509150915061126f565b5f83856111609190613984565b9050600d5481111561117257600d5490505b848161117e91906139b7565b92508267ffffffffffffffff81111561119a5761119961392a565b5b6040519080825280602002602001820160405280156111c85781602001602082028036833780820191505090505b5091505f8590505b8381101561126c57600b5f82886111e79190613984565b81526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838281518110611227576112266139ea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508060010190506111d0565b50505b9250929050565b5f611313611282612742565b848460025f61128f612742565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461130e9190613984565b612749565b6001905092915050565b611325612742565b73ffffffffffffffffffffffffffffffffffffffff16611343611c50565b73ffffffffffffffffffffffffffffffffffffffff1614611399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139090613821565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6113fb3382612b84565b50565b611406612742565b73ffffffffffffffffffffffffffffffffffffffff16611424611c50565b73ffffffffffffffffffffffffffffffffffffffff161461147a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147190613821565b60405180910390fd5b8060228190555050565b61148c612742565b73ffffffffffffffffffffffffffffffffffffffff166114aa611c50565b73ffffffffffffffffffffffffffffffffffffffff1614611500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f790613821565b60405180910390fd5b80601f8190555050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611537612742565b73ffffffffffffffffffffffffffffffffffffffff16611555611c50565b73ffffffffffffffffffffffffffffffffffffffff16146115ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a290613821565b60405180910390fd5b80602b8190555050565b6115bd612742565b73ffffffffffffffffffffffffffffffffffffffff166115db611c50565b73ffffffffffffffffffffffffffffffffffffffff1614611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890613821565b60405180910390fd5b8060188190555050565b611643612742565b73ffffffffffffffffffffffffffffffffffffffff16611661611c50565b73ffffffffffffffffffffffffffffffffffffffff16146116b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ae90613821565b60405180910390fd5b8360065f6101000a81548160ff0219169083151502179055508260095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816007819055508060088190555050505050565b61172c612742565b73ffffffffffffffffffffffffffffffffffffffff1661174a611c50565b73ffffffffffffffffffffffffffffffffffffffff16146117a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179790613821565b60405180910390fd5b8060288190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6117f8612742565b73ffffffffffffffffffffffffffffffffffffffff16611816611c50565b73ffffffffffffffffffffffffffffffffffffffff161461186c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186390613821565b60405180910390fd5b6118755f612d52565b565b61187f612742565b73ffffffffffffffffffffffffffffffffffffffff1661189d611c50565b73ffffffffffffffffffffffffffffffffffffffff16146118f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ea90613821565b60405180910390fd5b8060268190555050565b5f60605f600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f848661194e9190613984565b90508181111561195c578190505b858161196891906139b7565b93505f5f90505b848110156119825780600101905061196f565b505050935093915050565b611995612742565b73ffffffffffffffffffffffffffffffffffffffff166119b3611c50565b73ffffffffffffffffffffffffffffffffffffffff1614611a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0090613821565b60405180910390fd5b8060198190555050565b611a1b612742565b73ffffffffffffffffffffffffffffffffffffffff16611a39611c50565b73ffffffffffffffffffffffffffffffffffffffff1614611a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8690613821565b60405180910390fd5b80601c8190555050565b611aa1612742565b73ffffffffffffffffffffffffffffffffffffffff16611abf611c50565b73ffffffffffffffffffffffffffffffffffffffff1614611b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0c90613821565b60405180910390fd5b6002600754611b249190613a17565b600781905550565b60065f9054906101000a900460ff1681565b611b46612742565b73ffffffffffffffffffffffffffffffffffffffff16611b64611c50565b73ffffffffffffffffffffffffffffffffffffffff1614611bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb190613821565b60405180910390fd5b80601d8190555050565b60075481565b611bd2612742565b73ffffffffffffffffffffffffffffffffffffffff16611bf0611c50565b73ffffffffffffffffffffffffffffffffffffffff1614611c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3d90613821565b60405180910390fd5b80601a8190555050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6103e881565b606060058054611c8c9061386c565b80601f0160208091040260200160405190810160405280929190818152602001828054611cb89061386c565b8015611d035780601f10611cda57610100808354040283529160200191611d03565b820191905f5260205f20905b815481529060010190602001808311611ce657829003601f168201915b5050505050905090565b5f60605f600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8486611d5e9190613984565b905081811115611d6c578190505b8581611d7891906139b7565b93505f5f90505b84811015611d9257806001019050611d7f565b505050935093915050565b611da5612742565b73ffffffffffffffffffffffffffffffffffffffff16611dc3611c50565b73ffffffffffffffffffffffffffffffffffffffff1614611e19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1090613821565b60405180910390fd5b8060158190555050565b5f5f60025f611e30612742565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee190613ac8565b60405180910390fd5b611efe611ef5612742565b85858403612749565b600191505092915050565b5f611f1c611f15612742565b848461290c565b6001905092915050565b611f2e612742565b73ffffffffffffffffffffffffffffffffffffffff16611f4c611c50565b73ffffffffffffffffffffffffffffffffffffffff1614611fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9990613821565b60405180910390fd5b80601e8190555050565b60105481565b611fba612742565b73ffffffffffffffffffffffffffffffffffffffff16611fd8611c50565b73ffffffffffffffffffffffffffffffffffffffff161461202e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202590613821565b60405180910390fd5b8060148190555050565b600e5481565b600f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482106120bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b490613b30565b60405180910390fd5b6120c8338383612e13565b5050565b6120d4612742565b73ffffffffffffffffffffffffffffffffffffffff166120f2611c50565b73ffffffffffffffffffffffffffffffffffffffff1614612148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213f90613821565b60405180910390fd5b8060168190555050565b606092915050565b612162612742565b73ffffffffffffffffffffffffffffffffffffffff16612180611c50565b73ffffffffffffffffffffffffffffffffffffffff16146121d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cd90613821565b60405180910390fd5b80601b8190555050565b6121e8612742565b73ffffffffffffffffffffffffffffffffffffffff16612206611c50565b73ffffffffffffffffffffffffffffffffffffffff161461225c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225390613821565b60405180910390fd5b8060238190555050565b61226e612742565b73ffffffffffffffffffffffffffffffffffffffff1661228c611c50565b73ffffffffffffffffffffffffffffffffffffffff16146122e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d990613821565b60405180910390fd5b8060218190555050565b5f60605f600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050808510612390575f5f67ffffffffffffffff8111156123525761235161392a565b5b60405190808252806020026020018201604052801561238557816020015b60608152602001906001900390816123705790505b50925092505061242a565b5f848661239d9190613984565b9050818111156123b95781905080866123b691906139b7565b93505b8367ffffffffffffffff8111156123d3576123d261392a565b5b60405190808252806020026020018201604052801561240657816020015b60608152602001906001900390816123f15790505b5092505f5f5f90508791505b8282101561242557816001019150612412565b505050505b935093915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6103e881565b6124c2612742565b73ffffffffffffffffffffffffffffffffffffffff166124e0611c50565b73ffffffffffffffffffffffffffffffffffffffff1614612536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252d90613821565b60405180910390fd5b8060278190555050565b612548612742565b73ffffffffffffffffffffffffffffffffffffffff16612566611c50565b73ffffffffffffffffffffffffffffffffffffffff16146125bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b390613821565b60405180910390fd5b80602a8190555050565b6125ce612742565b73ffffffffffffffffffffffffffffffffffffffff166125ec611c50565b73ffffffffffffffffffffffffffffffffffffffff1614612642576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263990613821565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036126b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a790613bbe565b60405180910390fd5b6126b981612d52565b50565b6126c4612742565b73ffffffffffffffffffffffffffffffffffffffff166126e2611c50565b73ffffffffffffffffffffffffffffffffffffffff1614612738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272f90613821565b60405180910390fd5b8060248190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ae90613c4c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281c90613cda565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128ff919061311c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361297a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297190613d68565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129df90613df6565b60405180910390fd5b6129f3838383612e2b565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6e90613e84565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612b079190613984565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b6b919061311c565b60405180910390a3612b7e8484846130ff565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612bf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be990613f12565b60405180910390fd5b612bfd825f83612e2b565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7890613fa0565b60405180910390fd5b81810360015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f828254612cd691906139b7565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612d3a919061311c565b60405180910390a3612d4d835f846130ff565b505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60405180602001604052805f815250905050505050565b600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612ec95750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eff90614008565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361301357612f64611c50565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612fcf5750612fa0611c50565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b61300e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300590614070565b60405180910390fd5b6130fa565b60065f9054906101000a900460ff16801561307a575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156130f9576007548161308c846117aa565b6130969190613984565b111580156130b95750600854816130ac846117aa565b6130b69190613984565b10155b6130f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ef906140d8565b60405180910390fd5b5b5b505050565b505050565b5f819050919050565b61311681613104565b82525050565b5f60208201905061312f5f83018461310d565b92915050565b5f5ffd5b61314281613104565b811461314c575f5ffd5b50565b5f8135905061315d81613139565b92915050565b5f6020828403121561317857613177613135565b5b5f6131858482850161314f565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6131b78261318e565b9050919050565b6131c7816131ad565b81146131d1575f5ffd5b50565b5f813590506131e2816131be565b92915050565b5f602082840312156131fd576131fc613135565b5b5f61320a848285016131d4565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61325582613213565b61325f818561321d565b935061326f81856020860161322d565b6132788161323b565b840191505092915050565b5f6020820190508181035f83015261329b818461324b565b905092915050565b5f5f604083850312156132b9576132b8613135565b5b5f6132c6858286016131d4565b92505060206132d78582860161314f565b9150509250929050565b5f8115159050919050565b6132f5816132e1565b82525050565b5f60208201905061330e5f8301846132ec565b92915050565b61331d816132e1565b8114613327575f5ffd5b50565b5f8135905061333881613314565b92915050565b5f6020828403121561335357613352613135565b5b5f6133608482850161332a565b91505092915050565b5f5f5f606084860312156133805761337f613135565b5b5f61338d868287016131d4565b935050602061339e868287016131d4565b92505060406133af8682870161314f565b9150509250925092565b5f60ff82169050919050565b6133ce816133b9565b82525050565b5f6020820190506133e75f8301846133c5565b92915050565b5f5f6040838503121561340357613402613135565b5b5f6134108582860161314f565b92505060206134218582860161314f565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61345d816131ad565b82525050565b5f61346e8383613454565b60208301905092915050565b5f602082019050919050565b5f6134908261342b565b61349a8185613435565b93506134a583613445565b805f5b838110156134d55781516134bc8882613463565b97506134c78361347a565b9250506001810190506134a8565b5085935050505092915050565b5f6040820190506134f55f83018561310d565b81810360208301526135078184613486565b90509392505050565b5f5f6040838503121561352657613525613135565b5b5f613533858286016131d4565b92505060206135448582860161332a565b9150509250929050565b613557816131ad565b82525050565b5f6020820190506135705f83018461354e565b92915050565b5f5f5f5f6080858703121561358e5761358d613135565b5b5f61359b8782880161332a565b94505060206135ac878288016131d4565b93505060406135bd8782880161314f565b92505060606135ce8782880161314f565b91505092959194509250565b5f5f5f606084860312156135f1576135f0613135565b5b5f6135fe868287016131d4565b935050602061360f8682870161314f565b92505060406136208682870161314f565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f61366d82613213565b6136778185613653565b935061368781856020860161322d565b6136908161323b565b840191505092915050565b5f6136a68383613663565b905092915050565b5f602082019050919050565b5f6136c48261362a565b6136ce8185613634565b9350836020820285016136e085613644565b805f5b8581101561371b57848403895281516136fc858261369b565b9450613707836136ae565b925060208a019950506001810190506136e3565b50829750879550505050505092915050565b5f6040820190506137405f83018561310d565b818103602083015261375281846136ba565b90509392505050565b5f5f6040838503121561377157613770613135565b5b5f61377e8582860161314f565b925050602061378f858286016131d4565b9150509250929050565b5f5f604083850312156137af576137ae613135565b5b5f6137bc858286016131d4565b92505060206137cd858286016131d4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61380b60208361321d565b9150613816826137d7565b602082019050919050565b5f6020820190508181035f830152613838816137ff565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061388357607f821691505b6020821081036138965761389561383f565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6138f660288361321d565b91506139018261389c565b604082019050919050565b5f6020820190508181035f830152613923816138ea565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61398e82613104565b915061399983613104565b92508282019050808211156139b1576139b0613957565b5b92915050565b5f6139c182613104565b91506139cc83613104565b92508282039050818111156139e4576139e3613957565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f613a2182613104565b9150613a2c83613104565b9250828202613a3a81613104565b91508282048414831517613a5157613a50613957565b5b5092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613ab260258361321d565b9150613abd82613a58565b604082019050919050565b5f6020820190508181035f830152613adf81613aa6565b9050919050565b7f696e636f727265637420696e64657800000000000000000000000000000000005f82015250565b5f613b1a600f8361321d565b9150613b2582613ae6565b602082019050919050565b5f6020820190508181035f830152613b4781613b0e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613ba860268361321d565b9150613bb382613b4e565b604082019050919050565b5f6020820190508181035f830152613bd581613b9c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613c3660248361321d565b9150613c4182613bdc565b604082019050919050565b5f6020820190508181035f830152613c6381613c2a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613cc460228361321d565b9150613ccf82613c6a565b604082019050919050565b5f6020820190508181035f830152613cf181613cb8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613d5260258361321d565b9150613d5d82613cf8565b604082019050919050565b5f6020820190508181035f830152613d7f81613d46565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613de060238361321d565b9150613deb82613d86565b604082019050919050565b5f6020820190508181035f830152613e0d81613dd4565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613e6e60268361321d565b9150613e7982613e14565b604082019050919050565b5f6020820190508181035f830152613e9b81613e62565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f613efc60218361321d565b9150613f0782613ea2565b604082019050919050565b5f6020820190508181035f830152613f2981613ef0565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f8a60228361321d565b9150613f9582613f30565b604082019050919050565b5f6020820190508181035f830152613fb781613f7e565b9050919050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f613ff2600b8361321d565b9150613ffd82613fbe565b602082019050919050565b5f6020820190508181035f83015261401f81613fe6565b9050919050565b7f74726164696e67206973206e6f742073746172746564000000000000000000005f82015250565b5f61405a60168361321d565b915061406582614026565b602082019050919050565b5f6020820190508181035f8301526140878161404e565b9050919050565b7f466f7262696400000000000000000000000000000000000000000000000000005f82015250565b5f6140c260068361321d565b91506140cd8261408e565b602082019050919050565b5f6020820190508181035f8301526140ef816140b6565b905091905056fea2646970667358221220f93ce1b2ff4149214a8d29b42ce2ad16cf461a18a9208cdb2e65a9cc8ff53feb64736f6c634300081b003300000000000000000000000000000000000000000000021e19e0c9bab2400000

Deployed Bytecode

0x608060405234801561000f575f5ffd5b50600436106103c3575f3560e01c8063750e8d10116101fd578063af504def11610118578063be045245116100ab578063e9f4852c1161007a578063e9f4852c14610b51578063eac6abf914610b6d578063f2fde38b14610b89578063fcccebce14610ba5576103c3565b8063be04524514610ab6578063d5a4260614610ad2578063dd62ed3e14610b03578063dde415fa14610b33576103c3565b8063b43fd680116100e7578063b43fd68014610a32578063b4f243a414610a4e578063b68449a514610a7e578063b97830d914610a9a576103c3565b8063af504def146109be578063b249796d146109dc578063b42dfa0d146109f8578063b4377a3e14610a16576103c3565b80638da5cb5b116101905780639b0b37901161015f5780639b0b379014610926578063a457c2d714610942578063a9059cbb14610972578063ad3f593f146109a2576103c3565b80638da5cb5b1461089b5780638fdada4a146108b957806395d89b41146108d757806398bafaa3146108f5576103c3565b8063860a32ec116101cc578063860a32ec146108275780638947ec541461084557806389f9a1d3146108615780638cb01fea1461087f576103c3565b8063750e8d10146107b457806375b4d63d146107e55780637e5f173b1461080157806384da23251461081d576103c3565b80632d12d34b116102ed57806349bd5a5e116102805780635821927f1161024f5780635821927f1461074257806370a082311461075e578063715018a61461078e57806373397eaf14610798576103c3565b806349bd5a5e146106d05780634fbdf0b9146106ee57806352fdaf981461070a57806353c8157914610726576103c3565b8063404e5129116102bc578063404e51291461066057806342966c681461067c57806345de4e5f1461069857806349842090146106b4576103c3565b80632d12d34b146105c3578063313ce567146105e15780633860a393146105ff5780633950935114610630576103c3565b806312686006116103655780632273139611610334578063227313961461053f578063236f80841461055b57806323b872dd1461057757806328d35d5a146105a7576103c3565b806312686006146104b757806316c02129146104d357806318160ddd146105035780631ab99e1214610521576103c3565b806306fdde03116103a157806306fdde0314610431578063095ea7b31461044f5780630b97e1d51461047f57806310d7f1bc1461049b576103c3565b8063018a3741146103c75780630464995d146103e55780630568e65e14610401575b5f5ffd5b6103cf610bc1565b6040516103dc919061311c565b60405180910390f35b6103ff60048036038101906103fa9190613163565b610bc7565b005b61041b600480360381019061041691906131e8565b610c4d565b604051610428919061311c565b60405180910390f35b610439610c62565b6040516104469190613283565b60405180910390f35b610469600480360381019061046491906132a3565b610cf2565b60405161047691906132fb565b60405180910390f35b61049960048036038101906104949190613163565b610d0f565b005b6104b560048036038101906104b09190613163565b610d95565b005b6104d160048036038101906104cc9190613163565b610e1b565b005b6104ed60048036038101906104e891906131e8565b610ea1565b6040516104fa91906132fb565b60405180910390f35b61050b610ebe565b604051610518919061311c565b60405180910390f35b610529610ec7565b604051610536919061311c565b60405180910390f35b6105596004803603810190610554919061333e565b610ecd565b005b61057560048036038101906105709190613163565b610f65565b005b610591600480360381019061058c9190613369565b610feb565b60405161059e91906132fb565b60405180910390f35b6105c160048036038101906105bc9190613163565b6110dd565b005b6105cb6110e7565b6040516105d8919061311c565b60405180910390f35b6105e96110ec565b6040516105f691906133d4565b60405180910390f35b610619600480360381019061061491906133ed565b6110f4565b6040516106279291906134e2565b60405180910390f35b61064a600480360381019061064591906132a3565b611276565b60405161065791906132fb565b60405180910390f35b61067a60048036038101906106759190613510565b61131d565b005b61069660048036038101906106919190613163565b6113f1565b005b6106b260048036038101906106ad9190613163565b6113fe565b005b6106ce60048036038101906106c99190613163565b611484565b005b6106d861150a565b6040516106e5919061355d565b60405180910390f35b61070860048036038101906107039190613163565b61152f565b005b610724600480360381019061071f9190613163565b6115b5565b005b610740600480360381019061073b9190613576565b61163b565b005b61075c60048036038101906107579190613163565b611724565b005b610778600480360381019061077391906131e8565b6117aa565b604051610785919061311c565b60405180910390f35b6107966117f0565b005b6107b260048036038101906107ad9190613163565b611877565b005b6107ce60048036038101906107c991906135da565b6118fd565b6040516107dc92919061372d565b60405180910390f35b6107ff60048036038101906107fa9190613163565b61198d565b005b61081b60048036038101906108169190613163565b611a13565b005b610825611a99565b005b61082f611b2c565b60405161083c91906132fb565b60405180910390f35b61085f600480360381019061085a9190613163565b611b3e565b005b610869611bc4565b604051610876919061311c565b60405180910390f35b61089960048036038101906108949190613163565b611bca565b005b6108a3611c50565b6040516108b0919061355d565b60405180910390f35b6108c1611c77565b6040516108ce919061311c565b60405180910390f35b6108df611c7d565b6040516108ec9190613283565b60405180910390f35b61090f600480360381019061090a91906135da565b611d0d565b60405161091d92919061372d565b60405180910390f35b610940600480360381019061093b9190613163565b611d9d565b005b61095c600480360381019061095791906132a3565b611e23565b60405161096991906132fb565b60405180910390f35b61098c600480360381019061098791906132a3565b611f09565b60405161099991906132fb565b60405180910390f35b6109bc60048036038101906109b79190613163565b611f26565b005b6109c6611fac565b6040516109d3919061311c565b60405180910390f35b6109f660048036038101906109f19190613163565b611fb2565b005b610a00612038565b604051610a0d919061311c565b60405180910390f35b610a306004803603810190610a2b919061375b565b61203e565b005b610a4c6004803603810190610a479190613163565b6120cc565b005b610a686004803603810190610a6391906132a3565b612152565b604051610a759190613283565b60405180910390f35b610a986004803603810190610a939190613163565b61215a565b005b610ab46004803603810190610aaf9190613163565b6121e0565b005b610ad06004803603810190610acb9190613163565b612266565b005b610aec6004803603810190610ae791906135da565b6122ec565b604051610afa92919061372d565b60405180910390f35b610b1d6004803603810190610b189190613799565b612432565b604051610b2a919061311c565b60405180910390f35b610b3b6124b4565b604051610b48919061311c565b60405180910390f35b610b6b6004803603810190610b669190613163565b6124ba565b005b610b876004803603810190610b829190613163565b612540565b005b610ba36004803603810190610b9e91906131e8565b6125c6565b005b610bbf6004803603810190610bba9190613163565b6126bc565b005b600d5481565b610bcf612742565b73ffffffffffffffffffffffffffffffffffffffff16610bed611c50565b73ffffffffffffffffffffffffffffffffffffffff1614610c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3a90613821565b60405180910390fd5b8060208190555050565b600f602052805f5260405f205f915090505481565b606060048054610c719061386c565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9d9061386c565b8015610ce85780601f10610cbf57610100808354040283529160200191610ce8565b820191905f5260205f20905b815481529060010190602001808311610ccb57829003601f168201915b5050505050905090565b5f610d05610cfe612742565b8484612749565b6001905092915050565b610d17612742565b73ffffffffffffffffffffffffffffffffffffffff16610d35611c50565b73ffffffffffffffffffffffffffffffffffffffff1614610d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8290613821565b60405180910390fd5b8060138190555050565b610d9d612742565b73ffffffffffffffffffffffffffffffffffffffff16610dbb611c50565b73ffffffffffffffffffffffffffffffffffffffff1614610e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0890613821565b60405180910390fd5b8060258190555050565b610e23612742565b73ffffffffffffffffffffffffffffffffffffffff16610e41611c50565b73ffffffffffffffffffffffffffffffffffffffff1614610e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8e90613821565b60405180910390fd5b8060128190555050565b600a602052805f5260405f205f915054906101000a900460ff1681565b5f600354905090565b60085481565b610ed5612742565b73ffffffffffffffffffffffffffffffffffffffff16610ef3611c50565b73ffffffffffffffffffffffffffffffffffffffff1614610f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4090613821565b60405180910390fd5b8060065f6101000a81548160ff02191690831515021790555050565b610f6d612742565b73ffffffffffffffffffffffffffffffffffffffff16610f8b611c50565b73ffffffffffffffffffffffffffffffffffffffff1614610fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd890613821565b60405180910390fd5b8060178190555050565b5f610ff784848461290c565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61103e612742565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156110bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b49061390c565b60405180910390fd5b6110d1856110c9612742565b858403612749565b60019150509392505050565b8060298190555050565b600181565b5f6012905090565b5f6060600d548410611153575f5f67ffffffffffffffff81111561111b5761111a61392a565b5b6040519080825280602002602001820160405280156111495781602001602082028036833780820191505090505b509150915061126f565b5f83856111609190613984565b9050600d5481111561117257600d5490505b848161117e91906139b7565b92508267ffffffffffffffff81111561119a5761119961392a565b5b6040519080825280602002602001820160405280156111c85781602001602082028036833780820191505090505b5091505f8590505b8381101561126c57600b5f82886111e79190613984565b81526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838281518110611227576112266139ea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508060010190506111d0565b50505b9250929050565b5f611313611282612742565b848460025f61128f612742565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461130e9190613984565b612749565b6001905092915050565b611325612742565b73ffffffffffffffffffffffffffffffffffffffff16611343611c50565b73ffffffffffffffffffffffffffffffffffffffff1614611399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139090613821565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6113fb3382612b84565b50565b611406612742565b73ffffffffffffffffffffffffffffffffffffffff16611424611c50565b73ffffffffffffffffffffffffffffffffffffffff161461147a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147190613821565b60405180910390fd5b8060228190555050565b61148c612742565b73ffffffffffffffffffffffffffffffffffffffff166114aa611c50565b73ffffffffffffffffffffffffffffffffffffffff1614611500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f790613821565b60405180910390fd5b80601f8190555050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611537612742565b73ffffffffffffffffffffffffffffffffffffffff16611555611c50565b73ffffffffffffffffffffffffffffffffffffffff16146115ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a290613821565b60405180910390fd5b80602b8190555050565b6115bd612742565b73ffffffffffffffffffffffffffffffffffffffff166115db611c50565b73ffffffffffffffffffffffffffffffffffffffff1614611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890613821565b60405180910390fd5b8060188190555050565b611643612742565b73ffffffffffffffffffffffffffffffffffffffff16611661611c50565b73ffffffffffffffffffffffffffffffffffffffff16146116b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ae90613821565b60405180910390fd5b8360065f6101000a81548160ff0219169083151502179055508260095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550816007819055508060088190555050505050565b61172c612742565b73ffffffffffffffffffffffffffffffffffffffff1661174a611c50565b73ffffffffffffffffffffffffffffffffffffffff16146117a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179790613821565b60405180910390fd5b8060288190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6117f8612742565b73ffffffffffffffffffffffffffffffffffffffff16611816611c50565b73ffffffffffffffffffffffffffffffffffffffff161461186c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186390613821565b60405180910390fd5b6118755f612d52565b565b61187f612742565b73ffffffffffffffffffffffffffffffffffffffff1661189d611c50565b73ffffffffffffffffffffffffffffffffffffffff16146118f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ea90613821565b60405180910390fd5b8060268190555050565b5f60605f600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f848661194e9190613984565b90508181111561195c578190505b858161196891906139b7565b93505f5f90505b848110156119825780600101905061196f565b505050935093915050565b611995612742565b73ffffffffffffffffffffffffffffffffffffffff166119b3611c50565b73ffffffffffffffffffffffffffffffffffffffff1614611a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0090613821565b60405180910390fd5b8060198190555050565b611a1b612742565b73ffffffffffffffffffffffffffffffffffffffff16611a39611c50565b73ffffffffffffffffffffffffffffffffffffffff1614611a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8690613821565b60405180910390fd5b80601c8190555050565b611aa1612742565b73ffffffffffffffffffffffffffffffffffffffff16611abf611c50565b73ffffffffffffffffffffffffffffffffffffffff1614611b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0c90613821565b60405180910390fd5b6002600754611b249190613a17565b600781905550565b60065f9054906101000a900460ff1681565b611b46612742565b73ffffffffffffffffffffffffffffffffffffffff16611b64611c50565b73ffffffffffffffffffffffffffffffffffffffff1614611bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb190613821565b60405180910390fd5b80601d8190555050565b60075481565b611bd2612742565b73ffffffffffffffffffffffffffffffffffffffff16611bf0611c50565b73ffffffffffffffffffffffffffffffffffffffff1614611c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3d90613821565b60405180910390fd5b80601a8190555050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6103e881565b606060058054611c8c9061386c565b80601f0160208091040260200160405190810160405280929190818152602001828054611cb89061386c565b8015611d035780601f10611cda57610100808354040283529160200191611d03565b820191905f5260205f20905b815481529060010190602001808311611ce657829003601f168201915b5050505050905090565b5f60605f600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8486611d5e9190613984565b905081811115611d6c578190505b8581611d7891906139b7565b93505f5f90505b84811015611d9257806001019050611d7f565b505050935093915050565b611da5612742565b73ffffffffffffffffffffffffffffffffffffffff16611dc3611c50565b73ffffffffffffffffffffffffffffffffffffffff1614611e19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1090613821565b60405180910390fd5b8060158190555050565b5f5f60025f611e30612742565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee190613ac8565b60405180910390fd5b611efe611ef5612742565b85858403612749565b600191505092915050565b5f611f1c611f15612742565b848461290c565b6001905092915050565b611f2e612742565b73ffffffffffffffffffffffffffffffffffffffff16611f4c611c50565b73ffffffffffffffffffffffffffffffffffffffff1614611fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9990613821565b60405180910390fd5b80601e8190555050565b60105481565b611fba612742565b73ffffffffffffffffffffffffffffffffffffffff16611fd8611c50565b73ffffffffffffffffffffffffffffffffffffffff161461202e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202590613821565b60405180910390fd5b8060148190555050565b600e5481565b600f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482106120bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b490613b30565b60405180910390fd5b6120c8338383612e13565b5050565b6120d4612742565b73ffffffffffffffffffffffffffffffffffffffff166120f2611c50565b73ffffffffffffffffffffffffffffffffffffffff1614612148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213f90613821565b60405180910390fd5b8060168190555050565b606092915050565b612162612742565b73ffffffffffffffffffffffffffffffffffffffff16612180611c50565b73ffffffffffffffffffffffffffffffffffffffff16146121d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cd90613821565b60405180910390fd5b80601b8190555050565b6121e8612742565b73ffffffffffffffffffffffffffffffffffffffff16612206611c50565b73ffffffffffffffffffffffffffffffffffffffff161461225c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225390613821565b60405180910390fd5b8060238190555050565b61226e612742565b73ffffffffffffffffffffffffffffffffffffffff1661228c611c50565b73ffffffffffffffffffffffffffffffffffffffff16146122e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d990613821565b60405180910390fd5b8060218190555050565b5f60605f600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050808510612390575f5f67ffffffffffffffff8111156123525761235161392a565b5b60405190808252806020026020018201604052801561238557816020015b60608152602001906001900390816123705790505b50925092505061242a565b5f848661239d9190613984565b9050818111156123b95781905080866123b691906139b7565b93505b8367ffffffffffffffff8111156123d3576123d261392a565b5b60405190808252806020026020018201604052801561240657816020015b60608152602001906001900390816123f15790505b5092505f5f5f90508791505b8282101561242557816001019150612412565b505050505b935093915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6103e881565b6124c2612742565b73ffffffffffffffffffffffffffffffffffffffff166124e0611c50565b73ffffffffffffffffffffffffffffffffffffffff1614612536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252d90613821565b60405180910390fd5b8060278190555050565b612548612742565b73ffffffffffffffffffffffffffffffffffffffff16612566611c50565b73ffffffffffffffffffffffffffffffffffffffff16146125bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b390613821565b60405180910390fd5b80602a8190555050565b6125ce612742565b73ffffffffffffffffffffffffffffffffffffffff166125ec611c50565b73ffffffffffffffffffffffffffffffffffffffff1614612642576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263990613821565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036126b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a790613bbe565b60405180910390fd5b6126b981612d52565b50565b6126c4612742565b73ffffffffffffffffffffffffffffffffffffffff166126e2611c50565b73ffffffffffffffffffffffffffffffffffffffff1614612738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272f90613821565b60405180910390fd5b8060248190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ae90613c4c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281c90613cda565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128ff919061311c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361297a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297190613d68565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129df90613df6565b60405180910390fd5b6129f3838383612e2b565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6e90613e84565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612b079190613984565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b6b919061311c565b60405180910390a3612b7e8484846130ff565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612bf2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be990613f12565b60405180910390fd5b612bfd825f83612e2b565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7890613fa0565b60405180910390fd5b81810360015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f828254612cd691906139b7565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612d3a919061311c565b60405180910390a3612d4d835f846130ff565b505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60405180602001604052805f815250905050505050565b600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612ec95750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eff90614008565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361301357612f64611c50565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612fcf5750612fa0611c50565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b61300e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300590614070565b60405180910390fd5b6130fa565b60065f9054906101000a900460ff16801561307a575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156130f9576007548161308c846117aa565b6130969190613984565b111580156130b95750600854816130ac846117aa565b6130b69190613984565b10155b6130f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ef906140d8565b60405180910390fd5b5b5b505050565b505050565b5f819050919050565b61311681613104565b82525050565b5f60208201905061312f5f83018461310d565b92915050565b5f5ffd5b61314281613104565b811461314c575f5ffd5b50565b5f8135905061315d81613139565b92915050565b5f6020828403121561317857613177613135565b5b5f6131858482850161314f565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6131b78261318e565b9050919050565b6131c7816131ad565b81146131d1575f5ffd5b50565b5f813590506131e2816131be565b92915050565b5f602082840312156131fd576131fc613135565b5b5f61320a848285016131d4565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61325582613213565b61325f818561321d565b935061326f81856020860161322d565b6132788161323b565b840191505092915050565b5f6020820190508181035f83015261329b818461324b565b905092915050565b5f5f604083850312156132b9576132b8613135565b5b5f6132c6858286016131d4565b92505060206132d78582860161314f565b9150509250929050565b5f8115159050919050565b6132f5816132e1565b82525050565b5f60208201905061330e5f8301846132ec565b92915050565b61331d816132e1565b8114613327575f5ffd5b50565b5f8135905061333881613314565b92915050565b5f6020828403121561335357613352613135565b5b5f6133608482850161332a565b91505092915050565b5f5f5f606084860312156133805761337f613135565b5b5f61338d868287016131d4565b935050602061339e868287016131d4565b92505060406133af8682870161314f565b9150509250925092565b5f60ff82169050919050565b6133ce816133b9565b82525050565b5f6020820190506133e75f8301846133c5565b92915050565b5f5f6040838503121561340357613402613135565b5b5f6134108582860161314f565b92505060206134218582860161314f565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61345d816131ad565b82525050565b5f61346e8383613454565b60208301905092915050565b5f602082019050919050565b5f6134908261342b565b61349a8185613435565b93506134a583613445565b805f5b838110156134d55781516134bc8882613463565b97506134c78361347a565b9250506001810190506134a8565b5085935050505092915050565b5f6040820190506134f55f83018561310d565b81810360208301526135078184613486565b90509392505050565b5f5f6040838503121561352657613525613135565b5b5f613533858286016131d4565b92505060206135448582860161332a565b9150509250929050565b613557816131ad565b82525050565b5f6020820190506135705f83018461354e565b92915050565b5f5f5f5f6080858703121561358e5761358d613135565b5b5f61359b8782880161332a565b94505060206135ac878288016131d4565b93505060406135bd8782880161314f565b92505060606135ce8782880161314f565b91505092959194509250565b5f5f5f606084860312156135f1576135f0613135565b5b5f6135fe868287016131d4565b935050602061360f8682870161314f565b92505060406136208682870161314f565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f61366d82613213565b6136778185613653565b935061368781856020860161322d565b6136908161323b565b840191505092915050565b5f6136a68383613663565b905092915050565b5f602082019050919050565b5f6136c48261362a565b6136ce8185613634565b9350836020820285016136e085613644565b805f5b8581101561371b57848403895281516136fc858261369b565b9450613707836136ae565b925060208a019950506001810190506136e3565b50829750879550505050505092915050565b5f6040820190506137405f83018561310d565b818103602083015261375281846136ba565b90509392505050565b5f5f6040838503121561377157613770613135565b5b5f61377e8582860161314f565b925050602061378f858286016131d4565b9150509250929050565b5f5f604083850312156137af576137ae613135565b5b5f6137bc858286016131d4565b92505060206137cd858286016131d4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61380b60208361321d565b9150613816826137d7565b602082019050919050565b5f6020820190508181035f830152613838816137ff565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061388357607f821691505b6020821081036138965761389561383f565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6138f660288361321d565b91506139018261389c565b604082019050919050565b5f6020820190508181035f830152613923816138ea565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61398e82613104565b915061399983613104565b92508282019050808211156139b1576139b0613957565b5b92915050565b5f6139c182613104565b91506139cc83613104565b92508282039050818111156139e4576139e3613957565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f613a2182613104565b9150613a2c83613104565b9250828202613a3a81613104565b91508282048414831517613a5157613a50613957565b5b5092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613ab260258361321d565b9150613abd82613a58565b604082019050919050565b5f6020820190508181035f830152613adf81613aa6565b9050919050565b7f696e636f727265637420696e64657800000000000000000000000000000000005f82015250565b5f613b1a600f8361321d565b9150613b2582613ae6565b602082019050919050565b5f6020820190508181035f830152613b4781613b0e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613ba860268361321d565b9150613bb382613b4e565b604082019050919050565b5f6020820190508181035f830152613bd581613b9c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613c3660248361321d565b9150613c4182613bdc565b604082019050919050565b5f6020820190508181035f830152613c6381613c2a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613cc460228361321d565b9150613ccf82613c6a565b604082019050919050565b5f6020820190508181035f830152613cf181613cb8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613d5260258361321d565b9150613d5d82613cf8565b604082019050919050565b5f6020820190508181035f830152613d7f81613d46565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613de060238361321d565b9150613deb82613d86565b604082019050919050565b5f6020820190508181035f830152613e0d81613dd4565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613e6e60268361321d565b9150613e7982613e14565b604082019050919050565b5f6020820190508181035f830152613e9b81613e62565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f613efc60218361321d565b9150613f0782613ea2565b604082019050919050565b5f6020820190508181035f830152613f2981613ef0565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f8a60228361321d565b9150613f9582613f30565b604082019050919050565b5f6020820190508181035f830152613fb781613f7e565b9050919050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f613ff2600b8361321d565b9150613ffd82613fbe565b602082019050919050565b5f6020820190508181035f83015261401f81613fe6565b9050919050565b7f74726164696e67206973206e6f742073746172746564000000000000000000005f82015250565b5f61405a60168361321d565b915061406582614026565b602082019050919050565b5f6020820190508181035f8301526140878161404e565b9050919050565b7f466f7262696400000000000000000000000000000000000000000000000000005f82015250565b5f6140c260068361321d565b91506140cd8261408e565b602082019050919050565b5f6020820190508181035f8301526140ef816140b6565b905091905056fea2646970667358221220f93ce1b2ff4149214a8d29b42ce2ad16cf461a18a9208cdb2e65a9cc8ff53feb64736f6c634300081b0033

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

00000000000000000000000000000000000000000000021e19e0c9bab2400000

-----Decoded View---------------
Arg [0] : _totalSupply (uint256): 10000000000000000000000

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000021e19e0c9bab2400000


Deployed Bytecode Sourcemap

19455:11420:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21231:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29610:106;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22702:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9424:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11591:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28174:82;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30137:102;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28036:130;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19633:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10544:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19560:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20047:85;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28640:94;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12242:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30549:121;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22528:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10386:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21265:543;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;13143:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19797:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21029:81;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29854:79;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29520:82;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19598:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30764:102;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28742:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20140:306;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30435:106;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10715:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2825:103;;;:::i;:::-;;30247:74;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26395:470;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;28868:94;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29198:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19940:99;;;:::i;:::-;;19496:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29324:78;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19522:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28970:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2174:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22567:45;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9643:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25921:466;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;28379:111;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13861:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11055:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29410:102;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22753:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28264:107;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22619:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23008:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28498:134;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25776:137;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29096:94;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29941:102;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29724:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26873:590;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;11293:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22658:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30329:98;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30678:78;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3083:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30051:78;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21231:25;;;;:::o;29610:106::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29696:12:::1;29682:11;:26;;;;29610:106:::0;:::o;22702:44::-;;;;;;;;;;;;;;;;;:::o;9424:100::-;9478:13;9511:5;9504:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9424:100;:::o;11591:169::-;11674:4;11691:39;11700:12;:10;:12::i;:::-;11714:7;11723:6;11691:8;:39::i;:::-;11748:4;11741:11;;11591:169;;;;:::o;28174:82::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28243:5:::1;28236:4;:12;;;;28174:82:::0;:::o;30137:102::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30220:11:::1;30207:10;:24;;;;30137:102:::0;:::o;28036:130::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28141:17:::1;28122:16;:36;;;;28036:130:::0;:::o;19633:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;10544:108::-;10605:7;10632:12;;10625:19;;10544:108;:::o;19560:31::-;;;;:::o;20047:85::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20119:5:::1;20109:7;;:15;;;;;;;;;;;;;;;;;;20047:85:::0;:::o;28640:94::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28718:8:::1;28708:7;:18;;;;28640:94:::0;:::o;12242:492::-;12382:4;12399:36;12409:6;12417:9;12428:6;12399:9;:36::i;:::-;12448:24;12475:11;:19;12487:6;12475:19;;;;;;;;;;;;;;;:33;12495:12;:10;:12::i;:::-;12475:33;;;;;;;;;;;;;;;;12448:60;;12547:6;12527:16;:26;;12519:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12634:57;12643:6;12651:12;:10;:12::i;:::-;12684:6;12665:16;:25;12634:8;:57::i;:::-;12722:4;12715:11;;;12242:492;;;;;:::o;30549:121::-;30644:18;30624:17;:38;;;;30549:121;:::o;22528:32::-;22559:1;22528:32;:::o;10386:93::-;10444:5;10469:2;10462:9;;10386:93;:::o;21265:543::-;21363:15;21380:25;21431:13;;21422:5;:22;21418:56;;21454:1;21471;21457:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21446:28;;;;;;21418:56;21487:8;21506:5;21498;:13;;;;:::i;:::-;21487:24;;21532:13;;21526:3;:19;21522:71;;;21568:13;;21562:19;;21522:71;21622:5;21616:3;:11;;;;:::i;:::-;21603:24;;21665:10;21651:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21640:36;;21687:6;21713:5;21709:9;;21704:97;21724:10;21720:1;:14;21704:97;;;21770:8;:19;21787:1;21779:5;:9;;;;:::i;:::-;21770:19;;;;;;;;;;;;;;;;;;;;;21756:8;21765:1;21756:11;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;21736:3;;;;;21704:97;;;21407:401;;21265:543;;;;;;:::o;13143:215::-;13231:4;13248:80;13257:12;:10;:12::i;:::-;13271:7;13317:10;13280:11;:25;13292:12;:10;:12::i;:::-;13280:25;;;;;;;;;;;;;;;:34;13306:7;13280:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;13248:8;:80::i;:::-;13346:4;13339:11;;13143:215;;;;:::o;19797:135::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19909:15:::1;19886:10;:20;19897:8;19886:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;19797:135:::0;;:::o;21029:81::-;21078:24;21084:10;21096:5;21078;:24::i;:::-;21029:81;:::o;29854:79::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29920:5:::1;29913:4;:12;;;;29854:79:::0;:::o;29520:82::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29588:6:::1;29580:5;:14;;;;29520:82:::0;:::o;19598:28::-;;;;;;;;;;;;;:::o;30764:102::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30847:11:::1;30834:10;:24;;;;30764:102:::0;:::o;28742:118::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28838:14:::1;28822:13;:30;;;;28742:118:::0;:::o;20140:306::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20295:8:::1;20285:7;;:18;;;;;;;;;;;;;;;;;;20330:14;20314:13;;:30;;;;;;;;;;;;;;;;;;20374:17;20355:16;:36;;;;20421:17;20402:16;:36;;;;20140:306:::0;;;;:::o;30435:106::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30521:12:::1;30507:11;:26;;;;30435:106:::0;:::o;10715:127::-;10789:7;10816:9;:18;10826:7;10816:18;;;;;;;;;;;;;;;;10809:25;;10715:127;;;:::o;2825:103::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2890:30:::1;2917:1;2890:18;:30::i;:::-;2825:103::o:0;30247:74::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30309:4:::1;30303:3;:10;;;;30247:74:::0;:::o;26395:470::-;26520:15;26537:24;26574:18;26595:6;:15;26602:7;26595:15;;;;;;;;;;;;;;;;26574:36;;26628:8;26647:5;26639;:13;;;;:::i;:::-;26628:24;;26673:13;26667:3;:19;26663:71;;;26709:13;26703:19;;26663:71;26763:5;26757:3;:11;;;;:::i;:::-;26744:24;;26789:6;26815:1;26811:5;;26806:52;26822:10;26818:1;:14;26806:52;;;26834:3;;;;;26806:52;;;26563:302;;;26395:470;;;;;;:::o;28868:94::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28946:8:::1;28936:7;:18;;;;28868:94:::0;:::o;29198:118::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29294:14:::1;29278:13;:30;;;;29198:118:::0;:::o;19940:99::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20030:1:::1;20011:16;;:20;;;;:::i;:::-;19992:16;:39;;;;19940:99::o:0;19496:19::-;;;;;;;;;;;;;:::o;29324:78::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29389:5:::1;29382:4;:12;;;;29324:78:::0;:::o;19522:31::-;;;;:::o;28970:118::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29066:14:::1;29050:13;:30;;;;28970:118:::0;:::o;2174:87::-;2220:7;2247:6;;;;;;;;;;;2240:13;;2174:87;:::o;22567:45::-;22517:4;22567:45;:::o;9643:104::-;9699:13;9732:7;9725:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9643:104;:::o;25921:466::-;26047:15;26064:24;26101:18;26122:6;:15;26129:7;26122:15;;;;;;;;;;;;;;;;26101:36;;26153:8;26172:5;26164;:13;;;;:::i;:::-;26153:24;;26198:13;26192:3;:19;26188:71;;;26234:13;26228:19;;26188:71;26288:5;26282:3;:11;;;;:::i;:::-;26269:24;;26312:6;26338:1;26334:5;;26329:51;26345:10;26341:1;:14;26329:51;;;26357:3;;;;;26329:51;;;26090:297;;;25921:466;;;;;;:::o;28379:111::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28470:12:::1;28456:11;:26;;;;28379:111:::0;:::o;13861:413::-;13954:4;13971:24;13998:11;:25;14010:12;:10;:12::i;:::-;13998:25;;;;;;;;;;;;;;;:34;14024:7;13998:34;;;;;;;;;;;;;;;;13971:61;;14071:15;14051:16;:35;;14043:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14164:67;14173:12;:10;:12::i;:::-;14187:7;14215:15;14196:16;:34;14164:8;:67::i;:::-;14262:4;14255:11;;;13861:413;;;;:::o;11055:175::-;11141:4;11158:42;11168:12;:10;:12::i;:::-;11182:9;11193:6;11158:9;:42::i;:::-;11218:4;11211:11;;11055:175;;;;:::o;29410:102::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29493:11:::1;29480:10;:24;;;;29410:102:::0;:::o;22753:29::-;;;;:::o;28264:107::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28352:11:::1;28339:10;:24;;;;28264:107:::0;:::o;22619:32::-;;;;:::o;23008:213::-;23109:6;:18;23116:10;23109:18;;;;;;;;;;;;;;;;23101:5;:26;23093:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;23158:55;23191:10;23203:5;23210:2;23158:32;:55::i;:::-;23008:213;;:::o;28498:134::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28606:18:::1;28586:17;:38;;;;28498:134:::0;:::o;25776:137::-;25880:13;25776:137;;;;:::o;29096:94::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29174:8:::1;29164:7;:18;;;;29096:94:::0;:::o;29941:102::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30024:11:::1;30011:10;:24;;;;29941:102:::0;:::o;29724:122::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29822:16:::1;29804:15;:34;;;;29724:122:::0;:::o;26873:590::-;26997:15;27014:24;27051:18;27072:6;:15;27079:7;27072:15;;;;;;;;;;;;;;;;27051:36;;27111:13;27102:5;:22;27098:55;;27134:1;27150;27137:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27126:27;;;;;;;27098:55;27166:8;27185:5;27177;:13;;;;:::i;:::-;27166:24;;27211:13;27205:3;:19;27201:110;;;27247:13;27241:19;;27296:3;27288:5;:11;;;;:::i;:::-;27275:24;;27201:110;27347:10;27334:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27323:35;;27369:6;27386;27395:1;27386:10;;27416:5;27412:9;;27407:49;27427:3;27423:1;:7;27407:49;;;27432:3;;;;;27407:49;;;27040:423;;;;26873:590;;;;;;;:::o;11293:151::-;11382:7;11409:11;:18;11421:5;11409:18;;;;;;;;;;;;;;;:27;11428:7;11409:27;;;;;;;;;;;;;;;;11402:34;;11293:151;;;;:::o;22658:37::-;22691:4;22658:37;:::o;30329:98::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30409:10:::1;30397:9;:22;;;;30329:98:::0;:::o;30678:78::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30743:5:::1;30736:4;:12;;;;30678:78:::0;:::o;3083:201::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3192:1:::1;3172:22;;:8;:22;;::::0;3164:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3248:28;3267:8;3248:18;:28::i;:::-;3083:201:::0;:::o;30051:78::-;2405:12;:10;:12::i;:::-;2394:23;;:7;:5;:7::i;:::-;:23;;;2386:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30116:5:::1;30109:4;:12;;;;30051:78:::0;:::o;892:98::-;945:7;972:10;965:17;;892:98;:::o;17545:380::-;17698:1;17681:19;;:5;:19;;;17673:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17779:1;17760:21;;:7;:21;;;17752:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17863:6;17833:11;:18;17845:5;17833:18;;;;;;;;;;;;;;;:27;17852:7;17833:27;;;;;;;;;;;;;;;:36;;;;17901:7;17885:32;;17894:5;17885:32;;;17910:6;17885:32;;;;;;:::i;:::-;;;;;;;;17545:380;;;:::o;14764:733::-;14922:1;14904:20;;:6;:20;;;14896:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;15006:1;14985:23;;:9;:23;;;14977:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15061:47;15082:6;15090:9;15101:6;15061:20;:47::i;:::-;15121:21;15145:9;:17;15155:6;15145:17;;;;;;;;;;;;;;;;15121:41;;15198:6;15181:13;:23;;15173:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15319:6;15303:13;:22;15283:9;:17;15293:6;15283:17;;;;;;;;;;;;;;;:42;;;;15371:6;15347:9;:20;15357:9;15347:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;15412:9;15395:35;;15404:6;15395:35;;;15423:6;15395:35;;;;;;:::i;:::-;;;;;;;;15443:46;15463:6;15471:9;15482:6;15443:19;:46::i;:::-;14885:612;14764:733;;;:::o;16516:591::-;16619:1;16600:21;;:7;:21;;;16592:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16672:49;16693:7;16710:1;16714:6;16672:20;:49::i;:::-;16734:22;16759:9;:18;16769:7;16759:18;;;;;;;;;;;;;;;;16734:43;;16814:6;16796:14;:24;;16788:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16933:6;16916:14;:23;16895:9;:18;16905:7;16895:18;;;;;;;;;;;;;;;:44;;;;16977:6;16961:12;;:22;;;;;;;:::i;:::-;;;;;;;;17027:1;17001:37;;17010:7;17001:37;;;17031:6;17001:37;;;;;;:::i;:::-;;;;;;;;17051:48;17071:7;17088:1;17092:6;17051:19;:48::i;:::-;16581:526;16516:591;;:::o;3444:191::-;3518:16;3537:6;;;;;;;;;;;3518:25;;3563:8;3554:6;;:17;;;;;;;;;;;;;;;;;;3618:8;3587:40;;3608:8;3587:40;;;;;;;;;;;;3507:128;3444:191;:::o;22822:178::-;22958:19;:24;;;;;;;;;;;;;;22947:53;22822:178;;;:::o;20454:567::-;20606:10;:14;20617:2;20606:14;;;;;;;;;;;;;;;;;;;;;;;;;20605:15;:36;;;;;20625:10;:16;20636:4;20625:16;;;;;;;;;;;;;;;;;;;;;;;;;20624:17;20605:36;20597:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20699:1;20674:27;;:13;;;;;;;;;;;:27;;;20670:148;;20734:7;:5;:7::i;:::-;20726:15;;:4;:15;;;:32;;;;20751:7;:5;:7::i;:::-;20745:13;;:2;:13;;;20726:32;20718:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20800:7;;20670:148;20834:7;;;;;;;;;;;:32;;;;;20853:13;;;;;;;;;;;20845:21;;:4;:21;;;20834:32;20830:184;;;20923:16;;20913:6;20891:19;20907:2;20891:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;:100;;;;;20975:16;;20965:6;20943:19;20959:2;20943:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;20891:100;20883:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;20830:184;20454:567;;;;:::o;19254:124::-;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;523:117::-;632:1;629;622:12;769:122;842:24;860:5;842:24;:::i;:::-;835:5;832:35;822:63;;881:1;878;871:12;822:63;769:122;:::o;897:139::-;943:5;981:6;968:20;959:29;;997:33;1024:5;997:33;:::i;:::-;897:139;;;;:::o;1042:329::-;1101:6;1150:2;1138:9;1129:7;1125:23;1121:32;1118:119;;;1156:79;;:::i;:::-;1118:119;1276:1;1301:53;1346:7;1337:6;1326:9;1322:22;1301:53;:::i;:::-;1291:63;;1247:117;1042:329;;;;:::o;1377:126::-;1414:7;1454:42;1447:5;1443:54;1432:65;;1377:126;;;:::o;1509:96::-;1546:7;1575:24;1593:5;1575:24;:::i;:::-;1564:35;;1509:96;;;:::o;1611:122::-;1684:24;1702:5;1684:24;:::i;:::-;1677:5;1674:35;1664:63;;1723:1;1720;1713:12;1664:63;1611:122;:::o;1739:139::-;1785:5;1823:6;1810:20;1801:29;;1839:33;1866:5;1839:33;:::i;:::-;1739:139;;;;:::o;1884:329::-;1943:6;1992:2;1980:9;1971:7;1967:23;1963:32;1960:119;;;1998:79;;:::i;:::-;1960:119;2118:1;2143:53;2188:7;2179:6;2168:9;2164:22;2143:53;:::i;:::-;2133:63;;2089:117;1884:329;;;;:::o;2219:99::-;2271:6;2305:5;2299:12;2289:22;;2219:99;;;:::o;2324:169::-;2408:11;2442:6;2437:3;2430:19;2482:4;2477:3;2473:14;2458:29;;2324:169;;;;:::o;2499:139::-;2588:6;2583:3;2578;2572:23;2629:1;2620:6;2615:3;2611:16;2604:27;2499:139;;;:::o;2644:102::-;2685:6;2736:2;2732:7;2727:2;2720:5;2716:14;2712:28;2702:38;;2644:102;;;:::o;2752:377::-;2840:3;2868:39;2901:5;2868:39;:::i;:::-;2923:71;2987:6;2982:3;2923:71;:::i;:::-;2916:78;;3003:65;3061:6;3056:3;3049:4;3042:5;3038:16;3003:65;:::i;:::-;3093:29;3115:6;3093:29;:::i;:::-;3088:3;3084:39;3077:46;;2844:285;2752:377;;;;:::o;3135:313::-;3248:4;3286:2;3275:9;3271:18;3263:26;;3335:9;3329:4;3325:20;3321:1;3310:9;3306:17;3299:47;3363:78;3436:4;3427:6;3363:78;:::i;:::-;3355:86;;3135:313;;;;:::o;3454:474::-;3522:6;3530;3579:2;3567:9;3558:7;3554:23;3550:32;3547:119;;;3585:79;;:::i;:::-;3547:119;3705:1;3730:53;3775:7;3766:6;3755:9;3751:22;3730:53;:::i;:::-;3720:63;;3676:117;3832:2;3858:53;3903:7;3894:6;3883:9;3879:22;3858:53;:::i;:::-;3848:63;;3803:118;3454:474;;;;;:::o;3934:90::-;3968:7;4011:5;4004:13;3997:21;3986:32;;3934:90;;;:::o;4030:109::-;4111:21;4126:5;4111:21;:::i;:::-;4106:3;4099:34;4030:109;;:::o;4145:210::-;4232:4;4270:2;4259:9;4255:18;4247:26;;4283:65;4345:1;4334:9;4330:17;4321:6;4283:65;:::i;:::-;4145:210;;;;:::o;4361:116::-;4431:21;4446:5;4431:21;:::i;:::-;4424:5;4421:32;4411:60;;4467:1;4464;4457:12;4411:60;4361:116;:::o;4483:133::-;4526:5;4564:6;4551:20;4542:29;;4580:30;4604:5;4580:30;:::i;:::-;4483:133;;;;:::o;4622:323::-;4678:6;4727:2;4715:9;4706:7;4702:23;4698:32;4695:119;;;4733:79;;:::i;:::-;4695:119;4853:1;4878:50;4920:7;4911:6;4900:9;4896:22;4878:50;:::i;:::-;4868:60;;4824:114;4622:323;;;;:::o;4951:619::-;5028:6;5036;5044;5093:2;5081:9;5072:7;5068:23;5064:32;5061:119;;;5099:79;;:::i;:::-;5061:119;5219:1;5244:53;5289:7;5280:6;5269:9;5265:22;5244:53;:::i;:::-;5234:63;;5190:117;5346:2;5372:53;5417:7;5408:6;5397:9;5393:22;5372:53;:::i;:::-;5362:63;;5317:118;5474:2;5500:53;5545:7;5536:6;5525:9;5521:22;5500:53;:::i;:::-;5490:63;;5445:118;4951:619;;;;;:::o;5576:86::-;5611:7;5651:4;5644:5;5640:16;5629:27;;5576:86;;;:::o;5668:112::-;5751:22;5767:5;5751:22;:::i;:::-;5746:3;5739:35;5668:112;;:::o;5786:214::-;5875:4;5913:2;5902:9;5898:18;5890:26;;5926:67;5990:1;5979:9;5975:17;5966:6;5926:67;:::i;:::-;5786:214;;;;:::o;6006:474::-;6074:6;6082;6131:2;6119:9;6110:7;6106:23;6102:32;6099:119;;;6137:79;;:::i;:::-;6099:119;6257:1;6282:53;6327:7;6318:6;6307:9;6303:22;6282:53;:::i;:::-;6272:63;;6228:117;6384:2;6410:53;6455:7;6446:6;6435:9;6431:22;6410:53;:::i;:::-;6400:63;;6355:118;6006:474;;;;;:::o;6486:114::-;6553:6;6587:5;6581:12;6571:22;;6486:114;;;:::o;6606:184::-;6705:11;6739:6;6734:3;6727:19;6779:4;6774:3;6770:14;6755:29;;6606:184;;;;:::o;6796:132::-;6863:4;6886:3;6878:11;;6916:4;6911:3;6907:14;6899:22;;6796:132;;;:::o;6934:108::-;7011:24;7029:5;7011:24;:::i;:::-;7006:3;6999:37;6934:108;;:::o;7048:179::-;7117:10;7138:46;7180:3;7172:6;7138:46;:::i;:::-;7216:4;7211:3;7207:14;7193:28;;7048:179;;;;:::o;7233:113::-;7303:4;7335;7330:3;7326:14;7318:22;;7233:113;;;:::o;7382:732::-;7501:3;7530:54;7578:5;7530:54;:::i;:::-;7600:86;7679:6;7674:3;7600:86;:::i;:::-;7593:93;;7710:56;7760:5;7710:56;:::i;:::-;7789:7;7820:1;7805:284;7830:6;7827:1;7824:13;7805:284;;;7906:6;7900:13;7933:63;7992:3;7977:13;7933:63;:::i;:::-;7926:70;;8019:60;8072:6;8019:60;:::i;:::-;8009:70;;7865:224;7852:1;7849;7845:9;7840:14;;7805:284;;;7809:14;8105:3;8098:10;;7506:608;;;7382:732;;;;:::o;8120:483::-;8291:4;8329:2;8318:9;8314:18;8306:26;;8342:71;8410:1;8399:9;8395:17;8386:6;8342:71;:::i;:::-;8460:9;8454:4;8450:20;8445:2;8434:9;8430:18;8423:48;8488:108;8591:4;8582:6;8488:108;:::i;:::-;8480:116;;8120:483;;;;;:::o;8609:468::-;8674:6;8682;8731:2;8719:9;8710:7;8706:23;8702:32;8699:119;;;8737:79;;:::i;:::-;8699:119;8857:1;8882:53;8927:7;8918:6;8907:9;8903:22;8882:53;:::i;:::-;8872:63;;8828:117;8984:2;9010:50;9052:7;9043:6;9032:9;9028:22;9010:50;:::i;:::-;9000:60;;8955:115;8609:468;;;;;:::o;9083:118::-;9170:24;9188:5;9170:24;:::i;:::-;9165:3;9158:37;9083:118;;:::o;9207:222::-;9300:4;9338:2;9327:9;9323:18;9315:26;;9351:71;9419:1;9408:9;9404:17;9395:6;9351:71;:::i;:::-;9207:222;;;;:::o;9435:759::-;9518:6;9526;9534;9542;9591:3;9579:9;9570:7;9566:23;9562:33;9559:120;;;9598:79;;:::i;:::-;9559:120;9718:1;9743:50;9785:7;9776:6;9765:9;9761:22;9743:50;:::i;:::-;9733:60;;9689:114;9842:2;9868:53;9913:7;9904:6;9893:9;9889:22;9868:53;:::i;:::-;9858:63;;9813:118;9970:2;9996:53;10041:7;10032:6;10021:9;10017:22;9996:53;:::i;:::-;9986:63;;9941:118;10098:2;10124:53;10169:7;10160:6;10149:9;10145:22;10124:53;:::i;:::-;10114:63;;10069:118;9435:759;;;;;;;:::o;10200:619::-;10277:6;10285;10293;10342:2;10330:9;10321:7;10317:23;10313:32;10310:119;;;10348:79;;:::i;:::-;10310:119;10468:1;10493:53;10538:7;10529:6;10518:9;10514:22;10493:53;:::i;:::-;10483:63;;10439:117;10595:2;10621:53;10666:7;10657:6;10646:9;10642:22;10621:53;:::i;:::-;10611:63;;10566:118;10723:2;10749:53;10794:7;10785:6;10774:9;10770:22;10749:53;:::i;:::-;10739:63;;10694:118;10200:619;;;;;:::o;10825:124::-;10902:6;10936:5;10930:12;10920:22;;10825:124;;;:::o;10955:194::-;11064:11;11098:6;11093:3;11086:19;11138:4;11133:3;11129:14;11114:29;;10955:194;;;;:::o;11155:142::-;11232:4;11255:3;11247:11;;11285:4;11280:3;11276:14;11268:22;;11155:142;;;:::o;11303:159::-;11377:11;11411:6;11406:3;11399:19;11451:4;11446:3;11442:14;11427:29;;11303:159;;;;:::o;11468:357::-;11546:3;11574:39;11607:5;11574:39;:::i;:::-;11629:61;11683:6;11678:3;11629:61;:::i;:::-;11622:68;;11699:65;11757:6;11752:3;11745:4;11738:5;11734:16;11699:65;:::i;:::-;11789:29;11811:6;11789:29;:::i;:::-;11784:3;11780:39;11773:46;;11550:275;11468:357;;;;:::o;11831:196::-;11920:10;11955:66;12017:3;12009:6;11955:66;:::i;:::-;11941:80;;11831:196;;;;:::o;12033:123::-;12113:4;12145;12140:3;12136:14;12128:22;;12033:123;;;:::o;12190:991::-;12329:3;12358:64;12416:5;12358:64;:::i;:::-;12438:96;12527:6;12522:3;12438:96;:::i;:::-;12431:103;;12560:3;12605:4;12597:6;12593:17;12588:3;12584:27;12635:66;12695:5;12635:66;:::i;:::-;12724:7;12755:1;12740:396;12765:6;12762:1;12759:13;12740:396;;;12836:9;12830:4;12826:20;12821:3;12814:33;12887:6;12881:13;12915:84;12994:4;12979:13;12915:84;:::i;:::-;12907:92;;13022:70;13085:6;13022:70;:::i;:::-;13012:80;;13121:4;13116:3;13112:14;13105:21;;12800:336;12787:1;12784;12780:9;12775:14;;12740:396;;;12744:14;13152:4;13145:11;;13172:3;13165:10;;12334:847;;;;;12190:991;;;;:::o;13187:523::-;13378:4;13416:2;13405:9;13401:18;13393:26;;13429:71;13497:1;13486:9;13482:17;13473:6;13429:71;:::i;:::-;13547:9;13541:4;13537:20;13532:2;13521:9;13517:18;13510:48;13575:128;13698:4;13689:6;13575:128;:::i;:::-;13567:136;;13187:523;;;;;:::o;13716:474::-;13784:6;13792;13841:2;13829:9;13820:7;13816:23;13812:32;13809:119;;;13847:79;;:::i;:::-;13809:119;13967:1;13992:53;14037:7;14028:6;14017:9;14013:22;13992:53;:::i;:::-;13982:63;;13938:117;14094:2;14120:53;14165:7;14156:6;14145:9;14141:22;14120:53;:::i;:::-;14110:63;;14065:118;13716:474;;;;;:::o;14196:::-;14264:6;14272;14321:2;14309:9;14300:7;14296:23;14292:32;14289:119;;;14327:79;;:::i;:::-;14289:119;14447:1;14472:53;14517:7;14508:6;14497:9;14493:22;14472:53;:::i;:::-;14462:63;;14418:117;14574:2;14600:53;14645:7;14636:6;14625:9;14621:22;14600:53;:::i;:::-;14590:63;;14545:118;14196:474;;;;;:::o;14676:182::-;14816:34;14812:1;14804:6;14800:14;14793:58;14676:182;:::o;14864:366::-;15006:3;15027:67;15091:2;15086:3;15027:67;:::i;:::-;15020:74;;15103:93;15192:3;15103:93;:::i;:::-;15221:2;15216:3;15212:12;15205:19;;14864:366;;;:::o;15236:419::-;15402:4;15440:2;15429:9;15425:18;15417:26;;15489:9;15483:4;15479:20;15475:1;15464:9;15460:17;15453:47;15517:131;15643:4;15517:131;:::i;:::-;15509:139;;15236:419;;;:::o;15661:180::-;15709:77;15706:1;15699:88;15806:4;15803:1;15796:15;15830:4;15827:1;15820:15;15847:320;15891:6;15928:1;15922:4;15918:12;15908:22;;15975:1;15969:4;15965:12;15996:18;15986:81;;16052:4;16044:6;16040:17;16030:27;;15986:81;16114:2;16106:6;16103:14;16083:18;16080:38;16077:84;;16133:18;;:::i;:::-;16077:84;15898:269;15847:320;;;:::o;16173:227::-;16313:34;16309:1;16301:6;16297:14;16290:58;16382:10;16377:2;16369:6;16365:15;16358:35;16173:227;:::o;16406:366::-;16548:3;16569:67;16633:2;16628:3;16569:67;:::i;:::-;16562:74;;16645:93;16734:3;16645:93;:::i;:::-;16763:2;16758:3;16754:12;16747:19;;16406:366;;;:::o;16778:419::-;16944:4;16982:2;16971:9;16967:18;16959:26;;17031:9;17025:4;17021:20;17017:1;17006:9;17002:17;16995:47;17059:131;17185:4;17059:131;:::i;:::-;17051:139;;16778:419;;;:::o;17203:180::-;17251:77;17248:1;17241:88;17348:4;17345:1;17338:15;17372:4;17369:1;17362:15;17389:180;17437:77;17434:1;17427:88;17534:4;17531:1;17524:15;17558:4;17555:1;17548:15;17575:191;17615:3;17634:20;17652:1;17634:20;:::i;:::-;17629:25;;17668:20;17686:1;17668:20;:::i;:::-;17663:25;;17711:1;17708;17704:9;17697:16;;17732:3;17729:1;17726:10;17723:36;;;17739:18;;:::i;:::-;17723:36;17575:191;;;;:::o;17772:194::-;17812:4;17832:20;17850:1;17832:20;:::i;:::-;17827:25;;17866:20;17884:1;17866:20;:::i;:::-;17861:25;;17910:1;17907;17903:9;17895:17;;17934:1;17928:4;17925:11;17922:37;;;17939:18;;:::i;:::-;17922:37;17772:194;;;;:::o;17972:180::-;18020:77;18017:1;18010:88;18117:4;18114:1;18107:15;18141:4;18138:1;18131:15;18158:410;18198:7;18221:20;18239:1;18221:20;:::i;:::-;18216:25;;18255:20;18273:1;18255:20;:::i;:::-;18250:25;;18310:1;18307;18303:9;18332:30;18350:11;18332:30;:::i;:::-;18321:41;;18511:1;18502:7;18498:15;18495:1;18492:22;18472:1;18465:9;18445:83;18422:139;;18541:18;;:::i;:::-;18422:139;18206:362;18158:410;;;;:::o;18574:224::-;18714:34;18710:1;18702:6;18698:14;18691:58;18783:7;18778:2;18770:6;18766:15;18759:32;18574:224;:::o;18804:366::-;18946:3;18967:67;19031:2;19026:3;18967:67;:::i;:::-;18960:74;;19043:93;19132:3;19043:93;:::i;:::-;19161:2;19156:3;19152:12;19145:19;;18804:366;;;:::o;19176:419::-;19342:4;19380:2;19369:9;19365:18;19357:26;;19429:9;19423:4;19419:20;19415:1;19404:9;19400:17;19393:47;19457:131;19583:4;19457:131;:::i;:::-;19449:139;;19176:419;;;:::o;19601:165::-;19741:17;19737:1;19729:6;19725:14;19718:41;19601:165;:::o;19772:366::-;19914:3;19935:67;19999:2;19994:3;19935:67;:::i;:::-;19928:74;;20011:93;20100:3;20011:93;:::i;:::-;20129:2;20124:3;20120:12;20113:19;;19772:366;;;:::o;20144:419::-;20310:4;20348:2;20337:9;20333:18;20325:26;;20397:9;20391:4;20387:20;20383:1;20372:9;20368:17;20361:47;20425:131;20551:4;20425:131;:::i;:::-;20417:139;;20144:419;;;:::o;20569:225::-;20709:34;20705:1;20697:6;20693:14;20686:58;20778:8;20773:2;20765:6;20761:15;20754:33;20569:225;:::o;20800:366::-;20942:3;20963:67;21027:2;21022:3;20963:67;:::i;:::-;20956:74;;21039:93;21128:3;21039:93;:::i;:::-;21157:2;21152:3;21148:12;21141:19;;20800:366;;;:::o;21172:419::-;21338:4;21376:2;21365:9;21361:18;21353:26;;21425:9;21419:4;21415:20;21411:1;21400:9;21396:17;21389:47;21453:131;21579:4;21453:131;:::i;:::-;21445:139;;21172:419;;;:::o;21597:223::-;21737:34;21733:1;21725:6;21721:14;21714:58;21806:6;21801:2;21793:6;21789:15;21782:31;21597:223;:::o;21826:366::-;21968:3;21989:67;22053:2;22048:3;21989:67;:::i;:::-;21982:74;;22065:93;22154:3;22065:93;:::i;:::-;22183:2;22178:3;22174:12;22167:19;;21826:366;;;:::o;22198:419::-;22364:4;22402:2;22391:9;22387:18;22379:26;;22451:9;22445:4;22441:20;22437:1;22426:9;22422:17;22415:47;22479:131;22605:4;22479:131;:::i;:::-;22471:139;;22198:419;;;:::o;22623:221::-;22763:34;22759:1;22751:6;22747:14;22740:58;22832:4;22827:2;22819:6;22815:15;22808:29;22623:221;:::o;22850:366::-;22992:3;23013:67;23077:2;23072:3;23013:67;:::i;:::-;23006:74;;23089:93;23178:3;23089:93;:::i;:::-;23207:2;23202:3;23198:12;23191:19;;22850:366;;;:::o;23222:419::-;23388:4;23426:2;23415:9;23411:18;23403:26;;23475:9;23469:4;23465:20;23461:1;23450:9;23446:17;23439:47;23503:131;23629:4;23503:131;:::i;:::-;23495:139;;23222:419;;;:::o;23647:224::-;23787:34;23783:1;23775:6;23771:14;23764:58;23856:7;23851:2;23843:6;23839:15;23832:32;23647:224;:::o;23877:366::-;24019:3;24040:67;24104:2;24099:3;24040:67;:::i;:::-;24033:74;;24116:93;24205:3;24116:93;:::i;:::-;24234:2;24229:3;24225:12;24218:19;;23877:366;;;:::o;24249:419::-;24415:4;24453:2;24442:9;24438:18;24430:26;;24502:9;24496:4;24492:20;24488:1;24477:9;24473:17;24466:47;24530:131;24656:4;24530:131;:::i;:::-;24522:139;;24249:419;;;:::o;24674:222::-;24814:34;24810:1;24802:6;24798:14;24791:58;24883:5;24878:2;24870:6;24866:15;24859:30;24674:222;:::o;24902:366::-;25044:3;25065:67;25129:2;25124:3;25065:67;:::i;:::-;25058:74;;25141:93;25230:3;25141:93;:::i;:::-;25259:2;25254:3;25250:12;25243:19;;24902:366;;;:::o;25274:419::-;25440:4;25478:2;25467:9;25463:18;25455:26;;25527:9;25521:4;25517:20;25513:1;25502:9;25498:17;25491:47;25555:131;25681:4;25555:131;:::i;:::-;25547:139;;25274:419;;;:::o;25699:225::-;25839:34;25835:1;25827:6;25823:14;25816:58;25908:8;25903:2;25895:6;25891:15;25884:33;25699:225;:::o;25930:366::-;26072:3;26093:67;26157:2;26152:3;26093:67;:::i;:::-;26086:74;;26169:93;26258:3;26169:93;:::i;:::-;26287:2;26282:3;26278:12;26271:19;;25930:366;;;:::o;26302:419::-;26468:4;26506:2;26495:9;26491:18;26483:26;;26555:9;26549:4;26545:20;26541:1;26530:9;26526:17;26519:47;26583:131;26709:4;26583:131;:::i;:::-;26575:139;;26302:419;;;:::o;26727:220::-;26867:34;26863:1;26855:6;26851:14;26844:58;26936:3;26931:2;26923:6;26919:15;26912:28;26727:220;:::o;26953:366::-;27095:3;27116:67;27180:2;27175:3;27116:67;:::i;:::-;27109:74;;27192:93;27281:3;27192:93;:::i;:::-;27310:2;27305:3;27301:12;27294:19;;26953:366;;;:::o;27325:419::-;27491:4;27529:2;27518:9;27514:18;27506:26;;27578:9;27572:4;27568:20;27564:1;27553:9;27549:17;27542:47;27606:131;27732:4;27606:131;:::i;:::-;27598:139;;27325:419;;;:::o;27750:221::-;27890:34;27886:1;27878:6;27874:14;27867:58;27959:4;27954:2;27946:6;27942:15;27935:29;27750:221;:::o;27977:366::-;28119:3;28140:67;28204:2;28199:3;28140:67;:::i;:::-;28133:74;;28216:93;28305:3;28216:93;:::i;:::-;28334:2;28329:3;28325:12;28318:19;;27977:366;;;:::o;28349:419::-;28515:4;28553:2;28542:9;28538:18;28530:26;;28602:9;28596:4;28592:20;28588:1;28577:9;28573:17;28566:47;28630:131;28756:4;28630:131;:::i;:::-;28622:139;;28349:419;;;:::o;28774:161::-;28914:13;28910:1;28902:6;28898:14;28891:37;28774:161;:::o;28941:366::-;29083:3;29104:67;29168:2;29163:3;29104:67;:::i;:::-;29097:74;;29180:93;29269:3;29180:93;:::i;:::-;29298:2;29293:3;29289:12;29282:19;;28941:366;;;:::o;29313:419::-;29479:4;29517:2;29506:9;29502:18;29494:26;;29566:9;29560:4;29556:20;29552:1;29541:9;29537:17;29530:47;29594:131;29720:4;29594:131;:::i;:::-;29586:139;;29313:419;;;:::o;29738:172::-;29878:24;29874:1;29866:6;29862:14;29855:48;29738:172;:::o;29916:366::-;30058:3;30079:67;30143:2;30138:3;30079:67;:::i;:::-;30072:74;;30155:93;30244:3;30155:93;:::i;:::-;30273:2;30268:3;30264:12;30257:19;;29916:366;;;:::o;30288:419::-;30454:4;30492:2;30481:9;30477:18;30469:26;;30541:9;30535:4;30531:20;30527:1;30516:9;30512:17;30505:47;30569:131;30695:4;30569:131;:::i;:::-;30561:139;;30288:419;;;:::o;30713:156::-;30853:8;30849:1;30841:6;30837:14;30830:32;30713:156;:::o;30875:365::-;31017:3;31038:66;31102:1;31097:3;31038:66;:::i;:::-;31031:73;;31113:93;31202:3;31113:93;:::i;:::-;31231:2;31226:3;31222:12;31215:19;;30875:365;;;:::o;31246:419::-;31412:4;31450:2;31439:9;31435:18;31427:26;;31499:9;31493:4;31489:20;31485:1;31474:9;31470:17;31463:47;31527:131;31653:4;31527:131;:::i;:::-;31519:139;;31246:419;;;:::o

Swarm Source

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