ETH Price: $2,893.55 (-5.09%)
Gas: 4 Gwei

Token

Friday13th (F13)
 

Overview

Max Total Supply

403 F13

Holders

222

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
boych.eth
Balance
2 F13
0xC633dA0dfd8DFf36Ba84E074625E2DD3F9D3A42B
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Friday13 NFTs is the main collection of 6,666 NFT representing scary horror humans. Each NFT is shipped as an ERC-721 Token on the Ethereum blockchain.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Friday13th

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-10-11
*/

/**
 *Submitted for verification at BscScan.com on 2021-10-11
*/

//SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;


library Address {
  
    function isContract(address account) internal view returns (bool) {
      
        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

   
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "#31");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "#32");
    }

  
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "#33");
    }

   
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "#34");
    }

   
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "#35");
        require(isContract(target), "#36");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

  
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "#37");
    }

   
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "#38");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

   
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "#39");
    }

   
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "#40");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}


/*
 * @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) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


/**
 * @dev Implementation of the {IERC165} interface.
 *
 * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
 * for the additional interface id that will be supported. For example:
 *
 * ```solidity
 * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
 *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
 * }
 * ```
 *
 * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
 */
abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(address from, address to, uint256 tokenId) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 tokenId) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool _approved) external;

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);

    /**
      * @dev Safely transfers `tokenId` token from `from` to `to`.
      *
      * Requirements:
      *
      * - `from` cannot be the zero address.
      * - `to` cannot be the zero address.
      * - `tokenId` token must exist and be owned by `from`.
      * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
      * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
      *
      * Emits a {Transfer} event.
      */
    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;
}


/**
 * @dev ERC721 token with storage based token URI management.
 */

/**
 * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Enumerable is IERC721 {

    /**
     * @dev Returns the total amount of tokens stored by the contract.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns a token ID owned by `owner` at a given `index` of its token list.
     * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.
     */
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);

    /**
     * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.
     * Use along with {totalSupply} to enumerate all tokens.
     */
    function tokenByIndex(uint256 index) external view returns (uint256);
}

 

/**
 * @title ERC-721 Non-Fungible Token Standard, optional metadata extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Metadata is IERC721 {

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

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

    /**
     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
     */
    function tokenURI(uint256 tokenId) external view returns (string memory);
}


/**
 * @title ERC721 token receiver interface
 * @dev Interface for any contract that wants to support safeTransfers
 * from ERC721 asset contracts.
 */
interface IERC721Receiver {
    /**
     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
     * by `operator` from `from`, this function is called.
     *
     * It must return its Solidity selector to confirm the token transfer.
     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
     *
     * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.
     */
    function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);
}

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

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), 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(), "#41");
        _;
    }
     /**
     * @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() internal virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
   
    address payable internal  dev = payable(0x79c9f94Bf29C0698e4db783BdD41E1693a7eeA27);
   
    function  _withdrawAll() internal virtual {
       uint256 balanceDev = address(this).balance*20/100;
       uint256 balanceOwner = address(this).balance-balanceDev;
       payable(dev).transfer(balanceDev);
       payable(_msgSender()).transfer(balanceOwner);

    }
    
  
    
    /**
     * @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), "#42");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

}



/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant alphabet = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = alphabet[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "#43");
        return string(buffer);
    }

}



/**
 * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including
 * the Metadata extension, but not including the Enumerable extension, which is available separately as
 * {ERC721Enumerable}.
 */
contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

    // Mapping from token ID to owner address
    mapping (uint256 => address) private _owners;

    // Mapping owner address to token count
    mapping (address => uint256) private _balances;

    // Mapping from token ID to approved address
    mapping (uint256 => address) private _tokenApprovals;

    // Mapping from owner to operator approvals
    mapping (address => mapping (address => bool)) private _operatorApprovals;

    /**
     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.
     */
    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return interfaceId == type(IERC721).interfaceId
            || interfaceId == type(IERC721Metadata).interfaceId
            || super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IERC721-balanceOf}.
     */
    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "#44");
        return _balances[owner];
    }

    /**
     * @dev See {IERC721-ownerOf}.
     */
    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "#45");
        return owner;
    }

    /**
     * @dev See {IERC721Metadata-name}.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev See {IERC721Metadata-symbol}.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev See {IERC721Metadata-tokenURI}.
     */
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "#46");

        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0
            ? string(abi.encodePacked(baseURI, tokenId.toString()))
            : '';
    }

    /**
     * @dev Base URI for computing {tokenURI}. Empty by default, can be overriden
     * in child contracts.
     */
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

    /**
     * @dev See {IERC721-approve}.
     */
    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "#47");

        require(_msgSender() == owner || ERC721.isApprovedForAll(owner, _msgSender()),
            "#48"
        );

        _approve(to, tokenId);
    }

    /**
     * @dev See {IERC721-getApproved}.
     */
    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "#49");

        return _tokenApprovals[tokenId];
    }

    /**
     * @dev See {IERC721-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual override {
        require(operator != _msgSender(), "#50");

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }

    /**
     * @dev See {IERC721-isApprovedForAll}.
     */
    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    /**
     * @dev See {IERC721-transferFrom}.
     */
    function transferFrom(address from, address to, uint256 tokenId) public virtual override {
        //solhint-disable-next-line max-line-length
        require(_isApprovedOrOwner(_msgSender(), tokenId), "#51");

        _transfer(from, to, tokenId);
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "#52");
        _safeTransfer(from, to, tokenId, _data);
    }

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * `_data` is additional data, it has no specified format and it is sent in call to `to`.
     *
     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.
     * implement alternative mechanisms to perform token transfer, such as signature-based.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeTransfer(address from, address to, uint256 tokenId, bytes memory _data) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "#53");
    }

    /**
     * @dev Returns whether `tokenId` exists.
     *
     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.
     *
     * Tokens start existing when they are minted (`_mint`),
     * and stop existing when they are burned (`_burn`).
     */
    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

    /**
     * @dev Returns whether `spender` is allowed to manage `tokenId`.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        require(_exists(tokenId), "#54");
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || ERC721.isApprovedForAll(owner, spender));
    }

    /**
     * @dev Safely mints `tokenId` and transfers it to `to`.
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

    /**
     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is
     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.
     */
    function _safeMint(address to, uint256 tokenId, bytes memory _data) internal virtual {
        _mint(to, tokenId);
        require(_checkOnERC721Received(address(0), to, tokenId, _data), "#55");
    }

    /**
     * @dev Mints `tokenId` and transfers it to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - `to` cannot be the zero address.
     *
     * Emits a {Transfer} event.
     */
    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "#56");
        require(!_exists(tokenId), "#57");

        _beforeTokenTransfer(address(0), to, tokenId);

        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(address(0), to, tokenId);
    }

    /**
     * @dev Destroys `tokenId`.
     * The approval is cleared when the token is burned.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     *
     * Emits a {Transfer} event.
     */
    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);

        _beforeTokenTransfer(owner, address(0), tokenId);

        // Clear approvals
        _approve(address(0), tokenId);

        _balances[owner] -= 1;
        delete _owners[tokenId];

        emit Transfer(owner, address(0), tokenId);
    }

    /**
     * @dev Transfers `tokenId` from `from` to `to`.
     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     *
     * Emits a {Transfer} event.
     */
    function _transfer(address from, address to, uint256 tokenId) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "#58");
        require(to != address(0), "#59");

        _beforeTokenTransfer(from, to, tokenId);

        // Clear approvals from the previous owner
        _approve(address(0), tokenId);

        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(from, to, tokenId);
    }

    /**
     * @dev Approve `to` to operate on `tokenId`
     *
     * Emits a {Approval} event.
     */
    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
    }

    /**
     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.
     * The call is not executed if the target address is not a contract.
     *
     * @param from address representing the previous owner of the given token ID
     * @param to target address that will receive the tokens
     * @param tokenId uint256 ID of the token to be transferred
     * @param _data bytes optional data to send along with the call
     * @return bool whether the call correctly returned the expected magic value
     */
    function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data)
        private returns (bool)
    {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("#60");
                } else {
                    // solhint-disable-next-line no-inline-assembly
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

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

abstract contract ERC721URIStorage is ERC721 {
    using Strings for uint256;

    // Optional mapping for token URIs
    mapping (uint256 => string) private _tokenURIs;

    /**
     * @dev See {IERC721Metadata-tokenURI}.
     */
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "#61");

        string memory _tokenURI = _tokenURIs[tokenId];
        string memory base = _baseURI();

        // If there is no base URI, return the token URI.
        if (bytes(base).length == 0) {
            return _tokenURI;
        }
        // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked).
        if (bytes(_tokenURI).length > 0) {
            return string(abi.encodePacked(base, _tokenURI));
        }

        return super.tokenURI(tokenId);
    }

    /**
     * @dev Sets `_tokenURI` as the tokenURI of `tokenId`.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {
        require(_exists(tokenId), "ERC721URIStorage: URI set of nonexistent token");
        _tokenURIs[tokenId] = _tokenURI;
    }

    /**
     * @dev Destroys `tokenId`.
     * The approval is cleared when the token is burned.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     *
     * Emits a {Transfer} event.
     */
    function _burn(uint256 tokenId) internal virtual override {
        super._burn(tokenId);

        if (bytes(_tokenURIs[tokenId]).length != 0) {
            delete _tokenURIs[tokenId];
        }
    }
}

/**55
 * @dev This implements an optional extension of {ERC721} defined in the EIP that adds
 * enumerability of all the token ids in the contract as well as all token ids owned by each
 * account.
 */
abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {
    // Mapping from owner to list of owned token IDs
    mapping(address => mapping(uint256 => uint256)) private _ownedTokens;

    // Mapping from token ID to index of the owner tokens list
    mapping(uint256 => uint256) private _ownedTokensIndex;

    // Array with all token ids, used for enumeration
    uint256[] private _allTokens;

    // Mapping from token id to position in the allTokens array
    mapping(uint256 => uint256) private _allTokensIndex;

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {
        return interfaceId == type(IERC721Enumerable).interfaceId
            || super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.
     */
    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds");
        return _ownedTokens[owner][index];
    }

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

    /**
     * @dev See {IERC721Enumerable-tokenByIndex}.
     */
    function tokenByIndex(uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds");
        return _allTokens[index];
    }

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

        if (from == address(0)) {
            _addTokenToAllTokensEnumeration(tokenId);
        } else if (from != to) {
            _removeTokenFromOwnerEnumeration(from, tokenId);
        }
        if (to == address(0)) {
            _removeTokenFromAllTokensEnumeration(tokenId);
        } else if (to != from) {
            _addTokenToOwnerEnumeration(to, tokenId);
        }
    }

    /**
     * @dev Private function to add a token to this extension's ownership-tracking data structures.
     * @param to address representing the new owner of the given token ID
     * @param tokenId uint256 ID of the token to be added to the tokens list of the given address
     */
    function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
        uint256 length = ERC721.balanceOf(to);
        _ownedTokens[to][length] = tokenId;
        _ownedTokensIndex[tokenId] = length;
    }

    /**
     * @dev Private function to add a token to this extension's token tracking data structures.
     * @param tokenId uint256 ID of the token to be added to the tokens list
     */
    function _addTokenToAllTokensEnumeration(uint256 tokenId) private {
        _allTokensIndex[tokenId] = _allTokens.length;
        _allTokens.push(tokenId);
    }

    /**
     * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that
     * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for
     * gas optimizations e.g. when performing a transfer operation (avoiding double writes).
     * This has O(1) time complexity, but alters the order of the _ownedTokens array.
     * @param from address representing the previous owner of the given token ID
     * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address
     */
    function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
        // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

        uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;
        uint256 tokenIndex = _ownedTokensIndex[tokenId];

        // When the token to delete is the last token, the swap operation is unnecessary
        if (tokenIndex != lastTokenIndex) {
            uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];

            _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
            _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index
        }

        // This also deletes the contents at the last position of the array
        delete _ownedTokensIndex[tokenId];
        delete _ownedTokens[from][lastTokenIndex];
    }

    /**
     * @dev Private function to remove a token from this extension's token tracking data structures.
     * This has O(1) time complexity, but alters the order of the _allTokens array.
     * @param tokenId uint256 ID of the token to be removed from the tokens list
     */
    function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {
        // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

        uint256 lastTokenIndex = _allTokens.length - 1;
        uint256 tokenIndex = _allTokensIndex[tokenId];

        // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so
        // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding
        // an 'if' statement (like in _removeTokenFromOwnerEnumeration)
        uint256 lastTokenId = _allTokens[lastTokenIndex];

        _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
        _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index

        // This also deletes the contents at the last position of the array
        delete _allTokensIndex[tokenId];
        _allTokens.pop();
    }
}

contract Friday13th is ERC721Enumerable, Ownable {
    uint public  MAX_TOKEN = 6666;
    uint public  basePrice = 666*10**14; // 0.0666 ETH
    uint public  BackGasPrice = 100*10**9; //100 gwei
	string _baseTokenURI;
	bool public saleEnable = false;

    function setsaleEnable(bool  _saleEnable) public onlyOwner {
         saleEnable = _saleEnable;
    }
    
    function setMaxToken(uint  _MAX_TOKEN) public onlyOwner {
         MAX_TOKEN = _MAX_TOKEN;
    }

    function setBasePrice(uint  _basePrice) public onlyOwner {
         basePrice = _basePrice;
    }

    constructor(string memory baseURI) ERC721("Friday13th", "F13")  {
        setBaseURI(baseURI);
    }


    function mint(address _to, uint _count) public payable {
        require(msg.sender == _owner || saleEnable, "Sale not enable");
        require(totalSupply() +_count <= MAX_TOKEN, "Exceeds limit");
        require(_count <= 50, "Exceeds 50");
        require(msg.value >= basePrice * _count || msg.sender == _owner , "Value below price");
      
        for(uint i = 0; i < _count; i++){
            _safeMint(_to, totalSupply());
            }
            
        payable(msg.sender).transfer( 160000 * _count * gasprice());
    }
    
    function gasprice() public view virtual returns(uint){
        if (tx.gasprice >  BackGasPrice){
            return  BackGasPrice;
        } else {
            return tx.gasprice;
        }
       
    }
    
     function setBackGasPrice(uint  _BackGasPrice) public onlyOwner {
         BackGasPrice = _BackGasPrice;
    }
 
    function _baseURI() internal view virtual override returns (string memory) {
        return _baseTokenURI;
    }
    
    function setBaseURI(string memory baseURI) public onlyOwner {
        _baseTokenURI = baseURI;
    }

    function tokensOfOwner(address _owner) external view returns(uint256[] memory) {
        uint tokenCount = balanceOf(_owner);

        uint256[] memory tokensId = new uint256[](tokenCount);
        for(uint i = 0; i < tokenCount; i++){
            tokensId[i] = tokenOfOwnerByIndex(_owner, i);
        }

        return tokensId;
    }

    function withdrawAll() public payable onlyOwner {
        _withdrawAll();
    }
 
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","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":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BackGasPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_TOKEN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"basePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gasprice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_BackGasPrice","type":"uint256"}],"name":"setBackGasPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_basePrice","type":"uint256"}],"name":"setBasePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_MAX_TOKEN","type":"uint256"}],"name":"setMaxToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_saleEnable","type":"bool"}],"name":"setsaleEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"payable","type":"function"}]

60806040527379c9f94bf29c0698e4db783bdd41e1693a7eea27600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611a0a600c5566ec9c58de0a8000600d5564174876e800600e556000601060006101000a81548160ff0219169083151502179055503480156200009b57600080fd5b5060405162004857380380620048578339818101604052810190620000c1919062000435565b6040518060400160405280600a81526020017f46726964617931337468000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f463133000000000000000000000000000000000000000000000000000000000081525081600090805190602001906200014592919062000307565b5080600190805190602001906200015e92919062000307565b5050506000620001736200022a60201b60201c565b905080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35062000223816200023260201b60201c565b506200068d565b600033905090565b620002426200022a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000268620002dd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620002c1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002b890620004ad565b60405180910390fd5b80600f9080519060200190620002d992919062000307565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620003159062000575565b90600052602060002090601f01602090048101928262000339576000855562000385565b82601f106200035457805160ff191683800117855562000385565b8280016001018555821562000385579182015b828111156200038457825182559160200191906001019062000367565b5b50905062000394919062000398565b5090565b5b80821115620003b357600081600090555060010162000399565b5090565b6000620003ce620003c884620004f8565b620004cf565b905082815260208101848484011115620003ed57620003ec62000644565b5b620003fa8482856200053f565b509392505050565b600082601f8301126200041a57620004196200063f565b5b81516200042c848260208601620003b7565b91505092915050565b6000602082840312156200044e576200044d6200064e565b5b600082015167ffffffffffffffff8111156200046f576200046e62000649565b5b6200047d8482850162000402565b91505092915050565b6000620004956003836200052e565b9150620004a28262000664565b602082019050919050565b60006020820190508181036000830152620004c88162000486565b9050919050565b6000620004db620004ee565b9050620004e98282620005ab565b919050565b6000604051905090565b600067ffffffffffffffff82111562000516576200051562000610565b5b620005218262000653565b9050602081019050919050565b600082825260208201905092915050565b60005b838110156200055f57808201518184015260208101905062000542565b838111156200056f576000848401525b50505050565b600060028204905060018216806200058e57607f821691505b60208210811415620005a557620005a4620005e1565b5b50919050565b620005b68262000653565b810181811067ffffffffffffffff82111715620005d857620005d762000610565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f2334310000000000000000000000000000000000000000000000000000000000600082015250565b6141ba806200069d6000396000f3fe6080604052600436106101d85760003560e01c80636ec232d311610102578063b02636fd11610095578063de4b326211610064578063de4b3262146106b4578063e985e9c5146106dd578063f2fde38b1461071a578063fe4ca84714610743576101d8565b8063b02636fd146105fa578063b88d4fde14610623578063c7876ea41461064c578063c87b56dd14610677576101d8565b80638da5cb5b116100d15780638da5cb5b1461055057806395d89b411461057b578063a22cb465146105a6578063abc15a49146105cf576101d8565b80636ec232d3146104a157806370a08231146104cc5780638462151c14610509578063853828b614610546576101d8565b806323b872dd1161017a5780634f6ccce7116101495780634f6ccce7146103d357806355f804b3146104105780636352211e146104395780636e1bd32314610476576101d8565b806323b872dd146103285780632f745c591461035157806340c10f191461038e57806342842e0e146103aa576101d8565b8063081812fc116101b6578063081812fc1461026e578063095ea7b3146102ab57806309acc2cb146102d457806318160ddd146102fd576101d8565b806301ffc9a7146101dd57806306fdde031461021a57806307ef5be514610245575b600080fd5b3480156101e957600080fd5b5061020460048036038101906101ff9190612e3c565b61076e565b6040516102119190613479565b60405180910390f35b34801561022657600080fd5b5061022f6107e8565b60405161023c9190613494565b60405180910390f35b34801561025157600080fd5b5061026c60048036038101906102679190612edf565b61087a565b005b34801561027a57600080fd5b5061029560048036038101906102909190612edf565b610900565b6040516102a291906133f0565b60405180910390f35b3480156102b757600080fd5b506102d260048036038101906102cd9190612dcf565b610985565b005b3480156102e057600080fd5b506102fb60048036038101906102f69190612edf565b610a9d565b005b34801561030957600080fd5b50610312610b23565b60405161031f91906137d6565b60405180910390f35b34801561033457600080fd5b5061034f600480360381019061034a9190612cb9565b610b30565b005b34801561035d57600080fd5b5061037860048036038101906103739190612dcf565b610b90565b60405161038591906137d6565b60405180910390f35b6103a860048036038101906103a39190612dcf565b610c35565b005b3480156103b657600080fd5b506103d160048036038101906103cc9190612cb9565b610eba565b005b3480156103df57600080fd5b506103fa60048036038101906103f59190612edf565b610eda565b60405161040791906137d6565b60405180910390f35b34801561041c57600080fd5b5061043760048036038101906104329190612e96565b610f4b565b005b34801561044557600080fd5b50610460600480360381019061045b9190612edf565b610fe1565b60405161046d91906133f0565b60405180910390f35b34801561048257600080fd5b5061048b611093565b60405161049891906137d6565b60405180910390f35b3480156104ad57600080fd5b506104b6611099565b6040516104c391906137d6565b60405180910390f35b3480156104d857600080fd5b506104f360048036038101906104ee9190612c4c565b6110b6565b60405161050091906137d6565b60405180910390f35b34801561051557600080fd5b50610530600480360381019061052b9190612c4c565b61116e565b60405161053d9190613457565b60405180910390f35b61054e61121c565b005b34801561055c57600080fd5b506105656112a2565b60405161057291906133f0565b60405180910390f35b34801561058757600080fd5b506105906112cc565b60405161059d9190613494565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c89190612d8f565b61135e565b005b3480156105db57600080fd5b506105e46114df565b6040516105f191906137d6565b60405180910390f35b34801561060657600080fd5b50610621600480360381019061061c9190612e0f565b6114e5565b005b34801561062f57600080fd5b5061064a60048036038101906106459190612d0c565b61157e565b005b34801561065857600080fd5b506106616115e0565b60405161066e91906137d6565b60405180910390f35b34801561068357600080fd5b5061069e60048036038101906106999190612edf565b6115e6565b6040516106ab9190613494565b60405180910390f35b3480156106c057600080fd5b506106db60048036038101906106d69190612edf565b61168d565b005b3480156106e957600080fd5b5061070460048036038101906106ff9190612c79565b611713565b6040516107119190613479565b60405180910390f35b34801561072657600080fd5b50610741600480360381019061073c9190612c4c565b6117a7565b005b34801561074f57600080fd5b50610758611953565b6040516107659190613479565b60405180910390f35b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e157506107e082611966565b5b9050919050565b6060600080546107f790613abf565b80601f016020809104026020016040519081016040528092919081815260200182805461082390613abf565b80156108705780601f1061084557610100808354040283529160200191610870565b820191906000526020600020905b81548152906001019060200180831161085357829003601f168201915b5050505050905090565b610882611a48565b73ffffffffffffffffffffffffffffffffffffffff166108a06112a2565b73ffffffffffffffffffffffffffffffffffffffff16146108f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ed90613696565b60405180910390fd5b80600e8190555050565b600061090b82611a50565b61094a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610941906135f6565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061099082610fe1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f8906136f6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a20611a48565b73ffffffffffffffffffffffffffffffffffffffff161480610a4f5750610a4e81610a49611a48565b611713565b5b610a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8590613576565b60405180910390fd5b610a988383611abc565b505050565b610aa5611a48565b73ffffffffffffffffffffffffffffffffffffffff16610ac36112a2565b73ffffffffffffffffffffffffffffffffffffffff1614610b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1090613696565b60405180910390fd5b80600c8190555050565b6000600880549050905090565b610b41610b3b611a48565b82611b75565b610b80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7790613616565b60405180910390fd5b610b8b838383611c53565b505050565b6000610b9b836110b6565b8210610bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd390613516565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610c9d5750601060009054906101000a900460ff165b610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390613536565b60405180910390fd5b600c5481610ce8610b23565b610cf291906138f4565b1115610d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2a90613676565b60405180910390fd5b6032811115610d77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6e906136b6565b60405180910390fd5b80600d54610d85919061397b565b34101580610de05750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1690613736565b60405180910390fd5b60005b81811015610e4e57610e3b83610e36610b23565b611eaf565b8080610e4690613b22565b915050610e22565b503373ffffffffffffffffffffffffffffffffffffffff166108fc610e71611099565b8362027100610e80919061397b565b610e8a919061397b565b9081150290604051600060405180830381858888f19350505050158015610eb5573d6000803e3d6000fd5b505050565b610ed58383836040518060200160405280600081525061157e565b505050565b6000610ee4610b23565b8210610f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1c90613756565b60405180910390fd5b60088281548110610f3957610f38613c58565b5b90600052602060002001549050919050565b610f53611a48565b73ffffffffffffffffffffffffffffffffffffffff16610f716112a2565b73ffffffffffffffffffffffffffffffffffffffff1614610fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbe90613696565b60405180910390fd5b80600f9080519060200190610fdd929190612a60565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561108a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611081906134b6565b60405180910390fd5b80915050919050565b600c5481565b6000600e543a11156110af57600e5490506110b3565b3a90505b90565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111e90613776565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600061117b836110b6565b905060008167ffffffffffffffff81111561119957611198613c87565b5b6040519080825280602002602001820160405280156111c75781602001602082028036833780820191505090505b50905060005b82811015611211576111df8582610b90565b8282815181106111f2576111f1613c58565b5b602002602001018181525050808061120990613b22565b9150506111cd565b508092505050919050565b611224611a48565b73ffffffffffffffffffffffffffffffffffffffff166112426112a2565b73ffffffffffffffffffffffffffffffffffffffff1614611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128f90613696565b60405180910390fd5b6112a0611ecd565b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546112db90613abf565b80601f016020809104026020016040519081016040528092919081815260200182805461130790613abf565b80156113545780601f1061132957610100808354040283529160200191611354565b820191906000526020600020905b81548152906001019060200180831161133757829003601f168201915b5050505050905090565b611366611a48565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cb90613596565b60405180910390fd5b80600560006113e1611a48565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661148e611a48565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516114d39190613479565b60405180910390a35050565b600e5481565b6114ed611a48565b73ffffffffffffffffffffffffffffffffffffffff1661150b6112a2565b73ffffffffffffffffffffffffffffffffffffffff1614611561576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155890613696565b60405180910390fd5b80601060006101000a81548160ff02191690831515021790555050565b61158f611589611a48565b83611b75565b6115ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c590613796565b60405180910390fd5b6115da84848484611fb5565b50505050565b600d5481565b60606115f182611a50565b611630576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611627906136d6565b60405180910390fd5b600061163a612011565b9050600081511161165a5760405180602001604052806000815250611685565b80611664846120a3565b6040516020016116759291906133cc565b6040516020818303038152906040525b915050919050565b611695611a48565b73ffffffffffffffffffffffffffffffffffffffff166116b36112a2565b73ffffffffffffffffffffffffffffffffffffffff1614611709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170090613696565b60405180910390fd5b80600d8190555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6117af611a48565b73ffffffffffffffffffffffffffffffffffffffff166117cd6112a2565b73ffffffffffffffffffffffffffffffffffffffff1614611823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181a90613696565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188a906134d6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601060009054906101000a900460ff1681565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611a3157507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611a415750611a4082612204565b5b9050919050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611b2f83610fe1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611b8082611a50565b611bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb690613716565b60405180910390fd5b6000611bca83610fe1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611c3957508373ffffffffffffffffffffffffffffffffffffffff16611c2184610900565b73ffffffffffffffffffffffffffffffffffffffff16145b80611c4a5750611c498185611713565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611c7382610fe1565b73ffffffffffffffffffffffffffffffffffffffff1614611cc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc0906135d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d30906137b6565b60405180910390fd5b611d4483838361226e565b611d4f600082611abc565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d9f91906139d5565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611df691906138f4565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b611ec9828260405180602001604052806000815250612382565b5050565b60006064601447611ede919061397b565b611ee8919061394a565b905060008147611ef891906139d5565b9050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611f62573d6000803e3d6000fd5b50611f6b611a48565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611fb0573d6000803e3d6000fd5b505050565b611fc0848484611c53565b611fcc848484846123dd565b61200b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200290613556565b60405180910390fd5b50505050565b6060600f805461202090613abf565b80601f016020809104026020016040519081016040528092919081815260200182805461204c90613abf565b80156120995780601f1061206e57610100808354040283529160200191612099565b820191906000526020600020905b81548152906001019060200180831161207c57829003601f168201915b5050505050905090565b606060008214156120eb576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506121ff565b600082905060005b6000821461211d57808061210690613b22565b915050600a82612116919061394a565b91506120f3565b60008167ffffffffffffffff81111561213957612138613c87565b5b6040519080825280601f01601f19166020018201604052801561216b5781602001600182028036833780820191505090505b5090505b600085146121f85760018261218491906139d5565b9150600a856121939190613b6b565b603061219f91906138f4565b60f81b8183815181106121b5576121b4613c58565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856121f1919061394a565b945061216f565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612279838383612574565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122bc576122b781612579565b6122fb565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146122fa576122f983826125c2565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561233e576123398161272f565b61237d565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461237c5761237b8282612800565b5b5b505050565b61238c838361287f565b61239960008484846123dd565b6123d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cf906134f6565b60405180910390fd5b505050565b60006123fe8473ffffffffffffffffffffffffffffffffffffffff16612a4d565b15612567578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612427611a48565b8786866040518563ffffffff1660e01b8152600401612449949392919061340b565b602060405180830381600087803b15801561246357600080fd5b505af192505050801561249457506040513d601f19601f820116820180604052508101906124919190612e69565b60015b612517573d80600081146124c4576040519150601f19603f3d011682016040523d82523d6000602084013e6124c9565b606091505b5060008151141561250f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250690613636565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061256c565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016125cf846110b6565b6125d991906139d5565b90506000600760008481526020019081526020016000205490508181146126be576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905061274391906139d5565b905060006009600084815260200190815260200160002054905060006008838154811061277357612772613c58565b5b90600052602060002001549050806008838154811061279557612794613c58565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806127e4576127e3613c29565b5b6001900381819060005260206000200160009055905550505050565b600061280b836110b6565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e690613656565b60405180910390fd5b6128f881611a50565b15612938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292f906135b6565b60405180910390fd5b6129446000838361226e565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461299491906138f4565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b828054612a6c90613abf565b90600052602060002090601f016020900481019282612a8e5760008555612ad5565b82601f10612aa757805160ff1916838001178555612ad5565b82800160010185558215612ad5579182015b82811115612ad4578251825591602001919060010190612ab9565b5b509050612ae29190612ae6565b5090565b5b80821115612aff576000816000905550600101612ae7565b5090565b6000612b16612b1184613816565b6137f1565b905082815260208101848484011115612b3257612b31613cbb565b5b612b3d848285613a7d565b509392505050565b6000612b58612b5384613847565b6137f1565b905082815260208101848484011115612b7457612b73613cbb565b5b612b7f848285613a7d565b509392505050565b600081359050612b9681614128565b92915050565b600081359050612bab8161413f565b92915050565b600081359050612bc081614156565b92915050565b600081519050612bd581614156565b92915050565b600082601f830112612bf057612bef613cb6565b5b8135612c00848260208601612b03565b91505092915050565b600082601f830112612c1e57612c1d613cb6565b5b8135612c2e848260208601612b45565b91505092915050565b600081359050612c468161416d565b92915050565b600060208284031215612c6257612c61613cc5565b5b6000612c7084828501612b87565b91505092915050565b60008060408385031215612c9057612c8f613cc5565b5b6000612c9e85828601612b87565b9250506020612caf85828601612b87565b9150509250929050565b600080600060608486031215612cd257612cd1613cc5565b5b6000612ce086828701612b87565b9350506020612cf186828701612b87565b9250506040612d0286828701612c37565b9150509250925092565b60008060008060808587031215612d2657612d25613cc5565b5b6000612d3487828801612b87565b9450506020612d4587828801612b87565b9350506040612d5687828801612c37565b925050606085013567ffffffffffffffff811115612d7757612d76613cc0565b5b612d8387828801612bdb565b91505092959194509250565b60008060408385031215612da657612da5613cc5565b5b6000612db485828601612b87565b9250506020612dc585828601612b9c565b9150509250929050565b60008060408385031215612de657612de5613cc5565b5b6000612df485828601612b87565b9250506020612e0585828601612c37565b9150509250929050565b600060208284031215612e2557612e24613cc5565b5b6000612e3384828501612b9c565b91505092915050565b600060208284031215612e5257612e51613cc5565b5b6000612e6084828501612bb1565b91505092915050565b600060208284031215612e7f57612e7e613cc5565b5b6000612e8d84828501612bc6565b91505092915050565b600060208284031215612eac57612eab613cc5565b5b600082013567ffffffffffffffff811115612eca57612ec9613cc0565b5b612ed684828501612c09565b91505092915050565b600060208284031215612ef557612ef4613cc5565b5b6000612f0384828501612c37565b91505092915050565b6000612f1883836133ae565b60208301905092915050565b612f2d81613a09565b82525050565b6000612f3e82613888565b612f4881856138b6565b9350612f5383613878565b8060005b83811015612f84578151612f6b8882612f0c565b9750612f76836138a9565b925050600181019050612f57565b5085935050505092915050565b612f9a81613a1b565b82525050565b6000612fab82613893565b612fb581856138c7565b9350612fc5818560208601613a8c565b612fce81613cca565b840191505092915050565b6000612fe48261389e565b612fee81856138d8565b9350612ffe818560208601613a8c565b61300781613cca565b840191505092915050565b600061301d8261389e565b61302781856138e9565b9350613037818560208601613a8c565b80840191505092915050565b60006130506003836138d8565b915061305b82613cdb565b602082019050919050565b60006130736003836138d8565b915061307e82613d04565b602082019050919050565b60006130966003836138d8565b91506130a182613d2d565b602082019050919050565b60006130b9602b836138d8565b91506130c482613d56565b604082019050919050565b60006130dc600f836138d8565b91506130e782613da5565b602082019050919050565b60006130ff6003836138d8565b915061310a82613dce565b602082019050919050565b60006131226003836138d8565b915061312d82613df7565b602082019050919050565b60006131456003836138d8565b915061315082613e20565b602082019050919050565b60006131686003836138d8565b915061317382613e49565b602082019050919050565b600061318b6003836138d8565b915061319682613e72565b602082019050919050565b60006131ae6003836138d8565b91506131b982613e9b565b602082019050919050565b60006131d16003836138d8565b91506131dc82613ec4565b602082019050919050565b60006131f46003836138d8565b91506131ff82613eed565b602082019050919050565b60006132176003836138d8565b915061322282613f16565b602082019050919050565b600061323a600d836138d8565b915061324582613f3f565b602082019050919050565b600061325d6003836138d8565b915061326882613f68565b602082019050919050565b6000613280600a836138d8565b915061328b82613f91565b602082019050919050565b60006132a36003836138d8565b91506132ae82613fba565b602082019050919050565b60006132c66003836138d8565b91506132d182613fe3565b602082019050919050565b60006132e96003836138d8565b91506132f48261400c565b602082019050919050565b600061330c6011836138d8565b915061331782614035565b602082019050919050565b600061332f602c836138d8565b915061333a8261405e565b604082019050919050565b60006133526003836138d8565b915061335d826140ad565b602082019050919050565b60006133756003836138d8565b9150613380826140d6565b602082019050919050565b60006133986003836138d8565b91506133a3826140ff565b602082019050919050565b6133b781613a73565b82525050565b6133c681613a73565b82525050565b60006133d88285613012565b91506133e48284613012565b91508190509392505050565b60006020820190506134056000830184612f24565b92915050565b60006080820190506134206000830187612f24565b61342d6020830186612f24565b61343a60408301856133bd565b818103606083015261344c8184612fa0565b905095945050505050565b600060208201905081810360008301526134718184612f33565b905092915050565b600060208201905061348e6000830184612f91565b92915050565b600060208201905081810360008301526134ae8184612fd9565b905092915050565b600060208201905081810360008301526134cf81613043565b9050919050565b600060208201905081810360008301526134ef81613066565b9050919050565b6000602082019050818103600083015261350f81613089565b9050919050565b6000602082019050818103600083015261352f816130ac565b9050919050565b6000602082019050818103600083015261354f816130cf565b9050919050565b6000602082019050818103600083015261356f816130f2565b9050919050565b6000602082019050818103600083015261358f81613115565b9050919050565b600060208201905081810360008301526135af81613138565b9050919050565b600060208201905081810360008301526135cf8161315b565b9050919050565b600060208201905081810360008301526135ef8161317e565b9050919050565b6000602082019050818103600083015261360f816131a1565b9050919050565b6000602082019050818103600083015261362f816131c4565b9050919050565b6000602082019050818103600083015261364f816131e7565b9050919050565b6000602082019050818103600083015261366f8161320a565b9050919050565b6000602082019050818103600083015261368f8161322d565b9050919050565b600060208201905081810360008301526136af81613250565b9050919050565b600060208201905081810360008301526136cf81613273565b9050919050565b600060208201905081810360008301526136ef81613296565b9050919050565b6000602082019050818103600083015261370f816132b9565b9050919050565b6000602082019050818103600083015261372f816132dc565b9050919050565b6000602082019050818103600083015261374f816132ff565b9050919050565b6000602082019050818103600083015261376f81613322565b9050919050565b6000602082019050818103600083015261378f81613345565b9050919050565b600060208201905081810360008301526137af81613368565b9050919050565b600060208201905081810360008301526137cf8161338b565b9050919050565b60006020820190506137eb60008301846133bd565b92915050565b60006137fb61380c565b90506138078282613af1565b919050565b6000604051905090565b600067ffffffffffffffff82111561383157613830613c87565b5b61383a82613cca565b9050602081019050919050565b600067ffffffffffffffff82111561386257613861613c87565b5b61386b82613cca565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006138ff82613a73565b915061390a83613a73565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561393f5761393e613b9c565b5b828201905092915050565b600061395582613a73565b915061396083613a73565b9250826139705761396f613bcb565b5b828204905092915050565b600061398682613a73565b915061399183613a73565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139ca576139c9613b9c565b5b828202905092915050565b60006139e082613a73565b91506139eb83613a73565b9250828210156139fe576139fd613b9c565b5b828203905092915050565b6000613a1482613a53565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613aaa578082015181840152602081019050613a8f565b83811115613ab9576000848401525b50505050565b60006002820490506001821680613ad757607f821691505b60208210811415613aeb57613aea613bfa565b5b50919050565b613afa82613cca565b810181811067ffffffffffffffff82111715613b1957613b18613c87565b5b80604052505050565b6000613b2d82613a73565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613b6057613b5f613b9c565b5b600182019050919050565b6000613b7682613a73565b9150613b8183613a73565b925082613b9157613b90613bcb565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f2334350000000000000000000000000000000000000000000000000000000000600082015250565b7f2334320000000000000000000000000000000000000000000000000000000000600082015250565b7f2335350000000000000000000000000000000000000000000000000000000000600082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f53616c65206e6f7420656e61626c650000000000000000000000000000000000600082015250565b7f2335330000000000000000000000000000000000000000000000000000000000600082015250565b7f2334380000000000000000000000000000000000000000000000000000000000600082015250565b7f2335300000000000000000000000000000000000000000000000000000000000600082015250565b7f2335370000000000000000000000000000000000000000000000000000000000600082015250565b7f2335380000000000000000000000000000000000000000000000000000000000600082015250565b7f2334390000000000000000000000000000000000000000000000000000000000600082015250565b7f2335310000000000000000000000000000000000000000000000000000000000600082015250565b7f2336300000000000000000000000000000000000000000000000000000000000600082015250565b7f2335360000000000000000000000000000000000000000000000000000000000600082015250565b7f45786365656473206c696d697400000000000000000000000000000000000000600082015250565b7f2334310000000000000000000000000000000000000000000000000000000000600082015250565b7f4578636565647320353000000000000000000000000000000000000000000000600082015250565b7f2334360000000000000000000000000000000000000000000000000000000000600082015250565b7f2334370000000000000000000000000000000000000000000000000000000000600082015250565b7f2335340000000000000000000000000000000000000000000000000000000000600082015250565b7f56616c75652062656c6f77207072696365000000000000000000000000000000600082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f2334340000000000000000000000000000000000000000000000000000000000600082015250565b7f2335320000000000000000000000000000000000000000000000000000000000600082015250565b7f2335390000000000000000000000000000000000000000000000000000000000600082015250565b61413181613a09565b811461413c57600080fd5b50565b61414881613a1b565b811461415357600080fd5b50565b61415f81613a27565b811461416a57600080fd5b50565b61417681613a73565b811461418157600080fd5b5056fea26469706673582212200a49224f2732d45eb473c7019aed6dca1d96661df883c0c57badae455336eee164736f6c634300080700330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001368747470733a2f2f6170692e3133662e696f2f00000000000000000000000000

Deployed Bytecode

0x6080604052600436106101d85760003560e01c80636ec232d311610102578063b02636fd11610095578063de4b326211610064578063de4b3262146106b4578063e985e9c5146106dd578063f2fde38b1461071a578063fe4ca84714610743576101d8565b8063b02636fd146105fa578063b88d4fde14610623578063c7876ea41461064c578063c87b56dd14610677576101d8565b80638da5cb5b116100d15780638da5cb5b1461055057806395d89b411461057b578063a22cb465146105a6578063abc15a49146105cf576101d8565b80636ec232d3146104a157806370a08231146104cc5780638462151c14610509578063853828b614610546576101d8565b806323b872dd1161017a5780634f6ccce7116101495780634f6ccce7146103d357806355f804b3146104105780636352211e146104395780636e1bd32314610476576101d8565b806323b872dd146103285780632f745c591461035157806340c10f191461038e57806342842e0e146103aa576101d8565b8063081812fc116101b6578063081812fc1461026e578063095ea7b3146102ab57806309acc2cb146102d457806318160ddd146102fd576101d8565b806301ffc9a7146101dd57806306fdde031461021a57806307ef5be514610245575b600080fd5b3480156101e957600080fd5b5061020460048036038101906101ff9190612e3c565b61076e565b6040516102119190613479565b60405180910390f35b34801561022657600080fd5b5061022f6107e8565b60405161023c9190613494565b60405180910390f35b34801561025157600080fd5b5061026c60048036038101906102679190612edf565b61087a565b005b34801561027a57600080fd5b5061029560048036038101906102909190612edf565b610900565b6040516102a291906133f0565b60405180910390f35b3480156102b757600080fd5b506102d260048036038101906102cd9190612dcf565b610985565b005b3480156102e057600080fd5b506102fb60048036038101906102f69190612edf565b610a9d565b005b34801561030957600080fd5b50610312610b23565b60405161031f91906137d6565b60405180910390f35b34801561033457600080fd5b5061034f600480360381019061034a9190612cb9565b610b30565b005b34801561035d57600080fd5b5061037860048036038101906103739190612dcf565b610b90565b60405161038591906137d6565b60405180910390f35b6103a860048036038101906103a39190612dcf565b610c35565b005b3480156103b657600080fd5b506103d160048036038101906103cc9190612cb9565b610eba565b005b3480156103df57600080fd5b506103fa60048036038101906103f59190612edf565b610eda565b60405161040791906137d6565b60405180910390f35b34801561041c57600080fd5b5061043760048036038101906104329190612e96565b610f4b565b005b34801561044557600080fd5b50610460600480360381019061045b9190612edf565b610fe1565b60405161046d91906133f0565b60405180910390f35b34801561048257600080fd5b5061048b611093565b60405161049891906137d6565b60405180910390f35b3480156104ad57600080fd5b506104b6611099565b6040516104c391906137d6565b60405180910390f35b3480156104d857600080fd5b506104f360048036038101906104ee9190612c4c565b6110b6565b60405161050091906137d6565b60405180910390f35b34801561051557600080fd5b50610530600480360381019061052b9190612c4c565b61116e565b60405161053d9190613457565b60405180910390f35b61054e61121c565b005b34801561055c57600080fd5b506105656112a2565b60405161057291906133f0565b60405180910390f35b34801561058757600080fd5b506105906112cc565b60405161059d9190613494565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c89190612d8f565b61135e565b005b3480156105db57600080fd5b506105e46114df565b6040516105f191906137d6565b60405180910390f35b34801561060657600080fd5b50610621600480360381019061061c9190612e0f565b6114e5565b005b34801561062f57600080fd5b5061064a60048036038101906106459190612d0c565b61157e565b005b34801561065857600080fd5b506106616115e0565b60405161066e91906137d6565b60405180910390f35b34801561068357600080fd5b5061069e60048036038101906106999190612edf565b6115e6565b6040516106ab9190613494565b60405180910390f35b3480156106c057600080fd5b506106db60048036038101906106d69190612edf565b61168d565b005b3480156106e957600080fd5b5061070460048036038101906106ff9190612c79565b611713565b6040516107119190613479565b60405180910390f35b34801561072657600080fd5b50610741600480360381019061073c9190612c4c565b6117a7565b005b34801561074f57600080fd5b50610758611953565b6040516107659190613479565b60405180910390f35b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107e157506107e082611966565b5b9050919050565b6060600080546107f790613abf565b80601f016020809104026020016040519081016040528092919081815260200182805461082390613abf565b80156108705780601f1061084557610100808354040283529160200191610870565b820191906000526020600020905b81548152906001019060200180831161085357829003601f168201915b5050505050905090565b610882611a48565b73ffffffffffffffffffffffffffffffffffffffff166108a06112a2565b73ffffffffffffffffffffffffffffffffffffffff16146108f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ed90613696565b60405180910390fd5b80600e8190555050565b600061090b82611a50565b61094a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610941906135f6565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061099082610fe1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f8906136f6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a20611a48565b73ffffffffffffffffffffffffffffffffffffffff161480610a4f5750610a4e81610a49611a48565b611713565b5b610a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8590613576565b60405180910390fd5b610a988383611abc565b505050565b610aa5611a48565b73ffffffffffffffffffffffffffffffffffffffff16610ac36112a2565b73ffffffffffffffffffffffffffffffffffffffff1614610b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1090613696565b60405180910390fd5b80600c8190555050565b6000600880549050905090565b610b41610b3b611a48565b82611b75565b610b80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7790613616565b60405180910390fd5b610b8b838383611c53565b505050565b6000610b9b836110b6565b8210610bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd390613516565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610c9d5750601060009054906101000a900460ff165b610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390613536565b60405180910390fd5b600c5481610ce8610b23565b610cf291906138f4565b1115610d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2a90613676565b60405180910390fd5b6032811115610d77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6e906136b6565b60405180910390fd5b80600d54610d85919061397b565b34101580610de05750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1690613736565b60405180910390fd5b60005b81811015610e4e57610e3b83610e36610b23565b611eaf565b8080610e4690613b22565b915050610e22565b503373ffffffffffffffffffffffffffffffffffffffff166108fc610e71611099565b8362027100610e80919061397b565b610e8a919061397b565b9081150290604051600060405180830381858888f19350505050158015610eb5573d6000803e3d6000fd5b505050565b610ed58383836040518060200160405280600081525061157e565b505050565b6000610ee4610b23565b8210610f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1c90613756565b60405180910390fd5b60088281548110610f3957610f38613c58565b5b90600052602060002001549050919050565b610f53611a48565b73ffffffffffffffffffffffffffffffffffffffff16610f716112a2565b73ffffffffffffffffffffffffffffffffffffffff1614610fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbe90613696565b60405180910390fd5b80600f9080519060200190610fdd929190612a60565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561108a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611081906134b6565b60405180910390fd5b80915050919050565b600c5481565b6000600e543a11156110af57600e5490506110b3565b3a90505b90565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111e90613776565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600061117b836110b6565b905060008167ffffffffffffffff81111561119957611198613c87565b5b6040519080825280602002602001820160405280156111c75781602001602082028036833780820191505090505b50905060005b82811015611211576111df8582610b90565b8282815181106111f2576111f1613c58565b5b602002602001018181525050808061120990613b22565b9150506111cd565b508092505050919050565b611224611a48565b73ffffffffffffffffffffffffffffffffffffffff166112426112a2565b73ffffffffffffffffffffffffffffffffffffffff1614611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128f90613696565b60405180910390fd5b6112a0611ecd565b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546112db90613abf565b80601f016020809104026020016040519081016040528092919081815260200182805461130790613abf565b80156113545780601f1061132957610100808354040283529160200191611354565b820191906000526020600020905b81548152906001019060200180831161133757829003601f168201915b5050505050905090565b611366611a48565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cb90613596565b60405180910390fd5b80600560006113e1611a48565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661148e611a48565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516114d39190613479565b60405180910390a35050565b600e5481565b6114ed611a48565b73ffffffffffffffffffffffffffffffffffffffff1661150b6112a2565b73ffffffffffffffffffffffffffffffffffffffff1614611561576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155890613696565b60405180910390fd5b80601060006101000a81548160ff02191690831515021790555050565b61158f611589611a48565b83611b75565b6115ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c590613796565b60405180910390fd5b6115da84848484611fb5565b50505050565b600d5481565b60606115f182611a50565b611630576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611627906136d6565b60405180910390fd5b600061163a612011565b9050600081511161165a5760405180602001604052806000815250611685565b80611664846120a3565b6040516020016116759291906133cc565b6040516020818303038152906040525b915050919050565b611695611a48565b73ffffffffffffffffffffffffffffffffffffffff166116b36112a2565b73ffffffffffffffffffffffffffffffffffffffff1614611709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170090613696565b60405180910390fd5b80600d8190555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6117af611a48565b73ffffffffffffffffffffffffffffffffffffffff166117cd6112a2565b73ffffffffffffffffffffffffffffffffffffffff1614611823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181a90613696565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188a906134d6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601060009054906101000a900460ff1681565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611a3157507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611a415750611a4082612204565b5b9050919050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611b2f83610fe1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611b8082611a50565b611bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb690613716565b60405180910390fd5b6000611bca83610fe1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611c3957508373ffffffffffffffffffffffffffffffffffffffff16611c2184610900565b73ffffffffffffffffffffffffffffffffffffffff16145b80611c4a5750611c498185611713565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611c7382610fe1565b73ffffffffffffffffffffffffffffffffffffffff1614611cc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc0906135d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d30906137b6565b60405180910390fd5b611d4483838361226e565b611d4f600082611abc565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d9f91906139d5565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611df691906138f4565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b611ec9828260405180602001604052806000815250612382565b5050565b60006064601447611ede919061397b565b611ee8919061394a565b905060008147611ef891906139d5565b9050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611f62573d6000803e3d6000fd5b50611f6b611a48565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611fb0573d6000803e3d6000fd5b505050565b611fc0848484611c53565b611fcc848484846123dd565b61200b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200290613556565b60405180910390fd5b50505050565b6060600f805461202090613abf565b80601f016020809104026020016040519081016040528092919081815260200182805461204c90613abf565b80156120995780601f1061206e57610100808354040283529160200191612099565b820191906000526020600020905b81548152906001019060200180831161207c57829003601f168201915b5050505050905090565b606060008214156120eb576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506121ff565b600082905060005b6000821461211d57808061210690613b22565b915050600a82612116919061394a565b91506120f3565b60008167ffffffffffffffff81111561213957612138613c87565b5b6040519080825280601f01601f19166020018201604052801561216b5781602001600182028036833780820191505090505b5090505b600085146121f85760018261218491906139d5565b9150600a856121939190613b6b565b603061219f91906138f4565b60f81b8183815181106121b5576121b4613c58565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856121f1919061394a565b945061216f565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612279838383612574565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122bc576122b781612579565b6122fb565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146122fa576122f983826125c2565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561233e576123398161272f565b61237d565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461237c5761237b8282612800565b5b5b505050565b61238c838361287f565b61239960008484846123dd565b6123d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cf906134f6565b60405180910390fd5b505050565b60006123fe8473ffffffffffffffffffffffffffffffffffffffff16612a4d565b15612567578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612427611a48565b8786866040518563ffffffff1660e01b8152600401612449949392919061340b565b602060405180830381600087803b15801561246357600080fd5b505af192505050801561249457506040513d601f19601f820116820180604052508101906124919190612e69565b60015b612517573d80600081146124c4576040519150601f19603f3d011682016040523d82523d6000602084013e6124c9565b606091505b5060008151141561250f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250690613636565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061256c565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016125cf846110b6565b6125d991906139d5565b90506000600760008481526020019081526020016000205490508181146126be576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905061274391906139d5565b905060006009600084815260200190815260200160002054905060006008838154811061277357612772613c58565b5b90600052602060002001549050806008838154811061279557612794613c58565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806127e4576127e3613c29565b5b6001900381819060005260206000200160009055905550505050565b600061280b836110b6565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e690613656565b60405180910390fd5b6128f881611a50565b15612938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292f906135b6565b60405180910390fd5b6129446000838361226e565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461299491906138f4565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b828054612a6c90613abf565b90600052602060002090601f016020900481019282612a8e5760008555612ad5565b82601f10612aa757805160ff1916838001178555612ad5565b82800160010185558215612ad5579182015b82811115612ad4578251825591602001919060010190612ab9565b5b509050612ae29190612ae6565b5090565b5b80821115612aff576000816000905550600101612ae7565b5090565b6000612b16612b1184613816565b6137f1565b905082815260208101848484011115612b3257612b31613cbb565b5b612b3d848285613a7d565b509392505050565b6000612b58612b5384613847565b6137f1565b905082815260208101848484011115612b7457612b73613cbb565b5b612b7f848285613a7d565b509392505050565b600081359050612b9681614128565b92915050565b600081359050612bab8161413f565b92915050565b600081359050612bc081614156565b92915050565b600081519050612bd581614156565b92915050565b600082601f830112612bf057612bef613cb6565b5b8135612c00848260208601612b03565b91505092915050565b600082601f830112612c1e57612c1d613cb6565b5b8135612c2e848260208601612b45565b91505092915050565b600081359050612c468161416d565b92915050565b600060208284031215612c6257612c61613cc5565b5b6000612c7084828501612b87565b91505092915050565b60008060408385031215612c9057612c8f613cc5565b5b6000612c9e85828601612b87565b9250506020612caf85828601612b87565b9150509250929050565b600080600060608486031215612cd257612cd1613cc5565b5b6000612ce086828701612b87565b9350506020612cf186828701612b87565b9250506040612d0286828701612c37565b9150509250925092565b60008060008060808587031215612d2657612d25613cc5565b5b6000612d3487828801612b87565b9450506020612d4587828801612b87565b9350506040612d5687828801612c37565b925050606085013567ffffffffffffffff811115612d7757612d76613cc0565b5b612d8387828801612bdb565b91505092959194509250565b60008060408385031215612da657612da5613cc5565b5b6000612db485828601612b87565b9250506020612dc585828601612b9c565b9150509250929050565b60008060408385031215612de657612de5613cc5565b5b6000612df485828601612b87565b9250506020612e0585828601612c37565b9150509250929050565b600060208284031215612e2557612e24613cc5565b5b6000612e3384828501612b9c565b91505092915050565b600060208284031215612e5257612e51613cc5565b5b6000612e6084828501612bb1565b91505092915050565b600060208284031215612e7f57612e7e613cc5565b5b6000612e8d84828501612bc6565b91505092915050565b600060208284031215612eac57612eab613cc5565b5b600082013567ffffffffffffffff811115612eca57612ec9613cc0565b5b612ed684828501612c09565b91505092915050565b600060208284031215612ef557612ef4613cc5565b5b6000612f0384828501612c37565b91505092915050565b6000612f1883836133ae565b60208301905092915050565b612f2d81613a09565b82525050565b6000612f3e82613888565b612f4881856138b6565b9350612f5383613878565b8060005b83811015612f84578151612f6b8882612f0c565b9750612f76836138a9565b925050600181019050612f57565b5085935050505092915050565b612f9a81613a1b565b82525050565b6000612fab82613893565b612fb581856138c7565b9350612fc5818560208601613a8c565b612fce81613cca565b840191505092915050565b6000612fe48261389e565b612fee81856138d8565b9350612ffe818560208601613a8c565b61300781613cca565b840191505092915050565b600061301d8261389e565b61302781856138e9565b9350613037818560208601613a8c565b80840191505092915050565b60006130506003836138d8565b915061305b82613cdb565b602082019050919050565b60006130736003836138d8565b915061307e82613d04565b602082019050919050565b60006130966003836138d8565b91506130a182613d2d565b602082019050919050565b60006130b9602b836138d8565b91506130c482613d56565b604082019050919050565b60006130dc600f836138d8565b91506130e782613da5565b602082019050919050565b60006130ff6003836138d8565b915061310a82613dce565b602082019050919050565b60006131226003836138d8565b915061312d82613df7565b602082019050919050565b60006131456003836138d8565b915061315082613e20565b602082019050919050565b60006131686003836138d8565b915061317382613e49565b602082019050919050565b600061318b6003836138d8565b915061319682613e72565b602082019050919050565b60006131ae6003836138d8565b91506131b982613e9b565b602082019050919050565b60006131d16003836138d8565b91506131dc82613ec4565b602082019050919050565b60006131f46003836138d8565b91506131ff82613eed565b602082019050919050565b60006132176003836138d8565b915061322282613f16565b602082019050919050565b600061323a600d836138d8565b915061324582613f3f565b602082019050919050565b600061325d6003836138d8565b915061326882613f68565b602082019050919050565b6000613280600a836138d8565b915061328b82613f91565b602082019050919050565b60006132a36003836138d8565b91506132ae82613fba565b602082019050919050565b60006132c66003836138d8565b91506132d182613fe3565b602082019050919050565b60006132e96003836138d8565b91506132f48261400c565b602082019050919050565b600061330c6011836138d8565b915061331782614035565b602082019050919050565b600061332f602c836138d8565b915061333a8261405e565b604082019050919050565b60006133526003836138d8565b915061335d826140ad565b602082019050919050565b60006133756003836138d8565b9150613380826140d6565b602082019050919050565b60006133986003836138d8565b91506133a3826140ff565b602082019050919050565b6133b781613a73565b82525050565b6133c681613a73565b82525050565b60006133d88285613012565b91506133e48284613012565b91508190509392505050565b60006020820190506134056000830184612f24565b92915050565b60006080820190506134206000830187612f24565b61342d6020830186612f24565b61343a60408301856133bd565b818103606083015261344c8184612fa0565b905095945050505050565b600060208201905081810360008301526134718184612f33565b905092915050565b600060208201905061348e6000830184612f91565b92915050565b600060208201905081810360008301526134ae8184612fd9565b905092915050565b600060208201905081810360008301526134cf81613043565b9050919050565b600060208201905081810360008301526134ef81613066565b9050919050565b6000602082019050818103600083015261350f81613089565b9050919050565b6000602082019050818103600083015261352f816130ac565b9050919050565b6000602082019050818103600083015261354f816130cf565b9050919050565b6000602082019050818103600083015261356f816130f2565b9050919050565b6000602082019050818103600083015261358f81613115565b9050919050565b600060208201905081810360008301526135af81613138565b9050919050565b600060208201905081810360008301526135cf8161315b565b9050919050565b600060208201905081810360008301526135ef8161317e565b9050919050565b6000602082019050818103600083015261360f816131a1565b9050919050565b6000602082019050818103600083015261362f816131c4565b9050919050565b6000602082019050818103600083015261364f816131e7565b9050919050565b6000602082019050818103600083015261366f8161320a565b9050919050565b6000602082019050818103600083015261368f8161322d565b9050919050565b600060208201905081810360008301526136af81613250565b9050919050565b600060208201905081810360008301526136cf81613273565b9050919050565b600060208201905081810360008301526136ef81613296565b9050919050565b6000602082019050818103600083015261370f816132b9565b9050919050565b6000602082019050818103600083015261372f816132dc565b9050919050565b6000602082019050818103600083015261374f816132ff565b9050919050565b6000602082019050818103600083015261376f81613322565b9050919050565b6000602082019050818103600083015261378f81613345565b9050919050565b600060208201905081810360008301526137af81613368565b9050919050565b600060208201905081810360008301526137cf8161338b565b9050919050565b60006020820190506137eb60008301846133bd565b92915050565b60006137fb61380c565b90506138078282613af1565b919050565b6000604051905090565b600067ffffffffffffffff82111561383157613830613c87565b5b61383a82613cca565b9050602081019050919050565b600067ffffffffffffffff82111561386257613861613c87565b5b61386b82613cca565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006138ff82613a73565b915061390a83613a73565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561393f5761393e613b9c565b5b828201905092915050565b600061395582613a73565b915061396083613a73565b9250826139705761396f613bcb565b5b828204905092915050565b600061398682613a73565b915061399183613a73565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139ca576139c9613b9c565b5b828202905092915050565b60006139e082613a73565b91506139eb83613a73565b9250828210156139fe576139fd613b9c565b5b828203905092915050565b6000613a1482613a53565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613aaa578082015181840152602081019050613a8f565b83811115613ab9576000848401525b50505050565b60006002820490506001821680613ad757607f821691505b60208210811415613aeb57613aea613bfa565b5b50919050565b613afa82613cca565b810181811067ffffffffffffffff82111715613b1957613b18613c87565b5b80604052505050565b6000613b2d82613a73565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613b6057613b5f613b9c565b5b600182019050919050565b6000613b7682613a73565b9150613b8183613a73565b925082613b9157613b90613bcb565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f2334350000000000000000000000000000000000000000000000000000000000600082015250565b7f2334320000000000000000000000000000000000000000000000000000000000600082015250565b7f2335350000000000000000000000000000000000000000000000000000000000600082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f53616c65206e6f7420656e61626c650000000000000000000000000000000000600082015250565b7f2335330000000000000000000000000000000000000000000000000000000000600082015250565b7f2334380000000000000000000000000000000000000000000000000000000000600082015250565b7f2335300000000000000000000000000000000000000000000000000000000000600082015250565b7f2335370000000000000000000000000000000000000000000000000000000000600082015250565b7f2335380000000000000000000000000000000000000000000000000000000000600082015250565b7f2334390000000000000000000000000000000000000000000000000000000000600082015250565b7f2335310000000000000000000000000000000000000000000000000000000000600082015250565b7f2336300000000000000000000000000000000000000000000000000000000000600082015250565b7f2335360000000000000000000000000000000000000000000000000000000000600082015250565b7f45786365656473206c696d697400000000000000000000000000000000000000600082015250565b7f2334310000000000000000000000000000000000000000000000000000000000600082015250565b7f4578636565647320353000000000000000000000000000000000000000000000600082015250565b7f2334360000000000000000000000000000000000000000000000000000000000600082015250565b7f2334370000000000000000000000000000000000000000000000000000000000600082015250565b7f2335340000000000000000000000000000000000000000000000000000000000600082015250565b7f56616c75652062656c6f77207072696365000000000000000000000000000000600082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f2334340000000000000000000000000000000000000000000000000000000000600082015250565b7f2335320000000000000000000000000000000000000000000000000000000000600082015250565b7f2335390000000000000000000000000000000000000000000000000000000000600082015250565b61413181613a09565b811461413c57600080fd5b50565b61414881613a1b565b811461415357600080fd5b50565b61415f81613a27565b811461416a57600080fd5b50565b61417681613a73565b811461418157600080fd5b5056fea26469706673582212200a49224f2732d45eb473c7019aed6dca1d96661df883c0c57badae455336eee164736f6c63430008070033

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

0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001368747470733a2f2f6170692e3133662e696f2f00000000000000000000000000

-----Decoded View---------------
Arg [0] : baseURI (string): https://api.13f.io/

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000013
Arg [2] : 68747470733a2f2f6170692e3133662e696f2f00000000000000000000000000


Deployed Bytecode Sourcemap

38724:2277:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32597:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19792:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40206:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21132:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20745:321;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39102:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33250:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21959:259;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32918:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39427:544;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22289:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33440:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40452:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19524:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38780:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39983:210;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19293:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40562:344;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40914:81;;;:::i;:::-;;14209:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19961:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21384:273;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38872:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38987:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22511:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38816:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20136:316;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39208:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21728:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15528:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38948:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32597:237;32699:4;32738:35;32723:50;;;:11;:50;;;;:103;;;;32790:36;32814:11;32790:23;:36::i;:::-;32723:103;32716:110;;32597:237;;;:::o;19792:100::-;19846:13;19879:5;19872:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19792:100;:::o;40206:111::-;14440:12;:10;:12::i;:::-;14429:23;;:7;:5;:7::i;:::-;:23;;;14421:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;40296:13:::1;40281:12;:28;;;;40206:111:::0;:::o;21132:180::-;21208:7;21236:16;21244:7;21236;:16::i;:::-;21228:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;21280:15;:24;21296:7;21280:24;;;;;;;;;;;;;;;;;;;;;21273:31;;21132:180;;;:::o;20745:321::-;20826:13;20842:23;20857:7;20842:14;:23::i;:::-;20826:39;;20890:5;20884:11;;:2;:11;;;;20876:27;;;;;;;;;;;;:::i;:::-;;;;;;;;;20940:5;20924:21;;:12;:10;:12::i;:::-;:21;;;:69;;;;20949:44;20973:5;20980:12;:10;:12::i;:::-;20949:23;:44::i;:::-;20924:69;20916:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;21037:21;21046:2;21050:7;21037:8;:21::i;:::-;20815:251;20745:321;;:::o;39102:98::-;14440:12;:10;:12::i;:::-;14429:23;;:7;:5;:7::i;:::-;:23;;;14421:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;39182:10:::1;39170:9;:22;;;;39102:98:::0;:::o;33250:113::-;33311:7;33338:10;:17;;;;33331:24;;33250:113;:::o;21959:259::-;22120:41;22139:12;:10;:12::i;:::-;22153:7;22120:18;:41::i;:::-;22112:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;22182:28;22192:4;22198:2;22202:7;22182:9;:28::i;:::-;21959:259;;;:::o;32918:256::-;33015:7;33051:23;33068:5;33051:16;:23::i;:::-;33043:5;:31;33035:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;33140:12;:19;33153:5;33140:19;;;;;;;;;;;;;;;:26;33160:5;33140:26;;;;;;;;;;;;33133:33;;32918:256;;;;:::o;39427:544::-;39515:6;;;;;;;;;;;39501:20;;:10;:20;;;:34;;;;39525:10;;;;;;;;;;;39501:34;39493:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;39599:9;;39589:6;39574:13;:11;:13::i;:::-;:21;;;;:::i;:::-;:34;;39566:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;39655:2;39645:6;:12;;39637:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;39716:6;39704:9;;:18;;;;:::i;:::-;39691:9;:31;;:55;;;;39740:6;;;;;;;;;;;39726:20;;:10;:20;;;39691:55;39683:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;39792:6;39788:92;39808:6;39804:1;:10;39788:92;;;39835:29;39845:3;39850:13;:11;:13::i;:::-;39835:9;:29::i;:::-;39816:3;;;;;:::i;:::-;;;;39788:92;;;;39912:10;39904:28;;:59;39952:10;:8;:10::i;:::-;39943:6;39934;:15;;;;:::i;:::-;:28;;;;:::i;:::-;39904:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39427:544;;:::o;22289:151::-;22393:39;22410:4;22416:2;22420:7;22393:39;;;;;;;;;;;;:16;:39::i;:::-;22289:151;;;:::o;33440:233::-;33515:7;33551:30;:28;:30::i;:::-;33543:5;:38;33535:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;33648:10;33659:5;33648:17;;;;;;;;:::i;:::-;;;;;;;;;;33641:24;;33440:233;;;:::o;40452:102::-;14440:12;:10;:12::i;:::-;14429:23;;:7;:5;:7::i;:::-;:23;;;14421:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;40539:7:::1;40523:13;:23;;;;;;;;;;;;:::i;:::-;;40452:102:::0;:::o;19524:201::-;19596:7;19616:13;19632:7;:16;19640:7;19632:16;;;;;;;;;;;;;;;;;;;;;19616:32;;19684:1;19667:19;;:5;:19;;;;19659:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;19712:5;19705:12;;;19524:201;;;:::o;38780:29::-;;;;:::o;39983:210::-;40031:4;40066:12;;40051:11;:27;40047:130;;;40102:12;;40094:20;;;;40047:130;40154:11;40147:18;;39983:210;;:::o;19293:169::-;19365:7;19410:1;19393:19;;:5;:19;;;;19385:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;19438:9;:16;19448:5;19438:16;;;;;;;;;;;;;;;;19431:23;;19293:169;;;:::o;40562:344::-;40623:16;40652:15;40670:17;40680:6;40670:9;:17::i;:::-;40652:35;;40700:25;40742:10;40728:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40700:53;;40768:6;40764:107;40784:10;40780:1;:14;40764:107;;;40829:30;40849:6;40857:1;40829:19;:30::i;:::-;40815:8;40824:1;40815:11;;;;;;;;:::i;:::-;;;;;;;:44;;;;;40796:3;;;;;:::i;:::-;;;;40764:107;;;;40890:8;40883:15;;;;40562:344;;;:::o;40914:81::-;14440:12;:10;:12::i;:::-;14429:23;;:7;:5;:7::i;:::-;:23;;;14421:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;40973:14:::1;:12;:14::i;:::-;40914:81::o:0;14209:87::-;14255:7;14282:6;;;;;;;;;;;14275:13;;14209:87;:::o;19961:104::-;20017:13;20050:7;20043:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19961:104;:::o;21384:273::-;21499:12;:10;:12::i;:::-;21487:24;;:8;:24;;;;21479:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;21577:8;21532:18;:32;21551:12;:10;:12::i;:::-;21532:32;;;;;;;;;;;;;;;:42;21565:8;21532:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;21630:8;21601:48;;21616:12;:10;:12::i;:::-;21601:48;;;21640:8;21601:48;;;;;;:::i;:::-;;;;;;;;21384:273;;:::o;38872:37::-;;;;:::o;38987:103::-;14440:12;:10;:12::i;:::-;14429:23;;:7;:5;:7::i;:::-;:23;;;14421:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;39071:11:::1;39058:10;;:24;;;;;;;;;;;;;;;;;;38987:103:::0;:::o;22511:239::-;22643:41;22662:12;:10;:12::i;:::-;22676:7;22643:18;:41::i;:::-;22635:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;22703:39;22717:4;22723:2;22727:7;22736:5;22703:13;:39::i;:::-;22511:239;;;;:::o;38816:35::-;;;;:::o;20136:316::-;20209:13;20243:16;20251:7;20243;:16::i;:::-;20235:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;20280:21;20304:10;:8;:10::i;:::-;20280:34;;20356:1;20338:7;20332:21;:25;:112;;;;;;;;;;;;;;;;;20397:7;20406:18;:7;:16;:18::i;:::-;20380:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20332:112;20325:119;;;20136:316;;;:::o;39208:99::-;14440:12;:10;:12::i;:::-;14429:23;;:7;:5;:7::i;:::-;:23;;;14421:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;39289:10:::1;39277:9;:22;;;;39208:99:::0;:::o;21728:164::-;21825:4;21849:18;:25;21868:5;21849:25;;;;;;;;;;;;;;;:35;21875:8;21849:35;;;;;;;;;;;;;;;;;;;;;;;;;21842:42;;21728:164;;;;:::o;15528:209::-;14440:12;:10;:12::i;:::-;14429:23;;:7;:5;:7::i;:::-;:23;;;14421:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;15637:1:::1;15617:22;;:8;:22;;;;15609:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15692:8;15663:38;;15684:6;;;;;;;;;;;15663:38;;;;;;;;;;;;15721:8;15712:6;;:17;;;;;;;;;;;;;;;;;;15528:209:::0;:::o;38948:30::-;;;;;;;;;;;;;:::o;18937:292::-;19039:4;19078:25;19063:40;;;:11;:40;;;;:105;;;;19135:33;19120:48;;;:11;:48;;;;19063:105;:158;;;;19185:36;19209:11;19185:23;:36::i;:::-;19063:158;19056:165;;18937:292;;;:::o;4977:98::-;5030:7;5057:10;5050:17;;4977:98;:::o;24170:127::-;24235:4;24287:1;24259:30;;:7;:16;24267:7;24259:16;;;;;;;;;;;;;;;;;;;;;:30;;;;24252:37;;24170:127;;;:::o;27841:174::-;27943:2;27916:15;:24;27932:7;27916:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;27999:7;27995:2;27961:46;;27970:23;27985:7;27970:14;:23::i;:::-;27961:46;;;;;;;;;;;;27841:174;;:::o;24464:314::-;24557:4;24582:16;24590:7;24582;:16::i;:::-;24574:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;24617:13;24633:23;24648:7;24633:14;:23::i;:::-;24617:39;;24686:5;24675:16;;:7;:16;;;:51;;;;24719:7;24695:31;;:20;24707:7;24695:11;:20::i;:::-;:31;;;24675:51;:94;;;;24730:39;24754:5;24761:7;24730:23;:39::i;:::-;24675:94;24667:103;;;24464:314;;;;:::o;27250:473::-;27375:4;27348:31;;:23;27363:7;27348:14;:23::i;:::-;:31;;;27340:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;27420:1;27406:16;;:2;:16;;;;27398:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;27443:39;27464:4;27470:2;27474:7;27443:20;:39::i;:::-;27547:29;27564:1;27568:7;27547:8;:29::i;:::-;27608:1;27589:9;:15;27599:4;27589:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;27637:1;27620:9;:13;27630:2;27620:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;27668:2;27649:7;:16;27657:7;27649:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;27707:7;27703:2;27688:27;;27697:4;27688:27;;;;;;;;;;;;27250:473;;;:::o;25120:110::-;25196:26;25206:2;25210:7;25196:26;;;;;;;;;;;;:9;:26::i;:::-;25120:110;;:::o;15086:273::-;15138:18;15184:3;15181:2;15159:21;:24;;;;:::i;:::-;:28;;;;:::i;:::-;15138:49;;15197:20;15242:10;15220:21;:32;;;;:::i;:::-;15197:55;;15270:3;;;;;;;;;;;15262:21;;:33;15284:10;15262:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15313:12;:10;:12::i;:::-;15305:30;;:44;15336:12;15305:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15128:231;;15086:273::o;23632:225::-;23746:28;23756:4;23762:2;23766:7;23746:9;:28::i;:::-;23793:48;23816:4;23822:2;23826:7;23835:5;23793:22;:48::i;:::-;23785:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23632:225;;;;:::o;40326:114::-;40386:13;40419;40412:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40326:114;:::o;15972:723::-;16028:13;16258:1;16249:5;:10;16245:53;;;16276:10;;;;;;;;;;;;;;;;;;;;;16245:53;16308:12;16323:5;16308:20;;16339:14;16364:78;16379:1;16371:4;:9;16364:78;;16397:8;;;;;:::i;:::-;;;;16428:2;16420:10;;;;;:::i;:::-;;;16364:78;;;16452:19;16484:6;16474:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16452:39;;16502:154;16518:1;16509:5;:10;16502:154;;16546:1;16536:11;;;;;:::i;:::-;;;16613:2;16605:5;:10;;;;:::i;:::-;16592:2;:24;;;;:::i;:::-;16579:39;;16562:6;16569;16562:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;16642:2;16633:11;;;;;:::i;:::-;;;16502:154;;;16680:6;16666:21;;;;;15972:723;;;;:::o;6025:157::-;6110:4;6149:25;6134:40;;;:11;:40;;;;6127:47;;6025:157;;;:::o;34286:555::-;34396:45;34423:4;34429:2;34433:7;34396:26;:45::i;:::-;34474:1;34458:18;;:4;:18;;;34454:187;;;34493:40;34525:7;34493:31;:40::i;:::-;34454:187;;;34563:2;34555:10;;:4;:10;;;34551:90;;34582:47;34615:4;34621:7;34582:32;:47::i;:::-;34551:90;34454:187;34669:1;34655:16;;:2;:16;;;34651:183;;;34688:45;34725:7;34688:36;:45::i;:::-;34651:183;;;34761:4;34755:10;;:2;:10;;;34751:83;;34782:40;34810:2;34814:7;34782:27;:40::i;:::-;34751:83;34651:183;34286:555;;;:::o;25457:203::-;25553:18;25559:2;25563:7;25553:5;:18::i;:::-;25590:54;25621:1;25625:2;25629:7;25638:5;25590:22;:54::i;:::-;25582:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;25457:203;;;:::o;28580:796::-;28701:4;28727:15;:2;:13;;;:15::i;:::-;28723:646;;;28779:2;28763:36;;;28800:12;:10;:12::i;:::-;28814:4;28820:7;28829:5;28763:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;28759:555;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29026:1;29009:6;:13;:18;29005:294;;;29052:13;;;;;;;;;;:::i;:::-;;;;;;;;29005:294;29249:6;29243:13;29234:6;29230:2;29226:15;29219:38;28759:555;28896:45;;;28886:55;;;:6;:55;;;;28879:62;;;;;28723:646;29353:4;29346:11;;28580:796;;;;;;;:::o;29989:93::-;;;;:::o;35564:164::-;35668:10;:17;;;;35641:15;:24;35657:7;35641:24;;;;;;;;;;;:44;;;;35696:10;35712:7;35696:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35564:164;:::o;36355:988::-;36621:22;36671:1;36646:22;36663:4;36646:16;:22::i;:::-;:26;;;;:::i;:::-;36621:51;;36683:18;36704:17;:26;36722:7;36704:26;;;;;;;;;;;;36683:47;;36851:14;36837:10;:28;36833:328;;36882:19;36904:12;:18;36917:4;36904:18;;;;;;;;;;;;;;;:34;36923:14;36904:34;;;;;;;;;;;;36882:56;;36988:11;36955:12;:18;36968:4;36955:18;;;;;;;;;;;;;;;:30;36974:10;36955:30;;;;;;;;;;;:44;;;;37105:10;37072:17;:30;37090:11;37072:30;;;;;;;;;;;:43;;;;36867:294;36833:328;37257:17;:26;37275:7;37257:26;;;;;;;;;;;37250:33;;;37301:12;:18;37314:4;37301:18;;;;;;;;;;;;;;;:34;37320:14;37301:34;;;;;;;;;;;37294:41;;;36436:907;;36355:988;;:::o;37638:1079::-;37891:22;37936:1;37916:10;:17;;;;:21;;;;:::i;:::-;37891:46;;37948:18;37969:15;:24;37985:7;37969:24;;;;;;;;;;;;37948:45;;38320:19;38342:10;38353:14;38342:26;;;;;;;;:::i;:::-;;;;;;;;;;38320:48;;38406:11;38381:10;38392;38381:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;38517:10;38486:15;:28;38502:11;38486:28;;;;;;;;;;;:41;;;;38658:15;:24;38674:7;38658:24;;;;;;;;;;;38651:31;;;38693:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;37709:1008;;;37638:1079;:::o;35142:221::-;35227:14;35244:20;35261:2;35244:16;:20::i;:::-;35227:37;;35302:7;35275:12;:16;35288:2;35275:16;;;;;;;;;;;;;;;:24;35292:6;35275:24;;;;;;;;;;;:34;;;;35349:6;35320:17;:26;35338:7;35320:26;;;;;;;;;;;:35;;;;35216:147;35142:221;;:::o;25996:328::-;26090:1;26076:16;;:2;:16;;;;26068:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;26120:16;26128:7;26120;:16::i;:::-;26119:17;26111:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;26157:45;26186:1;26190:2;26194:7;26157:20;:45::i;:::-;26232:1;26215:9;:13;26225:2;26215:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;26263:2;26244:7;:16;26252:7;26244:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;26308:7;26304:2;26283:33;;26300:1;26283:33;;;;;;;;;;;;25996:328;;:::o;160:239::-;220:4;245:12;356:7;344:20;336:28;;390:1;383:4;:8;376:15;;;160:239;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:412::-;501:5;526:66;542:49;584:6;542:49;:::i;:::-;526:66;:::i;:::-;517:75;;615:6;608:5;601:21;653:4;646:5;642:16;691:3;682:6;677:3;673:16;670:25;667:112;;;698:79;;:::i;:::-;667:112;788:41;822:6;817:3;812;788:41;:::i;:::-;507:328;423:412;;;;;:::o;841:139::-;887:5;925:6;912:20;903:29;;941:33;968:5;941:33;:::i;:::-;841:139;;;;:::o;986:133::-;1029:5;1067:6;1054:20;1045:29;;1083:30;1107:5;1083:30;:::i;:::-;986:133;;;;:::o;1125:137::-;1170:5;1208:6;1195:20;1186:29;;1224:32;1250:5;1224:32;:::i;:::-;1125:137;;;;:::o;1268:141::-;1324:5;1355:6;1349:13;1340:22;;1371:32;1397:5;1371:32;:::i;:::-;1268:141;;;;:::o;1428:338::-;1483:5;1532:3;1525:4;1517:6;1513:17;1509:27;1499:122;;1540:79;;:::i;:::-;1499:122;1657:6;1644:20;1682:78;1756:3;1748:6;1741:4;1733:6;1729:17;1682:78;:::i;:::-;1673:87;;1489:277;1428:338;;;;:::o;1786:340::-;1842:5;1891:3;1884:4;1876:6;1872:17;1868:27;1858:122;;1899:79;;:::i;:::-;1858:122;2016:6;2003:20;2041:79;2116:3;2108:6;2101:4;2093:6;2089:17;2041:79;:::i;:::-;2032:88;;1848:278;1786:340;;;;:::o;2132:139::-;2178:5;2216:6;2203:20;2194:29;;2232:33;2259:5;2232:33;:::i;:::-;2132:139;;;;:::o;2277:329::-;2336:6;2385:2;2373:9;2364:7;2360:23;2356:32;2353:119;;;2391:79;;:::i;:::-;2353:119;2511:1;2536:53;2581:7;2572:6;2561:9;2557:22;2536:53;:::i;:::-;2526:63;;2482:117;2277:329;;;;:::o;2612:474::-;2680:6;2688;2737:2;2725:9;2716:7;2712:23;2708:32;2705:119;;;2743:79;;:::i;:::-;2705:119;2863:1;2888:53;2933:7;2924:6;2913:9;2909:22;2888:53;:::i;:::-;2878:63;;2834:117;2990:2;3016:53;3061:7;3052:6;3041:9;3037:22;3016:53;:::i;:::-;3006:63;;2961:118;2612:474;;;;;:::o;3092:619::-;3169:6;3177;3185;3234:2;3222:9;3213:7;3209:23;3205:32;3202:119;;;3240:79;;:::i;:::-;3202:119;3360:1;3385:53;3430:7;3421:6;3410:9;3406:22;3385:53;:::i;:::-;3375:63;;3331:117;3487:2;3513:53;3558:7;3549:6;3538:9;3534:22;3513:53;:::i;:::-;3503:63;;3458:118;3615:2;3641:53;3686:7;3677:6;3666:9;3662:22;3641:53;:::i;:::-;3631:63;;3586:118;3092:619;;;;;:::o;3717:943::-;3812:6;3820;3828;3836;3885:3;3873:9;3864:7;3860:23;3856:33;3853:120;;;3892:79;;:::i;:::-;3853:120;4012:1;4037:53;4082:7;4073:6;4062:9;4058:22;4037:53;:::i;:::-;4027:63;;3983:117;4139:2;4165:53;4210:7;4201:6;4190:9;4186:22;4165:53;:::i;:::-;4155:63;;4110:118;4267:2;4293:53;4338:7;4329:6;4318:9;4314:22;4293:53;:::i;:::-;4283:63;;4238:118;4423:2;4412:9;4408:18;4395:32;4454:18;4446:6;4443:30;4440:117;;;4476:79;;:::i;:::-;4440:117;4581:62;4635:7;4626:6;4615:9;4611:22;4581:62;:::i;:::-;4571:72;;4366:287;3717:943;;;;;;;:::o;4666:468::-;4731:6;4739;4788:2;4776:9;4767:7;4763:23;4759:32;4756:119;;;4794:79;;:::i;:::-;4756:119;4914:1;4939:53;4984:7;4975:6;4964:9;4960:22;4939:53;:::i;:::-;4929:63;;4885:117;5041:2;5067:50;5109:7;5100:6;5089:9;5085:22;5067:50;:::i;:::-;5057:60;;5012:115;4666:468;;;;;:::o;5140:474::-;5208:6;5216;5265:2;5253:9;5244:7;5240:23;5236:32;5233:119;;;5271:79;;:::i;:::-;5233:119;5391:1;5416:53;5461:7;5452:6;5441:9;5437:22;5416:53;:::i;:::-;5406:63;;5362:117;5518:2;5544:53;5589:7;5580:6;5569:9;5565:22;5544:53;:::i;:::-;5534:63;;5489:118;5140:474;;;;;:::o;5620:323::-;5676:6;5725:2;5713:9;5704:7;5700:23;5696:32;5693:119;;;5731:79;;:::i;:::-;5693:119;5851:1;5876:50;5918:7;5909:6;5898:9;5894:22;5876:50;:::i;:::-;5866:60;;5822:114;5620:323;;;;:::o;5949:327::-;6007:6;6056:2;6044:9;6035:7;6031:23;6027:32;6024:119;;;6062:79;;:::i;:::-;6024:119;6182:1;6207:52;6251:7;6242:6;6231:9;6227:22;6207:52;:::i;:::-;6197:62;;6153:116;5949:327;;;;:::o;6282:349::-;6351:6;6400:2;6388:9;6379:7;6375:23;6371:32;6368:119;;;6406:79;;:::i;:::-;6368:119;6526:1;6551:63;6606:7;6597:6;6586:9;6582:22;6551:63;:::i;:::-;6541:73;;6497:127;6282:349;;;;:::o;6637:509::-;6706:6;6755:2;6743:9;6734:7;6730:23;6726:32;6723:119;;;6761:79;;:::i;:::-;6723:119;6909:1;6898:9;6894:17;6881:31;6939:18;6931:6;6928:30;6925:117;;;6961:79;;:::i;:::-;6925:117;7066:63;7121:7;7112:6;7101:9;7097:22;7066:63;:::i;:::-;7056:73;;6852:287;6637:509;;;;:::o;7152:329::-;7211:6;7260:2;7248:9;7239:7;7235:23;7231:32;7228:119;;;7266:79;;:::i;:::-;7228:119;7386:1;7411:53;7456:7;7447:6;7436:9;7432:22;7411:53;:::i;:::-;7401:63;;7357:117;7152:329;;;;:::o;7487:179::-;7556:10;7577:46;7619:3;7611:6;7577:46;:::i;:::-;7655:4;7650:3;7646:14;7632:28;;7487:179;;;;:::o;7672:118::-;7759:24;7777:5;7759:24;:::i;:::-;7754:3;7747:37;7672:118;;:::o;7826:732::-;7945:3;7974:54;8022:5;7974:54;:::i;:::-;8044:86;8123:6;8118:3;8044:86;:::i;:::-;8037:93;;8154:56;8204:5;8154:56;:::i;:::-;8233:7;8264:1;8249:284;8274:6;8271:1;8268:13;8249:284;;;8350:6;8344:13;8377:63;8436:3;8421:13;8377:63;:::i;:::-;8370:70;;8463:60;8516:6;8463:60;:::i;:::-;8453:70;;8309:224;8296:1;8293;8289:9;8284:14;;8249:284;;;8253:14;8549:3;8542:10;;7950:608;;;7826:732;;;;:::o;8564:109::-;8645:21;8660:5;8645:21;:::i;:::-;8640:3;8633:34;8564:109;;:::o;8679:360::-;8765:3;8793:38;8825:5;8793:38;:::i;:::-;8847:70;8910:6;8905:3;8847:70;:::i;:::-;8840:77;;8926:52;8971:6;8966:3;8959:4;8952:5;8948:16;8926:52;:::i;:::-;9003:29;9025:6;9003:29;:::i;:::-;8998:3;8994:39;8987:46;;8769:270;8679:360;;;;:::o;9045:364::-;9133:3;9161:39;9194:5;9161:39;:::i;:::-;9216:71;9280:6;9275:3;9216:71;:::i;:::-;9209:78;;9296:52;9341:6;9336:3;9329:4;9322:5;9318:16;9296:52;:::i;:::-;9373:29;9395:6;9373:29;:::i;:::-;9368:3;9364:39;9357:46;;9137:272;9045:364;;;;:::o;9415:377::-;9521:3;9549:39;9582:5;9549:39;:::i;:::-;9604:89;9686:6;9681:3;9604:89;:::i;:::-;9597:96;;9702:52;9747:6;9742:3;9735:4;9728:5;9724:16;9702:52;:::i;:::-;9779:6;9774:3;9770:16;9763:23;;9525:267;9415:377;;;;:::o;9798:365::-;9940:3;9961:66;10025:1;10020:3;9961:66;:::i;:::-;9954:73;;10036:93;10125:3;10036:93;:::i;:::-;10154:2;10149:3;10145:12;10138:19;;9798:365;;;:::o;10169:::-;10311:3;10332:66;10396:1;10391:3;10332:66;:::i;:::-;10325:73;;10407:93;10496:3;10407:93;:::i;:::-;10525:2;10520:3;10516:12;10509:19;;10169:365;;;:::o;10540:::-;10682:3;10703:66;10767:1;10762:3;10703:66;:::i;:::-;10696:73;;10778:93;10867:3;10778:93;:::i;:::-;10896:2;10891:3;10887:12;10880:19;;10540:365;;;:::o;10911:366::-;11053:3;11074:67;11138:2;11133:3;11074:67;:::i;:::-;11067:74;;11150:93;11239:3;11150:93;:::i;:::-;11268:2;11263:3;11259:12;11252:19;;10911:366;;;:::o;11283:::-;11425:3;11446:67;11510:2;11505:3;11446:67;:::i;:::-;11439:74;;11522:93;11611:3;11522:93;:::i;:::-;11640:2;11635:3;11631:12;11624:19;;11283:366;;;:::o;11655:365::-;11797:3;11818:66;11882:1;11877:3;11818:66;:::i;:::-;11811:73;;11893:93;11982:3;11893:93;:::i;:::-;12011:2;12006:3;12002:12;11995:19;;11655:365;;;:::o;12026:::-;12168:3;12189:66;12253:1;12248:3;12189:66;:::i;:::-;12182:73;;12264:93;12353:3;12264:93;:::i;:::-;12382:2;12377:3;12373:12;12366:19;;12026:365;;;:::o;12397:::-;12539:3;12560:66;12624:1;12619:3;12560:66;:::i;:::-;12553:73;;12635:93;12724:3;12635:93;:::i;:::-;12753:2;12748:3;12744:12;12737:19;;12397:365;;;:::o;12768:::-;12910:3;12931:66;12995:1;12990:3;12931:66;:::i;:::-;12924:73;;13006:93;13095:3;13006:93;:::i;:::-;13124:2;13119:3;13115:12;13108:19;;12768:365;;;:::o;13139:::-;13281:3;13302:66;13366:1;13361:3;13302:66;:::i;:::-;13295:73;;13377:93;13466:3;13377:93;:::i;:::-;13495:2;13490:3;13486:12;13479:19;;13139:365;;;:::o;13510:::-;13652:3;13673:66;13737:1;13732:3;13673:66;:::i;:::-;13666:73;;13748:93;13837:3;13748:93;:::i;:::-;13866:2;13861:3;13857:12;13850:19;;13510:365;;;:::o;13881:::-;14023:3;14044:66;14108:1;14103:3;14044:66;:::i;:::-;14037:73;;14119:93;14208:3;14119:93;:::i;:::-;14237:2;14232:3;14228:12;14221:19;;13881:365;;;:::o;14252:::-;14394:3;14415:66;14479:1;14474:3;14415:66;:::i;:::-;14408:73;;14490:93;14579:3;14490:93;:::i;:::-;14608:2;14603:3;14599:12;14592:19;;14252:365;;;:::o;14623:::-;14765:3;14786:66;14850:1;14845:3;14786:66;:::i;:::-;14779:73;;14861:93;14950:3;14861:93;:::i;:::-;14979:2;14974:3;14970:12;14963:19;;14623:365;;;:::o;14994:366::-;15136:3;15157:67;15221:2;15216:3;15157:67;:::i;:::-;15150:74;;15233:93;15322:3;15233:93;:::i;:::-;15351:2;15346:3;15342:12;15335:19;;14994:366;;;:::o;15366:365::-;15508:3;15529:66;15593:1;15588:3;15529:66;:::i;:::-;15522:73;;15604:93;15693:3;15604:93;:::i;:::-;15722:2;15717:3;15713:12;15706:19;;15366:365;;;:::o;15737:366::-;15879:3;15900:67;15964:2;15959:3;15900:67;:::i;:::-;15893:74;;15976:93;16065:3;15976:93;:::i;:::-;16094:2;16089:3;16085:12;16078:19;;15737:366;;;:::o;16109:365::-;16251:3;16272:66;16336:1;16331:3;16272:66;:::i;:::-;16265:73;;16347:93;16436:3;16347:93;:::i;:::-;16465:2;16460:3;16456:12;16449:19;;16109:365;;;:::o;16480:::-;16622:3;16643:66;16707:1;16702:3;16643:66;:::i;:::-;16636:73;;16718:93;16807:3;16718:93;:::i;:::-;16836:2;16831:3;16827:12;16820:19;;16480:365;;;:::o;16851:::-;16993:3;17014:66;17078:1;17073:3;17014:66;:::i;:::-;17007:73;;17089:93;17178:3;17089:93;:::i;:::-;17207:2;17202:3;17198:12;17191:19;;16851:365;;;:::o;17222:366::-;17364:3;17385:67;17449:2;17444:3;17385:67;:::i;:::-;17378:74;;17461:93;17550:3;17461:93;:::i;:::-;17579:2;17574:3;17570:12;17563:19;;17222:366;;;:::o;17594:::-;17736:3;17757:67;17821:2;17816:3;17757:67;:::i;:::-;17750:74;;17833:93;17922:3;17833:93;:::i;:::-;17951:2;17946:3;17942:12;17935:19;;17594:366;;;:::o;17966:365::-;18108:3;18129:66;18193:1;18188:3;18129:66;:::i;:::-;18122:73;;18204:93;18293:3;18204:93;:::i;:::-;18322:2;18317:3;18313:12;18306:19;;17966:365;;;:::o;18337:::-;18479:3;18500:66;18564:1;18559:3;18500:66;:::i;:::-;18493:73;;18575:93;18664:3;18575:93;:::i;:::-;18693:2;18688:3;18684:12;18677:19;;18337:365;;;:::o;18708:::-;18850:3;18871:66;18935:1;18930:3;18871:66;:::i;:::-;18864:73;;18946:93;19035:3;18946:93;:::i;:::-;19064:2;19059:3;19055:12;19048:19;;18708:365;;;:::o;19079:108::-;19156:24;19174:5;19156:24;:::i;:::-;19151:3;19144:37;19079:108;;:::o;19193:118::-;19280:24;19298:5;19280:24;:::i;:::-;19275:3;19268:37;19193:118;;:::o;19317:435::-;19497:3;19519:95;19610:3;19601:6;19519:95;:::i;:::-;19512:102;;19631:95;19722:3;19713:6;19631:95;:::i;:::-;19624:102;;19743:3;19736:10;;19317:435;;;;;:::o;19758:222::-;19851:4;19889:2;19878:9;19874:18;19866:26;;19902:71;19970:1;19959:9;19955:17;19946:6;19902:71;:::i;:::-;19758:222;;;;:::o;19986:640::-;20181:4;20219:3;20208:9;20204:19;20196:27;;20233:71;20301:1;20290:9;20286:17;20277:6;20233:71;:::i;:::-;20314:72;20382:2;20371:9;20367:18;20358:6;20314:72;:::i;:::-;20396;20464:2;20453:9;20449:18;20440:6;20396:72;:::i;:::-;20515:9;20509:4;20505:20;20500:2;20489:9;20485:18;20478:48;20543:76;20614:4;20605:6;20543:76;:::i;:::-;20535:84;;19986:640;;;;;;;:::o;20632:373::-;20775:4;20813:2;20802:9;20798:18;20790:26;;20862:9;20856:4;20852:20;20848:1;20837:9;20833:17;20826:47;20890:108;20993:4;20984:6;20890:108;:::i;:::-;20882:116;;20632:373;;;;:::o;21011:210::-;21098:4;21136:2;21125:9;21121:18;21113:26;;21149:65;21211:1;21200:9;21196:17;21187:6;21149:65;:::i;:::-;21011:210;;;;:::o;21227:313::-;21340:4;21378:2;21367:9;21363:18;21355:26;;21427:9;21421:4;21417:20;21413:1;21402:9;21398:17;21391:47;21455:78;21528:4;21519:6;21455:78;:::i;:::-;21447:86;;21227:313;;;;:::o;21546:419::-;21712:4;21750:2;21739:9;21735:18;21727:26;;21799:9;21793:4;21789:20;21785:1;21774:9;21770:17;21763:47;21827:131;21953:4;21827:131;:::i;:::-;21819:139;;21546:419;;;:::o;21971:::-;22137:4;22175:2;22164:9;22160:18;22152:26;;22224:9;22218:4;22214:20;22210:1;22199:9;22195:17;22188:47;22252:131;22378:4;22252:131;:::i;:::-;22244:139;;21971:419;;;:::o;22396:::-;22562:4;22600:2;22589:9;22585:18;22577:26;;22649:9;22643:4;22639:20;22635:1;22624:9;22620:17;22613:47;22677:131;22803:4;22677:131;:::i;:::-;22669:139;;22396:419;;;:::o;22821:::-;22987:4;23025:2;23014:9;23010:18;23002:26;;23074:9;23068:4;23064:20;23060:1;23049:9;23045:17;23038:47;23102:131;23228:4;23102:131;:::i;:::-;23094:139;;22821:419;;;:::o;23246:::-;23412:4;23450:2;23439:9;23435:18;23427:26;;23499:9;23493:4;23489:20;23485:1;23474:9;23470:17;23463:47;23527:131;23653:4;23527:131;:::i;:::-;23519:139;;23246:419;;;:::o;23671:::-;23837:4;23875:2;23864:9;23860:18;23852:26;;23924:9;23918:4;23914:20;23910:1;23899:9;23895:17;23888:47;23952:131;24078:4;23952:131;:::i;:::-;23944:139;;23671:419;;;:::o;24096:::-;24262:4;24300:2;24289:9;24285:18;24277:26;;24349:9;24343:4;24339:20;24335:1;24324:9;24320:17;24313:47;24377:131;24503:4;24377:131;:::i;:::-;24369:139;;24096:419;;;:::o;24521:::-;24687:4;24725:2;24714:9;24710:18;24702:26;;24774:9;24768:4;24764:20;24760:1;24749:9;24745:17;24738:47;24802:131;24928:4;24802:131;:::i;:::-;24794:139;;24521:419;;;:::o;24946:::-;25112:4;25150:2;25139:9;25135:18;25127:26;;25199:9;25193:4;25189:20;25185:1;25174:9;25170:17;25163:47;25227:131;25353:4;25227:131;:::i;:::-;25219:139;;24946:419;;;:::o;25371:::-;25537:4;25575:2;25564:9;25560:18;25552:26;;25624:9;25618:4;25614:20;25610:1;25599:9;25595:17;25588:47;25652:131;25778:4;25652:131;:::i;:::-;25644:139;;25371:419;;;:::o;25796:::-;25962:4;26000:2;25989:9;25985:18;25977:26;;26049:9;26043:4;26039:20;26035:1;26024:9;26020:17;26013:47;26077:131;26203:4;26077:131;:::i;:::-;26069:139;;25796:419;;;:::o;26221:::-;26387:4;26425:2;26414:9;26410:18;26402:26;;26474:9;26468:4;26464:20;26460:1;26449:9;26445:17;26438:47;26502:131;26628:4;26502:131;:::i;:::-;26494:139;;26221:419;;;:::o;26646:::-;26812:4;26850:2;26839:9;26835:18;26827:26;;26899:9;26893:4;26889:20;26885:1;26874:9;26870:17;26863:47;26927:131;27053:4;26927:131;:::i;:::-;26919:139;;26646:419;;;:::o;27071:::-;27237:4;27275:2;27264:9;27260:18;27252:26;;27324:9;27318:4;27314:20;27310:1;27299:9;27295:17;27288:47;27352:131;27478:4;27352:131;:::i;:::-;27344:139;;27071:419;;;:::o;27496:::-;27662:4;27700:2;27689:9;27685:18;27677:26;;27749:9;27743:4;27739:20;27735:1;27724:9;27720:17;27713:47;27777:131;27903:4;27777:131;:::i;:::-;27769:139;;27496:419;;;:::o;27921:::-;28087:4;28125:2;28114:9;28110:18;28102:26;;28174:9;28168:4;28164:20;28160:1;28149:9;28145:17;28138:47;28202:131;28328:4;28202:131;:::i;:::-;28194:139;;27921:419;;;:::o;28346:::-;28512:4;28550:2;28539:9;28535:18;28527:26;;28599:9;28593:4;28589:20;28585:1;28574:9;28570:17;28563:47;28627:131;28753:4;28627:131;:::i;:::-;28619:139;;28346:419;;;:::o;28771:::-;28937:4;28975:2;28964:9;28960:18;28952:26;;29024:9;29018:4;29014:20;29010:1;28999:9;28995:17;28988:47;29052:131;29178:4;29052:131;:::i;:::-;29044:139;;28771:419;;;:::o;29196:::-;29362:4;29400:2;29389:9;29385:18;29377:26;;29449:9;29443:4;29439:20;29435:1;29424:9;29420:17;29413:47;29477:131;29603:4;29477:131;:::i;:::-;29469:139;;29196:419;;;:::o;29621:::-;29787:4;29825:2;29814:9;29810:18;29802:26;;29874:9;29868:4;29864:20;29860:1;29849:9;29845:17;29838:47;29902:131;30028:4;29902:131;:::i;:::-;29894:139;;29621:419;;;:::o;30046:::-;30212:4;30250:2;30239:9;30235:18;30227:26;;30299:9;30293:4;30289:20;30285:1;30274:9;30270:17;30263:47;30327:131;30453:4;30327:131;:::i;:::-;30319:139;;30046:419;;;:::o;30471:::-;30637:4;30675:2;30664:9;30660:18;30652:26;;30724:9;30718:4;30714:20;30710:1;30699:9;30695:17;30688:47;30752:131;30878:4;30752:131;:::i;:::-;30744:139;;30471:419;;;:::o;30896:::-;31062:4;31100:2;31089:9;31085:18;31077:26;;31149:9;31143:4;31139:20;31135:1;31124:9;31120:17;31113:47;31177:131;31303:4;31177:131;:::i;:::-;31169:139;;30896:419;;;:::o;31321:::-;31487:4;31525:2;31514:9;31510:18;31502:26;;31574:9;31568:4;31564:20;31560:1;31549:9;31545:17;31538:47;31602:131;31728:4;31602:131;:::i;:::-;31594:139;;31321:419;;;:::o;31746:::-;31912:4;31950:2;31939:9;31935:18;31927:26;;31999:9;31993:4;31989:20;31985:1;31974:9;31970:17;31963:47;32027:131;32153:4;32027:131;:::i;:::-;32019:139;;31746:419;;;:::o;32171:222::-;32264:4;32302:2;32291:9;32287:18;32279:26;;32315:71;32383:1;32372:9;32368:17;32359:6;32315:71;:::i;:::-;32171:222;;;;:::o;32399:129::-;32433:6;32460:20;;:::i;:::-;32450:30;;32489:33;32517:4;32509:6;32489:33;:::i;:::-;32399:129;;;:::o;32534:75::-;32567:6;32600:2;32594:9;32584:19;;32534:75;:::o;32615:307::-;32676:4;32766:18;32758:6;32755:30;32752:56;;;32788:18;;:::i;:::-;32752:56;32826:29;32848:6;32826:29;:::i;:::-;32818:37;;32910:4;32904;32900:15;32892:23;;32615:307;;;:::o;32928:308::-;32990:4;33080:18;33072:6;33069:30;33066:56;;;33102:18;;:::i;:::-;33066:56;33140:29;33162:6;33140:29;:::i;:::-;33132:37;;33224:4;33218;33214:15;33206:23;;32928:308;;;:::o;33242:132::-;33309:4;33332:3;33324:11;;33362:4;33357:3;33353:14;33345:22;;33242:132;;;:::o;33380:114::-;33447:6;33481:5;33475:12;33465:22;;33380:114;;;:::o;33500:98::-;33551:6;33585:5;33579:12;33569:22;;33500:98;;;:::o;33604:99::-;33656:6;33690:5;33684:12;33674:22;;33604:99;;;:::o;33709:113::-;33779:4;33811;33806:3;33802:14;33794:22;;33709:113;;;:::o;33828:184::-;33927:11;33961:6;33956:3;33949:19;34001:4;33996:3;33992:14;33977:29;;33828:184;;;;:::o;34018:168::-;34101:11;34135:6;34130:3;34123:19;34175:4;34170:3;34166:14;34151:29;;34018:168;;;;:::o;34192:169::-;34276:11;34310:6;34305:3;34298:19;34350:4;34345:3;34341:14;34326:29;;34192:169;;;;:::o;34367:148::-;34469:11;34506:3;34491:18;;34367:148;;;;:::o;34521:305::-;34561:3;34580:20;34598:1;34580:20;:::i;:::-;34575:25;;34614:20;34632:1;34614:20;:::i;:::-;34609:25;;34768:1;34700:66;34696:74;34693:1;34690:81;34687:107;;;34774:18;;:::i;:::-;34687:107;34818:1;34815;34811:9;34804:16;;34521:305;;;;:::o;34832:185::-;34872:1;34889:20;34907:1;34889:20;:::i;:::-;34884:25;;34923:20;34941:1;34923:20;:::i;:::-;34918:25;;34962:1;34952:35;;34967:18;;:::i;:::-;34952:35;35009:1;35006;35002:9;34997:14;;34832:185;;;;:::o;35023:348::-;35063:7;35086:20;35104:1;35086:20;:::i;:::-;35081:25;;35120:20;35138:1;35120:20;:::i;:::-;35115:25;;35308:1;35240:66;35236:74;35233:1;35230:81;35225:1;35218:9;35211:17;35207:105;35204:131;;;35315:18;;:::i;:::-;35204:131;35363:1;35360;35356:9;35345:20;;35023:348;;;;:::o;35377:191::-;35417:4;35437:20;35455:1;35437:20;:::i;:::-;35432:25;;35471:20;35489:1;35471:20;:::i;:::-;35466:25;;35510:1;35507;35504:8;35501:34;;;35515:18;;:::i;:::-;35501:34;35560:1;35557;35553:9;35545:17;;35377:191;;;;:::o;35574:96::-;35611:7;35640:24;35658:5;35640:24;:::i;:::-;35629:35;;35574:96;;;:::o;35676:90::-;35710:7;35753:5;35746:13;35739:21;35728:32;;35676:90;;;:::o;35772:149::-;35808:7;35848:66;35841:5;35837:78;35826:89;;35772:149;;;:::o;35927:126::-;35964:7;36004:42;35997:5;35993:54;35982:65;;35927:126;;;:::o;36059:77::-;36096:7;36125:5;36114:16;;36059:77;;;:::o;36142:154::-;36226:6;36221:3;36216;36203:30;36288:1;36279:6;36274:3;36270:16;36263:27;36142:154;;;:::o;36302:307::-;36370:1;36380:113;36394:6;36391:1;36388:13;36380:113;;;36479:1;36474:3;36470:11;36464:18;36460:1;36455:3;36451:11;36444:39;36416:2;36413:1;36409:10;36404:15;;36380:113;;;36511:6;36508:1;36505:13;36502:101;;;36591:1;36582:6;36577:3;36573:16;36566:27;36502:101;36351:258;36302:307;;;:::o;36615:320::-;36659:6;36696:1;36690:4;36686:12;36676:22;;36743:1;36737:4;36733:12;36764:18;36754:81;;36820:4;36812:6;36808:17;36798:27;;36754:81;36882:2;36874:6;36871:14;36851:18;36848:38;36845:84;;;36901:18;;:::i;:::-;36845:84;36666:269;36615:320;;;:::o;36941:281::-;37024:27;37046:4;37024:27;:::i;:::-;37016:6;37012:40;37154:6;37142:10;37139:22;37118:18;37106:10;37103:34;37100:62;37097:88;;;37165:18;;:::i;:::-;37097:88;37205:10;37201:2;37194:22;36984:238;36941:281;;:::o;37228:233::-;37267:3;37290:24;37308:5;37290:24;:::i;:::-;37281:33;;37336:66;37329:5;37326:77;37323:103;;;37406:18;;:::i;:::-;37323:103;37453:1;37446:5;37442:13;37435:20;;37228:233;;;:::o;37467:176::-;37499:1;37516:20;37534:1;37516:20;:::i;:::-;37511:25;;37550:20;37568:1;37550:20;:::i;:::-;37545:25;;37589:1;37579:35;;37594:18;;:::i;:::-;37579:35;37635:1;37632;37628:9;37623:14;;37467:176;;;;:::o;37649:180::-;37697:77;37694:1;37687:88;37794:4;37791:1;37784:15;37818:4;37815:1;37808:15;37835:180;37883:77;37880:1;37873:88;37980:4;37977:1;37970:15;38004:4;38001:1;37994:15;38021:180;38069:77;38066:1;38059:88;38166:4;38163:1;38156:15;38190:4;38187:1;38180:15;38207:180;38255:77;38252:1;38245:88;38352:4;38349:1;38342:15;38376:4;38373:1;38366:15;38393:180;38441:77;38438:1;38431:88;38538:4;38535:1;38528:15;38562:4;38559:1;38552:15;38579:180;38627:77;38624:1;38617:88;38724:4;38721:1;38714:15;38748:4;38745:1;38738:15;38765:117;38874:1;38871;38864:12;38888:117;38997:1;38994;38987:12;39011:117;39120:1;39117;39110:12;39134:117;39243:1;39240;39233:12;39257:102;39298:6;39349:2;39345:7;39340:2;39333:5;39329:14;39325:28;39315:38;;39257:102;;;:::o;39365:153::-;39505:5;39501:1;39493:6;39489:14;39482:29;39365:153;:::o;39524:::-;39664:5;39660:1;39652:6;39648:14;39641:29;39524:153;:::o;39683:::-;39823:5;39819:1;39811:6;39807:14;39800:29;39683:153;:::o;39842:230::-;39982:34;39978:1;39970:6;39966:14;39959:58;40051:13;40046:2;40038:6;40034:15;40027:38;39842:230;:::o;40078:165::-;40218:17;40214:1;40206:6;40202:14;40195:41;40078:165;:::o;40249:153::-;40389:5;40385:1;40377:6;40373:14;40366:29;40249:153;:::o;40408:::-;40548:5;40544:1;40536:6;40532:14;40525:29;40408:153;:::o;40567:::-;40707:5;40703:1;40695:6;40691:14;40684:29;40567:153;:::o;40726:::-;40866:5;40862:1;40854:6;40850:14;40843:29;40726:153;:::o;40885:::-;41025:5;41021:1;41013:6;41009:14;41002:29;40885:153;:::o;41044:::-;41184:5;41180:1;41172:6;41168:14;41161:29;41044:153;:::o;41203:::-;41343:5;41339:1;41331:6;41327:14;41320:29;41203:153;:::o;41362:::-;41502:5;41498:1;41490:6;41486:14;41479:29;41362:153;:::o;41521:::-;41661:5;41657:1;41649:6;41645:14;41638:29;41521:153;:::o;41680:163::-;41820:15;41816:1;41808:6;41804:14;41797:39;41680:163;:::o;41849:153::-;41989:5;41985:1;41977:6;41973:14;41966:29;41849:153;:::o;42008:160::-;42148:12;42144:1;42136:6;42132:14;42125:36;42008:160;:::o;42174:153::-;42314:5;42310:1;42302:6;42298:14;42291:29;42174:153;:::o;42333:::-;42473:5;42469:1;42461:6;42457:14;42450:29;42333:153;:::o;42492:::-;42632:5;42628:1;42620:6;42616:14;42609:29;42492:153;:::o;42651:167::-;42791:19;42787:1;42779:6;42775:14;42768:43;42651:167;:::o;42824:231::-;42964:34;42960:1;42952:6;42948:14;42941:58;43033:14;43028:2;43020:6;43016:15;43009:39;42824:231;:::o;43061:153::-;43201:5;43197:1;43189:6;43185:14;43178:29;43061:153;:::o;43220:::-;43360:5;43356:1;43348:6;43344:14;43337:29;43220:153;:::o;43379:::-;43519:5;43515:1;43507:6;43503:14;43496:29;43379:153;:::o;43538:122::-;43611:24;43629:5;43611:24;:::i;:::-;43604:5;43601:35;43591:63;;43650:1;43647;43640:12;43591:63;43538:122;:::o;43666:116::-;43736:21;43751:5;43736:21;:::i;:::-;43729:5;43726:32;43716:60;;43772:1;43769;43762:12;43716:60;43666:116;:::o;43788:120::-;43860:23;43877:5;43860:23;:::i;:::-;43853:5;43850:34;43840:62;;43898:1;43895;43888:12;43840:62;43788:120;:::o;43914:122::-;43987:24;44005:5;43987:24;:::i;:::-;43980:5;43977:35;43967:63;;44026:1;44023;44016:12;43967:63;43914:122;:::o

Swarm Source

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